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__));