1 2 #ifndef __NET_ETHERNET_H__ 3 #define __NET_ETHERNET_H__ 4 5 #include <sys/cdefs.h> 6 7 #define ETHER_ADDR_LEN 6 8 #define ETHER_TYPE_LEN 2 9 #define ETHER_CRC_LEN 4 10 11 #define ETHER_HDR_LEN (2*ETHER_ADDR_LEN + ETHER_TYPE_LEN) 12 13 struct ether_header { 14 uint8_t ether_dhost[ETHER_ADDR_LEN]; 15 uint8_t ether_shost[ETHER_ADDR_LEN]; 16 uint16_t ether_type; 17 } PACKED; 18 19 struct ether_addr { 20 uint8_t octet[ETHER_ADDR_LEN]; 21 } PACKED; 22 23 #define ETHERTYPE_IP 0x0800 /* IP */ 24 #define ETHERTYPE_ARP 0x0806 /* ARP */ 25 #define ETHERTYPE_REVARP 0x8036 /* Reverse ARP */ 26 #define ETHERTYPE_IPV6 0x86DD /* IPv6 */ 27 28 #endif /* __NET_ETHERNET_H__ */ 29 30