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