7#include <netinet/ip6.h>
12# define ETHER_HDR_LEN 14
20# define IP_OFFMASK 0x1fff
32# define ETHERTYPE_IP 0x0800
36# define ETHERTYPE_VLAN 0x8100
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__));