| 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 | |
|