libnet-functions.h   libnet-functions.h 
skipping to change at line 232 skipping to change at line 232
* name * name
* @param use_name LIBNET_RESOLVE or LIBNET_DONT_RESOLVE * @param use_name LIBNET_RESOLVE or LIBNET_DONT_RESOLVE
* @return network byte ordered IPv4 address or -1 (2^32 - 1) on error * @return network byte ordered IPv4 address or -1 (2^32 - 1) on error
*/ */
uint32_t uint32_t
libnet_name2addr4(libnet_t *l, char *host_name, uint8_t use_name); libnet_name2addr4(libnet_t *l, char *host_name, uint8_t use_name);
extern const struct libnet_in6_addr in6addr_error; extern const struct libnet_in6_addr in6addr_error;
/** /**
* Check a libnet_in6_addr structure for identity with in6addr_error.
* @param addr address to check
* @return 1 if addr is in6addr_error, 0 if it is not
*/
int
libnet_in6_is_error(struct libnet_in6_addr addr);
/**
* Takes a dotted decimal string or a canonical DNS name and returns a * Takes a dotted decimal string or a canonical DNS name and returns a
* network byte ordered IPv6 address. This may incur a DNS lookup if mode i s * network byte ordered IPv6 address. This may incur a DNS lookup if mode i s
* set to LIBNET_RESOLVE and host_name refers to a canonical DNS name. If m ode * set to LIBNET_RESOLVE and host_name refers to a canonical DNS name. If m ode
* is set to LIBNET_DONT_RESOLVE no DNS lookup will occur. The function can * is set to LIBNET_DONT_RESOLVE no DNS lookup will occur. The function can
* fail if DNS lookup fails or if mode is set to LIBNET_DONT_RESOLVE and * fail if DNS lookup fails or if mode is set to LIBNET_DONT_RESOLVE and
* host_name refers to a canonical DNS name. * host_name refers to a canonical DNS name.
* @param l pointer to a libnet context * @param l pointer to a libnet context
* @param host_name pointer to a string containing a presentation format ho st * @param host_name pointer to a string containing a presentation format ho st
* name * name
* @param use_name LIBNET_RESOLVE or LIBNET_DONT_RESOLVE * @param use_name LIBNET_RESOLVE or LIBNET_DONT_RESOLVE
* @return network byte ordered IPv6 address structure * @return network byte ordered IPv6 address structure
*/ */
struct libnet_in6_addr struct libnet_in6_addr
libnet_name2addr6(libnet_t *l, char *host_name, uint8_t use_name); libnet_name2addr6(libnet_t *l, const char *host_name, uint8_t use_name);
/** /**
* Should document this baby right here. * Should document this baby right here.
*/ */
void void
libnet_addr2name6_r(struct libnet_in6_addr addr, uint8_t use_name, libnet_addr2name6_r(struct libnet_in6_addr addr, uint8_t use_name,
char *host_name, int host_name_len); char *host_name, int host_name_len);
/** /**
* Creates a new port list. Port list chains are useful for TCP and UDP-bas ed * Creates a new port list. Port list chains are useful for TCP and UDP-bas ed
skipping to change at line 782 skipping to change at line 790
* @param ptag protocol tag to modify an existing header, 0 to build a new one * @param ptag protocol tag to modify an existing header, 0 to build a new one
* @return protocol tag value on success, -1 on error * @return protocol tag value on success, -1 on error
*/ */
libnet_ptag_t libnet_ptag_t
libnet_build_icmpv4_timestamp(uint8_t type, uint8_t code, uint16_t sum, libnet_build_icmpv4_timestamp(uint8_t type, uint8_t code, uint16_t sum,
uint16_t id, uint16_t seq, uint32_t otime, uint32_t rtime, uint32_t ttime, uint16_t id, uint16_t seq, uint32_t otime, uint32_t rtime, uint32_t ttime,
const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag ); const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag );
/** /**
* Builds an IP version 6 RFC 4443 Internet Control Message Protocol (ICMP) * Builds an IP version 6 RFC 4443 Internet Control Message Protocol (ICMP)
* echo or echo reply header.
* @param type type of ICMP packet (should be ICMP6_ECHO_REQUEST or ICMP6_E
CHO_REPLY)
* @param code code of ICMP packet (should be zero)
* @param sum checksum (0 for libnet to autofill)
* @param id echo id number
* @param seq echo sequence number
* @param payload optional payload or NULL
* @param payload_s payload length or 0
* @param l pointer to a libnet context
* @param ptag protocol tag to modify an existing header, 0 to build a new
one
* @return protocol tag value on success, -1 on error
*/
libnet_ptag_t libnet_build_icmpv6_echo(uint8_t type, uint8_t code, uint16_t
sum, uint16_t id, uint16_t seq, uint8_t *payload, uint32_t payload_
s,
libnet_t *l, libnet_ptag_t ptag);
/**
* Builds an IP version 6 RFC 4443 Internet Control Message Protocol (ICMP)
* unreachable header. The IP header that caused the error message should b e * unreachable header. The IP header that caused the error message should b e
* built by a previous call to libnet_build_ipv6(). * built by a previous call to libnet_build_ipv6().
* @param type type of ICMP packet (should be ICMP6_UNREACH) * @param type type of ICMP packet (should be ICMP6_DST_UNREACH)
* @param code code of ICMP packet (should be one of the 5 unreachable code * @param code code of ICMP packet (should be one of the 5 ICMP6_DST_UNREAC
s) H_* codes)
* @param sum checksum (0 for libnet to autofill) * @param sum checksum (0 for libnet to autofill)
* @param payload optional payload or NULL * @param payload optional payload or NULL
* @param payload_s payload length or 0 * @param payload_s payload length or 0
* @param l pointer to a libnet context * @param l pointer to a libnet context
* @param ptag protocol tag to modify an existing header, 0 to build a new one * @param ptag protocol tag to modify an existing header, 0 to build a new one
* @return protocol tag value on success, -1 on error * @return protocol tag value on success, -1 on error
*/ */
libnet_ptag_t libnet_ptag_t
libnet_build_icmpv6_unreach(u_int8_t type, u_int8_t code, u_int16_t sum, libnet_build_icmpv6_unreach(uint8_t type, uint8_t code, uint16_t sum,
u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag); uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
/**
* Builds an IP version 6 RFC 2461 Internet Control Message Protocol (ICMP)
* NDP neighbour solicitation header. Could be used with
* libnet_build_icmpv6_ndp_opt() and ICMPV6_NDP_OPT_SLLA.
* @param type type of ICMP packet (should be ND_NEIGHBOR_SOLICIT)
* @param code code of ICMP packet (should be zero)
* @param sum checksum (0 for libnet to autofill)
* @param target target ipv6 address
* @param payload optional payload or NULL
* @param payload_s payload length or 0
* @param l pointer to a libnet context
* @param ptag protocol tag to modify an existing header, 0 to build a new
one
* @return protocol tag value on success, -1 on error
*/
libnet_ptag_t libnet_build_icmpv6_ndp_nsol(uint8_t type, uint8_t code,
uint16_t sum, struct libnet_in6_addr target, uint8_t *payload, uint
32_t
payload_s, libnet_t* l, libnet_ptag_t ptag);
/**
* Builds an IP version 6 RFC 2461 Internet Control Message Protocol (ICMP)
* NDP neighbour advertisement header. Could be used with
* libnet_build_icmpv6_ndp_opt() and ND_OPT_TARGET_LINKADDR.
* @param type type of ICMP packet (should be ND_NEIGHBOR_ADVERT)
* @param code code of ICMP packet (should be zero)
* @param sum checksum (0 for libnet to autofill)
* @param flags should be a bitwise or of any applicable ND_NA_FLAG_* flags
* @param target target ipv6 address
* @param payload optional payload or NULL
* @param payload_s payload length or 0
* @param l pointer to a libnet context
* @param ptag protocol tag to modify an existing header, 0 to build a new
one
* @return protocol tag value on success, -1 on error
*/
libnet_ptag_t libnet_build_icmpv6_ndp_nadv(uint8_t type, uint8_t code,
uint16_t sum, uint32_t flags, struct libnet_in6_addr target, uint8_
t
*payload, uint32_t payload_s, libnet_t* l, libnet_ptag_t ptag);
/**
* Builds ICMPv6 NDP options.
* @param type one of ND_OPT_* types
* @param option option data
* @param option_s size of option data (will be padded out to an 8-byte bou
ndary)
* @param l pointer to a libnet context
* @param ptag protocol tag to modify an existing header, 0 to build a new
one
* @return protocol tag value on success, -1 on error
*/
libnet_ptag_t libnet_build_icmpv6_ndp_opt(uint8_t type, uint8_t* option,
uint32_t option_s, libnet_t* l, libnet_ptag_t ptag);
/** /**
* Builds an RFC 1112 Internet Group Memebership Protocol (IGMP) header. * Builds an RFC 1112 Internet Group Memebership Protocol (IGMP) header.
* @param type packet type * @param type packet type
* @param code packet code (should be 0) * @param reserved (should be 0 for IGMPv1)
* @param sum checksum (0 for libnet to autofill) * @param sum checksum (0 for libnet to autofill)
* @param ip IPv4 address * @param ip IPv4 address (in standard/network byte order)
* @param payload optional payload or NULL * @param payload optional payload or NULL
* @param payload_s payload length or 0 * @param payload_s payload length or 0
* @param l pointer to a libnet context * @param l pointer to a libnet context
* @param ptag protocol tag to modify an existing header, 0 to build a new one * @param ptag protocol tag to modify an existing header, 0 to build a new one
* @return protocol tag value on success, -1 on error * @return protocol tag value on success, -1 on error
*
* @note 'reserved' was previously called 'code', which it is not, in any I
GMP version.
*/ */
libnet_ptag_t libnet_ptag_t
libnet_build_igmp(uint8_t type, uint8_t code, uint16_t sum, uint32_t ip, libnet_build_igmp(uint8_t type, uint8_t reserved, uint16_t sum, uint32_t ip ,
const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag ); const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag );
/** /**
* Builds a version 4 RFC 791 Internet Protocol (IP) header. * Builds a version 4 RFC 791 Internet Protocol (IP) header.
* *
* @param ip_len total length of the IP packet including all subsequent dat a (subsequent * @param ip_len total length of the IP packet including all subsequent dat a (subsequent
* data includes any IP options and IP options padding) * data includes any IP options and IP options padding)
* @param tos type of service bits * @param tos type of service bits
* @param id IP identification number * @param id IP identification number
* @param frag fragmentation bits and offset * @param frag fragmentation bits and offset
skipping to change at line 970 skipping to change at line 1047
* @param payload_s payload length * @param payload_s payload length
* @param l pointer to a libnet context * @param l pointer to a libnet context
* @param ptag protocol tag to modify an existing header, 0 to build a new one * @param ptag protocol tag to modify an existing header, 0 to build a new one
* @return protocol tag value on success, -1 on error * @return protocol tag value on success, -1 on error
*/ */
libnet_ptag_t libnet_ptag_t
libnet_build_ipv6_hbhopts(uint8_t nh, uint8_t len, const uint8_t* payload, libnet_build_ipv6_hbhopts(uint8_t nh, uint8_t len, const uint8_t* payload,
uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
/** /**
* This function is not yet implement and is a NOOP. * Autobuilds a version 6 RFC 2460 Internet Protocol (IP) header. The funct
ion
* is useful to build an IP header quickly when you do not need a granular
* level of control. The function takes the same len, nh, and dst arguments
* as libnet_build_ipv4(). The function does not accept a ptag argument, bu
t it
* does return a ptag. In other words, you can use it to build a new IP hea
der
* but not to modify an existing one.
* This function requires libnet_get_ipaddr6(), which is not yet implemente
d
* for Win32 platforms.
* @param len length * @param len length
* @param nh next header * @param nh next header
* @param dst destination IPv6 address * @param dst destination IPv6 address
* @param l pointer to a libnet context * @param l pointer to a libnet context
* @param ptag protocol tag to modify an existing header, 0 to build a new one * @param ptag protocol tag to modify an existing header, 0 to build a new one
* @return protocol tag value on success, -1 on error * @return protocol tag value on success, -1 on error
*/ */
libnet_ptag_t libnet_ptag_t
libnet_autobuild_ipv6(uint16_t len, uint8_t nh, struct libnet_in6_addr dst, libnet_autobuild_ipv6(uint16_t len, uint8_t nh, struct libnet_in6_addr dst,
libnet_t *l, libnet_ptag_t ptag); libnet_t *l, libnet_ptag_t ptag);
skipping to change at line 1479 skipping to change at line 1563
* @param htype * @param htype
* @param hlen * @param hlen
* @param hopcount * @param hopcount
* @param xid * @param xid
* @param secs * @param secs
* @param flags * @param flags
* @param cip * @param cip
* @param yip * @param yip
* @param sip * @param sip
* @param gip * @param gip
* @param chaddr * @param chaddr client hardware address, length is hlen
* @param sname * @param sname server host name, a null terminated string
* @param file * @param file boot file name, a null terminated string
* @param payload optional payload or NULL * @param payload optional payload or NULL
* @param payload_s payload length or 0 * @param payload_s payload length or 0
* @param l pointer to a libnet context * @param l pointer to a libnet context
* @param ptag protocol tag to modify an existing header, 0 to build a new one * @param ptag protocol tag to modify an existing header, 0 to build a new one
* @return protocol tag value on success, -1 on error * @return protocol tag value on success, -1 on error
*/ */
libnet_ptag_t libnet_ptag_t
libnet_build_dhcpv4(uint8_t opcode, uint8_t htype, uint8_t hlen, libnet_build_dhcpv4(uint8_t opcode, uint8_t htype, uint8_t hlen,
uint8_t hopcount, uint32_t xid, uint16_t secs, uint16_t flags, uint8_t hopcount, uint32_t xid, uint16_t secs, uint16_t flags,
uint32_t cip, uint32_t yip, uint32_t sip, uint32_t gip, const uint8_t *cha ddr, uint32_t cip, uint32_t yip, uint32_t sip, uint32_t gip, const uint8_t *cha ddr,
uint8_t *sname, const uint8_t *file, const uint8_t* payload, uint32_t paylo ad_s, const char *sname, const char *file, const uint8_t* payload, uint32_t paylo ad_s,
libnet_t *l, libnet_ptag_t ptag); libnet_t *l, libnet_ptag_t ptag);
/** /**
* @param opcode * @param opcode
* @param htype * @param htype
* @param hlen * @param hlen
* @param hopcount * @param hopcount
* @param xid * @param xid
* @param secs * @param secs
* @param flags * @param flags
* @param cip * @param cip
* @param yip * @param yip
* @param sip * @param sip
* @param gip * @param gip
* @param chaddr * @param chaddr client hardware address, length is hlen
* @param sname * @param sname server host name, a null terminated string
* @param file * @param file boot file name, a null terminated string
* @param payload optional payload or NULL * @param payload optional payload or NULL
* @param payload_s payload length or 0 * @param payload_s payload length or 0
* @param l pointer to a libnet context * @param l pointer to a libnet context
* @param ptag protocol tag to modify an existing header, 0 to build a new one * @param ptag protocol tag to modify an existing header, 0 to build a new one
* @return protocol tag value on success, -1 on error * @return protocol tag value on success, -1 on error
*/ */
libnet_ptag_t libnet_ptag_t
libnet_build_bootpv4(uint8_t opcode, uint8_t htype, uint8_t hlen, libnet_build_bootpv4(uint8_t opcode, uint8_t htype, uint8_t hlen,
uint8_t hopcount, uint32_t xid, uint16_t secs, uint16_t flags, uint8_t hopcount, uint32_t xid, uint16_t secs, uint16_t flags,
uint32_t cip, uint32_t yip, uint32_t sip, uint32_t gip, const uint8_t *cha ddr, uint32_t cip, uint32_t yip, uint32_t sip, uint32_t gip, const uint8_t *cha ddr,
uint8_t *sname, const uint8_t *file, const uint8_t* payload, uint32_t paylo ad_s, const char *sname, const char *file, const uint8_t* payload, uint32_t paylo ad_s,
libnet_t *l, libnet_ptag_t ptag); libnet_t *l, libnet_ptag_t ptag);
/** /**
* @param fv see libnet_build_gre(). * @param fv see libnet_build_gre().
* @return size, see libnet_build_gre(). * @return size, see libnet_build_gre().
*/ */
uint32_t uint32_t
libnet_getgre_length(uint16_t fv); libnet_getgre_length(uint16_t fv);
/** /**
skipping to change at line 1803 skipping to change at line 1887
* will attempt to find one. If the function fails and returns -1 a call to * will attempt to find one. If the function fails and returns -1 a call to
* libnet_geterrror() will tell you why. * libnet_geterrror() will tell you why.
* @param l pointer to a libnet context * @param l pointer to a libnet context
* @return a big endian IP address suitable for use in a libnet_build funct ion or -1 * @return a big endian IP address suitable for use in a libnet_build funct ion or -1
*/ */
uint32_t uint32_t
libnet_get_ipaddr4(libnet_t *l); libnet_get_ipaddr4(libnet_t *l);
/** /**
* This function is not yet implemented under IPv6. * Returns the IPv6 address for the device libnet was initialized with. If
* libnet was initialized without a device (in raw socket mode) the functio
n
* will attempt to find one. If the function fails and returns in6addr_erro
r, a
* call to libnet_geterrror() will tell you why.
* This function is not yet implemented for Win32 platforms.
* @param l pointer to a libnet context * @param l pointer to a libnet context
* @return well, nothing yet * @return well, nothing yet
*/ */
struct libnet_in6_addr struct libnet_in6_addr
libnet_get_ipaddr6(libnet_t *l); libnet_get_ipaddr6(libnet_t *l);
/** /**
* Returns the MAC address for the device libnet was initialized with. If * Returns the MAC address for the device libnet was initialized with. If
* libnet was initialized without a device the function will attempt to fin d * libnet was initialized without a device the function will attempt to fin d
* one. If the function fails and returns NULL a call to libnet_geterror() will * one. If the function fails and returns NULL a call to libnet_geterror() will
skipping to change at line 2258 skipping to change at line 2346
* Function locates a given block by it's ptag. * Function locates a given block by it's ptag.
*/ */
libnet_pblock_t * libnet_pblock_t *
libnet_pblock_find(libnet_t *l, libnet_ptag_t ptag); libnet_pblock_find(libnet_t *l, libnet_ptag_t ptag);
/* /*
* [Internal] * [Internal]
* Function copies protocol block data over. * Function copies protocol block data over.
*/ */
int int
libnet_pblock_append(libnet_t *l, libnet_pblock_t *p, const uint8_t *buf, libnet_pblock_append(libnet_t *l, libnet_pblock_t *p, const void *buf, uint
uint32_t len); 32_t len);
/* /*
* [Internal] * [Internal]
* Function sets pblock flags. * Function sets pblock flags.
*/ */
void void
libnet_pblock_setflags(libnet_pblock_t *p, uint8_t flags); libnet_pblock_setflags(libnet_pblock_t *p, uint8_t flags);
/* /*
* [Internal] * [Internal]
 End of changes. 16 change blocks. 
21 lines changed or deleted 125 lines changed or added


 libnet-headers.h   libnet-headers.h 
skipping to change at line 66 skipping to change at line 66
#define LIBNET_TCP_DNSV4_H 0x0e /**< TCP DNS v4 header: 14 bytes */ #define LIBNET_TCP_DNSV4_H 0x0e /**< TCP DNS v4 header: 14 bytes */
#define LIBNET_ETH_H 0x0e /**< Ethernet header: 14 bytes */ #define LIBNET_ETH_H 0x0e /**< Ethernet header: 14 bytes */
#define LIBNET_FDDI_H 0x15 /**< FDDI header: 21 bytes */ #define LIBNET_FDDI_H 0x15 /**< FDDI header: 21 bytes */
#define LIBNET_ICMPV4_H 0x04 /**< ICMP header base: 4 bytes */ #define LIBNET_ICMPV4_H 0x04 /**< ICMP header base: 4 bytes */
#define LIBNET_ICMPV4_ECHO_H 0x08 /**< ICMP_ECHO header: 8 bytes */ #define LIBNET_ICMPV4_ECHO_H 0x08 /**< ICMP_ECHO header: 8 bytes */
#define LIBNET_ICMPV4_MASK_H 0x0c /**< ICMP_MASK header: 12 bytes */ #define LIBNET_ICMPV4_MASK_H 0x0c /**< ICMP_MASK header: 12 bytes */
#define LIBNET_ICMPV4_UNREACH_H 0x08 /**< ICMP_UNREACH header: 8 bytes */ #define LIBNET_ICMPV4_UNREACH_H 0x08 /**< ICMP_UNREACH header: 8 bytes */
#define LIBNET_ICMPV4_TIMXCEED_H 0x08 /**< ICMP_TIMXCEED header: 8 bytes */ #define LIBNET_ICMPV4_TIMXCEED_H 0x08 /**< ICMP_TIMXCEED header: 8 bytes */
#define LIBNET_ICMPV4_REDIRECT_H 0x08 /**< ICMP_REDIRECT header: 8 bytes */ #define LIBNET_ICMPV4_REDIRECT_H 0x08 /**< ICMP_REDIRECT header: 8 bytes */
#define LIBNET_ICMPV4_TS_H 0x14 /**< ICMP_TIMESTAMP headr:20 bytes */ #define LIBNET_ICMPV4_TS_H 0x14 /**< ICMP_TIMESTAMP headr:20 bytes */
#define LIBNET_ICMPV6_H 0x08 /**< ICMP6 header base: 8 bytes #define LIBNET_ICMPV6_COMMON_H 0x04 /**< ICMP6 header base: 4 bytes
*/ */
#define LIBNET_ICMPV6_H 0x08 /**< ICMP6 header base: 8 bytes
(unused, for backwards compatibility) */
#define LIBNET_ICMPV6_UNREACH_H 0x08 /**< ICMP6 unreach base: 8 bytes */ #define LIBNET_ICMPV6_UNREACH_H 0x08 /**< ICMP6 unreach base: 8 bytes */
#define LIBNET_ICMPV6_ECHO_H 0x08 /**< ICMP6 echo: 8 bytes
*/
#define LIBNET_ICMPV6_NDP_NSOL_H 24 /**< ICMP6 NDP NSOL: 24 bytes
*/
#define LIBNET_ICMPV6_NDP_NADV_H 24 /**< ICMP6 NDP NADV: 24 bytes
*/
#define LIBNET_ICMPV6_NDP_OPT_H 0x02 /**< ICMP6 NDP OPT base: 2 bytes
*/
#define LIBNET_IGMP_H 0x08 /**< IGMP header: 8 bytes */ #define LIBNET_IGMP_H 0x08 /**< IGMP header: 8 bytes */
#define LIBNET_IPV4_H 0x14 /**< IPv4 header: 20 bytes */ #define LIBNET_IPV4_H 0x14 /**< IPv4 header: 20 bytes */
#define LIBNET_IPV6_H 0x28 /**< IPv6 header: 40 bytes */ #define LIBNET_IPV6_H 0x28 /**< IPv6 header: 40 bytes */
#define LIBNET_IPV6_FRAG_H 0x08 /**< IPv6 frag header: 8 bytes */ #define LIBNET_IPV6_FRAG_H 0x08 /**< IPv6 frag header: 8 bytes */
#define LIBNET_IPV6_ROUTING_H 0x04 /**< IPv6 frag header base:4 bytes */ #define LIBNET_IPV6_ROUTING_H 0x04 /**< IPv6 frag header base:4 bytes */
#define LIBNET_IPV6_DESTOPTS_H 0x02 /**< IPv6 dest opts base: 2 bytes */ #define LIBNET_IPV6_DESTOPTS_H 0x02 /**< IPv6 dest opts base: 2 bytes */
#define LIBNET_IPV6_HBHOPTS_H 0x02 /**< IPv6 hop/hop opt base:2 bytes */ #define LIBNET_IPV6_HBHOPTS_H 0x02 /**< IPv6 hop/hop opt base:2 bytes */
#define LIBNET_IPSEC_ESP_HDR_H 0x0c /**< IPSEC ESP header: 12 bytes */ #define LIBNET_IPSEC_ESP_HDR_H 0x0c /**< IPSEC ESP header: 12 bytes */
#define LIBNET_IPSEC_ESP_FTR_H 0x02 /**< IPSEC ESP footer: 2 bytes */ #define LIBNET_IPSEC_ESP_FTR_H 0x02 /**< IPSEC ESP footer: 2 bytes */
#define LIBNET_IPSEC_AH_H 0x10 /**< IPSEC AH header: 16 bytes */ #define LIBNET_IPSEC_AH_H 0x10 /**< IPSEC AH header: 16 bytes */
skipping to change at line 333 skipping to change at line 338
#define LIBNET_CDP_CAP_L2SRB 0x04/* performs level 2 sourceroute bridging * / #define LIBNET_CDP_CAP_L2SRB 0x04/* performs level 2 sourceroute bridging * /
#define LIBNET_CDP_CAP_L2S 0x08/* performs level 2 switching */ #define LIBNET_CDP_CAP_L2S 0x08/* performs level 2 switching */
#define LIBNET_CDP_CAP_SR 0x10/* sends and recieves packets on a network */ #define LIBNET_CDP_CAP_SR 0x10/* sends and recieves packets on a network */
#define LIBNET_CDP_CAP_NOI 0x20/* does not forward IGMP on non-router port s */ #define LIBNET_CDP_CAP_NOI 0x20/* does not forward IGMP on non-router port s */
#define LIBNET_CDP_CAP_L1F 0x40/* provides level 1 functionality */ #define LIBNET_CDP_CAP_L1F 0x40/* provides level 1 functionality */
}; };
/* /*
* Used as an overlay for type/len/values * Used as an overlay for type/len/values
*/ */
#define LIBNET_CDP_VALUE_H 0x04 /*< CDP value header base: 4 bytes */
struct libnet_cdp_value_hdr struct libnet_cdp_value_hdr
{ {
uint16_t cdp_type; uint16_t cdp_type;
uint16_t cdp_len; uint16_t cdp_len;
}; };
/* /*
* DHCP header * DHCP header
* Dynamic Host Configuration Protocol * Dynamic Host Configuration Protocol
* Static header size: f0 bytes * Static header size: f0 bytes
skipping to change at line 359 skipping to change at line 365
uint8_t dhcp_htype; /* hardware address type */ uint8_t dhcp_htype; /* hardware address type */
uint8_t dhcp_hlen; /* hardware address length */ uint8_t dhcp_hlen; /* hardware address length */
uint8_t dhcp_hopcount; /* used by proxy servers */ uint8_t dhcp_hopcount; /* used by proxy servers */
uint32_t dhcp_xid; /* transaction ID */ uint32_t dhcp_xid; /* transaction ID */
uint16_t dhcp_secs; /* number of seconds since trying to bootstrap */ uint16_t dhcp_secs; /* number of seconds since trying to bootstrap */
uint16_t dhcp_flags; /* flags for DHCP, unused for BOOTP */ uint16_t dhcp_flags; /* flags for DHCP, unused for BOOTP */
uint32_t dhcp_cip; /* client's IP */ uint32_t dhcp_cip; /* client's IP */
uint32_t dhcp_yip; /* your IP */ uint32_t dhcp_yip; /* your IP */
uint32_t dhcp_sip; /* server's IP */ uint32_t dhcp_sip; /* server's IP */
uint32_t dhcp_gip; /* gateway IP */ uint32_t dhcp_gip; /* gateway IP */
uint8_t dhcp_chaddr[16]; /* client hardware address */ uint8_t dhcp_chaddr[16]; /* client hardware address, len is dhcp_hlen *
uint8_t dhcp_sname[64]; /* server host name */ /
uint8_t dhcp_file[128]; /* boot file name */ char dhcp_sname[64]; /* server host name, null terminated string */
char dhcp_file[128]; /* boot file name, null terminated string */
uint32_t dhcp_magic; /* BOOTP magic header */ uint32_t dhcp_magic; /* BOOTP magic header */
#define DHCP_MAGIC 0x63825363 #define DHCP_MAGIC 0x63825363
#define LIBNET_BOOTP_MIN_LEN 0x12c #define LIBNET_BOOTP_MIN_LEN 0x12c
#define LIBNET_DHCP_PAD 0x00 #define LIBNET_DHCP_PAD 0x00
#define LIBNET_DHCP_SUBNETMASK 0x01 #define LIBNET_DHCP_SUBNETMASK 0x01
#define LIBNET_DHCP_TIMEOFFSET 0x02 #define LIBNET_DHCP_TIMEOFFSET 0x02
#define LIBNET_DHCP_ROUTER 0x03 #define LIBNET_DHCP_ROUTER 0x03
#define LIBNET_DHCP_TIMESERVER 0x04 #define LIBNET_DHCP_TIMESERVER 0x04
#define LIBNET_DHCP_NAMESERVER 0x05 #define LIBNET_DHCP_NAMESERVER 0x05
#define LIBNET_DHCP_DNS 0x06 #define LIBNET_DHCP_DNS 0x06
skipping to change at line 496 skipping to change at line 502
uint8_t ether_shost[ETHER_ADDR_LEN];/* source ethernet address */ uint8_t ether_shost[ETHER_ADDR_LEN];/* source ethernet address */
uint16_t ether_type; /* protocol */ uint16_t ether_type; /* protocol */
}; };
#ifndef ETHERTYPE_PUP #ifndef ETHERTYPE_PUP
#define ETHERTYPE_PUP 0x0200 /* PUP protocol */ #define ETHERTYPE_PUP 0x0200 /* PUP protocol */
#endif #endif
#ifndef ETHERTYPE_IP #ifndef ETHERTYPE_IP
#define ETHERTYPE_IP 0x0800 /* IP protocol */ #define ETHERTYPE_IP 0x0800 /* IP protocol */
#endif #endif
#define ETHERTYPE_IPV6 0x86dd /* IPv6 protocol */
#ifndef ETHERTYPE_ARP #ifndef ETHERTYPE_ARP
#define ETHERTYPE_ARP 0x0806 /* addr. resolution protocol */ #define ETHERTYPE_ARP 0x0806 /* addr. resolution protocol */
#endif #endif
#ifndef ETHERTYPE_REVARP #ifndef ETHERTYPE_REVARP
#define ETHERTYPE_REVARP 0x8035 /* reverse addr. resolution protoco l */ #define ETHERTYPE_REVARP 0x8035 /* reverse addr. resolution protoco l */
#endif #endif
#ifndef ETHERTYPE_VLAN #ifndef ETHERTYPE_VLAN
#define ETHERTYPE_VLAN 0x8100 /* IEEE 802.1Q VLAN tagging */ #define ETHERTYPE_VLAN 0x8100 /* IEEE 802.1Q VLAN tagging */
#endif #endif
#ifndef ETHERTYPE_EAP #ifndef ETHERTYPE_EAP
skipping to change at line 806 skipping to change at line 813
struct libnet_ipv6_hbhopts_hdr struct libnet_ipv6_hbhopts_hdr
{ {
uint8_t ip_nh; /* next header */ uint8_t ip_nh; /* next header */
uint8_t ip_len; /* length of header in 8 octet units (sans 1st) */ uint8_t ip_len; /* length of header in 8 octet units (sans 1st) */
/* destination options information allocated dynamically */ /* destination options information allocated dynamically */
}; };
/* /*
* ICMP6 header * ICMP6 header
* Internet Control Message Protocol v6 * Internet Control Message Protocol v6
* Base header size: 8 bytes * Base header size: 4 bytes
*/ */
#ifndef IPPROTO_ICMP6 #ifndef IPPROTO_ICMPV6
#define IPPROTO_ICMP6 0x3a #define IPPROTO_ICMPV6 58
#endif #endif
struct libnet_icmpv6_hdr struct libnet_icmpv6_hdr
{ {
uint8_t icmp_type; /* ICMP type */ uint8_t icmp_type; /* ICMP type */
#ifndef ICMP6_ECHO /* Don't define if <netinet/icmp6.h> has defined them. */
#define ICMP6_ECHO 128 #ifndef ICMP6_ECHO_REQUEST
#define ICMP6_ECHO_REQUEST 128
#endif #endif
#ifndef ICMP6_ECHOREPLY #ifndef ICMP6_ECHO_REPLY
#define ICMP6_ECHOREPLY 129 #define ICMP6_ECHO_REPLY 129
#endif #endif
#ifndef ICMP6_UNREACH #ifndef ICMP6_DST_UNREACH
#define ICMP6_UNREACH 1 #define ICMP6_DST_UNREACH 1
#endif #endif
#ifndef ICMP6_PKTTOOBIG #ifndef ICMP6_PACKET_TOO_BIG
#define ICMP6_PKTTOOBIG 2 #define ICMP6_PACKET_TOO_BIG 2
#endif #endif
#ifndef ICMP6_TIMXCEED #ifndef ICMP6_TIME_EXCEEDED
#define ICMP6_TIMXCEED 3 #define ICMP6_TIME_EXCEEDED 3
#endif #endif
#ifndef ICMP6_PARAMPROB #ifndef ICMP6_PARAM_PROB
#define ICMP6_PARAMPROB 4 #define ICMP6_PARAM_PROB 4
#endif
#ifndef ND_ROUTER_SOLICIT
#define ND_ROUTER_SOLICIT 133
#endif
#ifndef ND_ROUTER_ADVERT
#define ND_ROUTER_ADVERT 134
#endif #endif
#ifndef ND_NEIGHBOR_SOLICIT
#define ND_NEIGHBOR_SOLICIT 135
#endif
#ifndef ND_NEIGHBOR_ADVERT
#define ND_NEIGHBOR_ADVERT 136
#endif
uint8_t icmp_code; /* ICMP code */ uint8_t icmp_code; /* ICMP code */
#ifndef ICMP6_NOROUTE #ifndef ICMP6_DST_UNREACH_NOROUTE
#define ICMP6_NOROUTE 0 #define ICMP6_DST_UNREACH_NOROUTE 0
#endif #endif
#ifndef ICMP6_ADM_PROHIBITED #ifndef ICMP6_DST_UNREACH_ADMIN
#define ICMP6_ADM_PROHIBITED 1 #define ICMP6_DST_UNREACH_ADMIN 1
#endif #endif
#ifndef ICMP6_NOT_NEIGHBOUR #ifndef ICMP6_DST_UNREACH_BEYONDSCOPE
#define ICMP6_NOT_NEIGHBOUR 2 #define ICMP6_DST_UNREACH_BEYONDSCOPE 2
#endif #endif
#ifndef ICMP6_ADDR_UNREACH #ifndef ICMP6_DST_UNREACH_ADDR
#define ICMP6_ADDR_UNREACH 3 #define ICMP6_DST_UNREACH_ADDR 3
#endif #endif
#ifndef ICMP6_PORT_UNREACH #ifndef ICMP6_DST_UNREACH_NOPORT
#define ICMP6_PORT_UNREACH 4 #define ICMP6_DST_UNREACH_NOPORT 4
#endif #endif
uint16_t icmp_sum; /* ICMP Checksum */ uint16_t icmp_sum; /* ICMP Checksum */
uint16_t id; /* ICMP id */
uint16_t seq; /* ICMP sequence number */ /* This is confusing: id/seq are used only for echo req/reply, but must
* exist in struct for backwards compatibility. */
uint16_t id; /* ICMP id (unused, for backwards compatibilit
y) */
uint16_t seq; /* ICMP sequence number (unused, for backwards
compatibility) */
/* Non-standard names, for libnet backwards compatibility, don't use. *
/
/* ipproto: */
#define IPPROTO_ICMP6 58
/* types: */
#define ICMP6_ECHO 128
#define ICMP6_ECHOREPLY 129
#define ICMP6_UNREACH 1
#define ICMP6_PKTTOOBIG 2
#define ICMP6_TIMXCEED 3
#define ICMP6_PARAMPROB 4
/* codes: */
#define ICMP6_NOROUTE 0
#define ICMP6_ADM_PROHIBITED 1
#define ICMP6_NOT_NEIGHBOUR 2
#define ICMP6_ADDR_UNREACH 3
#define ICMP6_PORT_UNREACH 4
};
/* All of this stuff follows base ICMPv6 header */
struct libnet_icmpv6_unreach {
uint32_t unused;
};
struct libnet_icmpv6_echo {
uint16_t id;
uint16_t seq;
};
struct libnet_icmpv6_ndp_nsol {
uint32_t reserved;
struct libnet_in6_addr target_addr;
};
struct libnet_icmpv6_ndp_nadv {
uint32_t flags;
#ifndef ND_NA_FLAG_ROUTER
#define ND_NA_FLAG_ROUTER 0x80000000
#endif
#ifndef ND_NA_FLAG_SOLICITED
#define ND_NA_FLAG_SOLICITED 0x40000000
#endif
#ifndef ND_NA_FLAG_OVERRIDE
#define ND_NA_FLAG_OVERRIDE 0x20000000
#endif
struct libnet_in6_addr target_addr;
};
struct libnet_icmpv6_ndp_opt {
uint8_t type;
#ifndef ND_OPT_SOURCE_LINKADDR
#define ND_OPT_SOURCE_LINKADDR 1
#endif
#ifndef ND_OPT_TARGET_LINKADDR
#define ND_OPT_TARGET_LINKADDR 2
#endif
#ifndef ND_OPT_PREFIX_INFORMATION
#define ND_OPT_PREFIX_INFORMATION 3
#endif
#ifndef ND_OPT_REDIRECTED_HEADER
#define ND_OPT_REDIRECTED_HEADER 4
#endif
#ifndef ND_OPT_MTU
#define ND_OPT_MTU 5
#endif
#ifndef ND_OPT_RTR_ADV_INTERVAL
#define ND_OPT_RTR_ADV_INTERVAL 7
#endif
#ifndef ND_OPT_HOME_AGENT_INFO
#define ND_OPT_HOME_AGENT_INFO 8
#endif
uint8_t len;
}; };
/* /*
* ICMP header * ICMP header
* Internet Control Message Protocol * Internet Control Message Protocol
* Base header size: 4 bytes * Base header size: 4 bytes
*/ */
struct libnet_icmpv4_hdr struct libnet_icmpv4_hdr
{ {
uint8_t icmp_type; /* ICMP type */ uint8_t icmp_type; /* ICMP type */
skipping to change at line 987 skipping to change at line 1085
uint16_t icmp_sum; /* ICMP Checksum */ uint16_t icmp_sum; /* ICMP Checksum */
union union
{ {
struct struct
{ {
uint16_t id; /* ICMP id */ uint16_t id; /* ICMP id */
uint16_t seq;/* ICMP sequence number */ uint16_t seq;/* ICMP sequence number */
} echo; } echo;
/* TODO this hack conflicts with the system headers, which is why w
e
* undef what they do, and it also damages dnet/dumbnet's headers i
f
* they are included after ours. Fixing will break API, though, so
* we leave it for now.
*/
#undef icmp_id #undef icmp_id
#undef icmp_seq #undef icmp_seq
#define icmp_id hun.echo.id #define icmp_id hun.echo.id
#define icmp_seq hun.echo.seq #define icmp_seq hun.echo.seq
uint32_t gateway; /* gateway host */ uint32_t gateway; /* gateway host */
struct struct
{ {
uint16_t pad;/* padding */ uint16_t pad;/* padding */
uint16_t mtu;/* MTU size */ uint16_t mtu;/* MTU size */
skipping to change at line 1049 skipping to change at line 1152
#endif #endif
#ifndef IGMP_V1_MEMBERSHIP_REPORT #ifndef IGMP_V1_MEMBERSHIP_REPORT
#define IGMP_V1_MEMBERSHIP_REPORT 0x12 /* Ver. 1 membership report */ #define IGMP_V1_MEMBERSHIP_REPORT 0x12 /* Ver. 1 membership report */
#endif #endif
#ifndef IGMP_V2_MEMBERSHIP_REPORT #ifndef IGMP_V2_MEMBERSHIP_REPORT
#define IGMP_V2_MEMBERSHIP_REPORT 0x16 /* Ver. 2 membership report */ #define IGMP_V2_MEMBERSHIP_REPORT 0x16 /* Ver. 2 membership report */
#endif #endif
#ifndef IGMP_LEAVE_GROUP #ifndef IGMP_LEAVE_GROUP
#define IGMP_LEAVE_GROUP 0x17 /* Leave-group message */ #define IGMP_LEAVE_GROUP 0x17 /* Leave-group message */
#endif #endif
uint8_t igmp_code; /* IGMP code */ uint8_t igmp_code; /* IGMP reserved field (0), mistakenly called 'code' in early libnet versions */
uint16_t igmp_sum; /* IGMP checksum */ uint16_t igmp_sum; /* IGMP checksum */
struct in_addr igmp_group;/* IGMP host IP */ struct in_addr igmp_group;/* IGMP host IP */
}; };
/* /*
* IPSEC header * IPSEC header
* Internet Protocol Security Protocol * Internet Protocol Security Protocol
* Encapsulating Security Payload Header Static header size: 12 bytes * Encapsulating Security Payload Header Static header size: 12 bytes
* Encapsulating Security Payload Footer Base header size: 2 bytes * Encapsulating Security Payload Footer Base header size: 2 bytes
* Authentication Header Static Size: 16 bytes * Authentication Header Static Size: 16 bytes
 End of changes. 22 change blocks. 
33 lines changed or deleted 147 lines changed or added


 libnet-macros.h   libnet-macros.h 
skipping to change at line 166 skipping to change at line 166
memcpy((uint8_t *)x, (uint8_t *)y, sizeof(y)) memcpy((uint8_t *)x, (uint8_t *)y, sizeof(y))
/* used internally for NTP leap indicator, version, and mode */ /* used internally for NTP leap indicator, version, and mode */
#define LIBNET_NTP_DO_LI_VN_MODE(li, vn, md) \ #define LIBNET_NTP_DO_LI_VN_MODE(li, vn, md) \
((uint8_t)((((li) << 6) & 0xc0) | (((vn) << 3) & 0x38) | ((md) & 0x7))) ((uint8_t)((((li) << 6) & 0xc0) | (((vn) << 3) & 0x38) | ((md) & 0x7)))
/* Not all systems have IFF_LOOPBACK */ /* Not all systems have IFF_LOOPBACK */
#ifdef IFF_LOOPBACK #ifdef IFF_LOOPBACK
#define LIBNET_ISLOOPBACK(p) ((p)->ifr_flags & IFF_LOOPBACK) #define LIBNET_ISLOOPBACK(p) ((p)->ifr_flags & IFF_LOOPBACK)
#else #else
#define LIBNET_ISLOOPBACK(p) (strcmp((p)->ifr_name, "lo0") == 0) #define LIBNET_ISLOOPBACK(p) (strcmp((p)->ifr_name, "lo") == 0)
#endif #endif
/* advanced mode check */ /* advanced mode check */
#define LIBNET_ISADVMODE(x) (x & 0x08) #define LIBNET_ISADVMODE(x) (x & 0x08)
/* context queue macros and constants */ /* context queue macros and constants */
#define LIBNET_LABEL_SIZE 64 #define LIBNET_LABEL_SIZE 64
#define LIBNET_LABEL_DEFAULT "cardshark" #define LIBNET_LABEL_DEFAULT "cardshark"
#define CQ_LOCK_UNLOCKED (u_int)0x00000000 #define CQ_LOCK_UNLOCKED (u_int)0x00000000
#define CQ_LOCK_READ (u_int)0x00000001 #define CQ_LOCK_READ (u_int)0x00000001
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 libnet-structures.h   libnet-structures.h 
skipping to change at line 158 skipping to change at line 158
#define LIBNET_PBLOCK_BGP4_UPDATE_H 0x37 /* BGP4 update header */ #define LIBNET_PBLOCK_BGP4_UPDATE_H 0x37 /* BGP4 update header */
#define LIBNET_PBLOCK_BGP4_NOTIFICATION_H 0x38 /* BGP4 notification header */ #define LIBNET_PBLOCK_BGP4_NOTIFICATION_H 0x38 /* BGP4 notification header */
#define LIBNET_PBLOCK_GRE_H 0x39 /* GRE header */ #define LIBNET_PBLOCK_GRE_H 0x39 /* GRE header */
#define LIBNET_PBLOCK_GRE_SRE_H 0x3a /* GRE SRE header */ #define LIBNET_PBLOCK_GRE_SRE_H 0x3a /* GRE SRE header */
#define LIBNET_PBLOCK_IPV6_FRAG_H 0x3b /* IPv6 frag header */ #define LIBNET_PBLOCK_IPV6_FRAG_H 0x3b /* IPv6 frag header */
#define LIBNET_PBLOCK_IPV6_ROUTING_H 0x3c /* IPv6 routing header */ #define LIBNET_PBLOCK_IPV6_ROUTING_H 0x3c /* IPv6 routing header */
#define LIBNET_PBLOCK_IPV6_DESTOPTS_H 0x3d /* IPv6 dest opts header */ #define LIBNET_PBLOCK_IPV6_DESTOPTS_H 0x3d /* IPv6 dest opts header */
#define LIBNET_PBLOCK_IPV6_HBHOPTS_H 0x3e /* IPv6 hop/hop opts header */ #define LIBNET_PBLOCK_IPV6_HBHOPTS_H 0x3e /* IPv6 hop/hop opts header */
#define LIBNET_PBLOCK_SEBEK_H 0x3f /* Sebek header */ #define LIBNET_PBLOCK_SEBEK_H 0x3f /* Sebek header */
#define LIBNET_PBLOCK_HSRP_H 0x40 /* HSRP header */ #define LIBNET_PBLOCK_HSRP_H 0x40 /* HSRP header */
#define LIBNET_PBLOCK_ICMPV6_H 0x41 /* ICMPv6 header */ #define LIBNET_PBLOCK_ICMPV6_H 0x41 /* ICMPv6 header (unused) *
/
#define LIBNET_PBLOCK_ICMPV6_ECHO_H 0x46 /* ICMPv6 echo header */
#define LIBNET_PBLOCK_ICMPV6_UNREACH_H 0x42 /* ICMPv6 unreach header */ #define LIBNET_PBLOCK_ICMPV6_UNREACH_H 0x42 /* ICMPv6 unreach header */
#define LIBNET_PBLOCK_ICMPV6_NDP_NSOL_H 0x43 /* ICMPv6 NDP neighbor soli
citation header */
#define LIBNET_PBLOCK_ICMPV6_NDP_NADV_H 0x44 /* ICMPv6 NDP neighbor adve
rtisement header */
#define LIBNET_PBLOCK_ICMPV6_NDP_OPT_H 0x45 /* ICMPv6 NDP option */
uint8_t flags; /* control flags */ uint8_t flags; /* control flags */
#define LIBNET_PBLOCK_DO_CHECKSUM 0x01 /* needs a checksum */ #define LIBNET_PBLOCK_DO_CHECKSUM 0x01 /* needs a checksum */
libnet_ptag_t ptag; /* protocol block tag */ libnet_ptag_t ptag; /* protocol block tag */
/* Chains are built from highest level protocol, towards the link level , so /* Chains are built from highest level protocol, towards the link level , so
* prev traverses away from link level, and next traverses towards the * prev traverses away from link level, and next traverses towards the
* link level. * link level.
*/ */
struct libnet_protocol_block *next; /* next pblock */ struct libnet_protocol_block *next; /* next pblock */
struct libnet_protocol_block *prev; /* prev pblock */ struct libnet_protocol_block *prev; /* prev pblock */
 End of changes. 2 change blocks. 
1 lines changed or deleted 8 lines changed or added


 libnet.h   libnet.h 
skipping to change at line 83 skipping to change at line 83
#if defined(HAVE_SYS_SOCKIO_H) && !defined(SIOCGIFADDR) #if defined(HAVE_SYS_SOCKIO_H) && !defined(SIOCGIFADDR)
# include <sys/sockio.h> # include <sys/sockio.h>
#endif #endif
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/types.h> #include <sys/types.h>
#include <ctype.h> #include <ctype.h>
#if !defined(__WIN32__) #if !defined(__WIN32__)
# include <sys/socket.h> # include <sys/socket.h>
# include <netinet/in.h>
# include <net/if.h> # include <net/if.h>
#else /* __WIN32__ */ #else /* __WIN32__ */
# if (__CYGWIN__) # if (__CYGWIN__)
# include <sys/socket.h> # include <sys/socket.h>
# endif # endif
# include <ws2tcpip.h> # include <ws2tcpip.h>
# include <windows.h> # include <windows.h>
# include <winsock2.h> # include <winsock2.h>
# include <win32/in_systm.h> # include <win32/in_systm.h>
#endif /* __WIN32__ */ #endif /* __WIN32__ */
skipping to change at line 111 skipping to change at line 110
#if !defined(__WIN32__) #if !defined(__WIN32__)
# include <arpa/inet.h> # include <arpa/inet.h>
# include <sys/time.h> # include <sys/time.h>
# include <netdb.h> # include <netdb.h>
#endif /* __WIN32__ */ #endif /* __WIN32__ */
#include <errno.h> #include <errno.h>
#include <stdarg.h> #include <stdarg.h>
#define LIBNET_VERSION "1.1.5" #define LIBNET_VERSION "1.1.6"
#define LIBNET_LIL_ENDIAN 1 #define LIBNET_LIL_ENDIAN 1
#include "./libnet/libnet-types.h" #include "./libnet/libnet-types.h"
#include "./libnet/libnet-macros.h" #include "./libnet/libnet-macros.h"
#include "./libnet/libnet-headers.h" #include "./libnet/libnet-headers.h"
#include "./libnet/libnet-structures.h" #include "./libnet/libnet-structures.h"
#include "./libnet/libnet-asn1.h" #include "./libnet/libnet-asn1.h"
#include "./libnet/libnet-functions.h" #include "./libnet/libnet-functions.h"
 End of changes. 2 change blocks. 
2 lines changed or deleted 1 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/