1 #ifndef NMSG_PORT_NET_H 2 #define NMSG_PORT_NET_H 5 #include <sys/socket.h> 6 #include <netinet/in.h> 7 #include <netinet/ip6.h> 12 # define ETHER_HDR_LEN 14 20 # define IP_OFFMASK 0x1fff 32 # define ETHERTYPE_IP 0x0800 35 #ifndef ETHERTYPE_VLAN 36 # define ETHERTYPE_VLAN 0x8100 39 #ifndef ETHERTYPE_IPV6 40 # define ETHERTYPE_IPV6 0x86dd 44 # define IPV6_VERSION 0x60 47 #ifndef IPV6_VERSION_MASK 48 # define IPV6_VERSION_MASK 0xf0 52 # if !defined(WORDS_BIGENDIAN) 53 # define IP6F_OFF_MASK 0xf8ff 55 # define IP6F_OFF_MASK 0xfff8 61 #define load_net16(buf, out) do { \ 63 memcpy(&_my_16, buf, sizeof(uint16_t)); \ 64 _my_16 = ntohs(_my_16); \ 68 #define load_net32(buf, out) do { \ 70 memcpy(&_my_32, buf, sizeof(uint32_t)); \ 71 _my_32 = ntohl(_my_32); \ 75 #define store_net16(buf, in) do { \ 76 uint16_t _my_16 = htons(in); \ 77 memcpy(buf, &_my_16, sizeof(uint16_t)); \ 80 #define store_net32(buf, in) do { \ 81 uint32_t _my_32 = htonl(in); \ 82 memcpy(buf, &_my_32, sizeof(uint32_t)); \ 88 uint8_t ether_dhost[ETH_ALEN];
89 uint8_t ether_shost[ETH_ALEN];
91 } __attribute__ ((__packed__));
94 #if !defined(WORDS_BIGENDIAN) 110 } __attribute__ ((__packed__));
117 #if !defined(WORDS_BIGENDIAN) 128 } __attribute__ ((__packed__));
135 } __attribute__ ((__packed__));
141 } __attribute__ ((__packed__));