xref: /aosp_15_r20/external/musl/include/net/ethernet.h (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #ifndef _NET_ETHERNET_H
2*c9945492SAndroid Build Coastguard Worker #define _NET_ETHERNET_H
3*c9945492SAndroid Build Coastguard Worker 
4*c9945492SAndroid Build Coastguard Worker #ifdef __cplusplus
5*c9945492SAndroid Build Coastguard Worker extern "C" {
6*c9945492SAndroid Build Coastguard Worker #endif
7*c9945492SAndroid Build Coastguard Worker 
8*c9945492SAndroid Build Coastguard Worker #include <stdint.h>
9*c9945492SAndroid Build Coastguard Worker #include <sys/types.h>
10*c9945492SAndroid Build Coastguard Worker #include <netinet/if_ether.h>
11*c9945492SAndroid Build Coastguard Worker 
12*c9945492SAndroid Build Coastguard Worker struct ether_addr {
13*c9945492SAndroid Build Coastguard Worker 	uint8_t ether_addr_octet[ETH_ALEN];
14*c9945492SAndroid Build Coastguard Worker };
15*c9945492SAndroid Build Coastguard Worker 
16*c9945492SAndroid Build Coastguard Worker struct ether_header {
17*c9945492SAndroid Build Coastguard Worker 	uint8_t  ether_dhost[ETH_ALEN];
18*c9945492SAndroid Build Coastguard Worker 	uint8_t  ether_shost[ETH_ALEN];
19*c9945492SAndroid Build Coastguard Worker 	uint16_t ether_type;
20*c9945492SAndroid Build Coastguard Worker };
21*c9945492SAndroid Build Coastguard Worker 
22*c9945492SAndroid Build Coastguard Worker #define	ETHERTYPE_PUP		0x0200
23*c9945492SAndroid Build Coastguard Worker #define ETHERTYPE_SPRITE	0x0500
24*c9945492SAndroid Build Coastguard Worker #define	ETHERTYPE_IP		0x0800
25*c9945492SAndroid Build Coastguard Worker #define	ETHERTYPE_ARP		0x0806
26*c9945492SAndroid Build Coastguard Worker #define	ETHERTYPE_REVARP	0x8035
27*c9945492SAndroid Build Coastguard Worker #define ETHERTYPE_AT		0x809B
28*c9945492SAndroid Build Coastguard Worker #define ETHERTYPE_AARP		0x80F3
29*c9945492SAndroid Build Coastguard Worker #define	ETHERTYPE_VLAN		0x8100
30*c9945492SAndroid Build Coastguard Worker #define ETHERTYPE_IPX		0x8137
31*c9945492SAndroid Build Coastguard Worker #define	ETHERTYPE_IPV6		0x86dd
32*c9945492SAndroid Build Coastguard Worker #define ETHERTYPE_LOOPBACK	0x9000
33*c9945492SAndroid Build Coastguard Worker 
34*c9945492SAndroid Build Coastguard Worker 
35*c9945492SAndroid Build Coastguard Worker #define	ETHER_ADDR_LEN	ETH_ALEN
36*c9945492SAndroid Build Coastguard Worker #define	ETHER_TYPE_LEN	2
37*c9945492SAndroid Build Coastguard Worker #define	ETHER_CRC_LEN	4
38*c9945492SAndroid Build Coastguard Worker #define	ETHER_HDR_LEN	ETH_HLEN
39*c9945492SAndroid Build Coastguard Worker #define	ETHER_MIN_LEN	(ETH_ZLEN + ETHER_CRC_LEN)
40*c9945492SAndroid Build Coastguard Worker #define	ETHER_MAX_LEN	(ETH_FRAME_LEN + ETHER_CRC_LEN)
41*c9945492SAndroid Build Coastguard Worker 
42*c9945492SAndroid Build Coastguard Worker #define	ETHER_IS_VALID_LEN(foo)	\
43*c9945492SAndroid Build Coastguard Worker 	((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN)
44*c9945492SAndroid Build Coastguard Worker 
45*c9945492SAndroid Build Coastguard Worker #define	ETHERTYPE_TRAIL		0x1000
46*c9945492SAndroid Build Coastguard Worker #define	ETHERTYPE_NTRAILER	16
47*c9945492SAndroid Build Coastguard Worker 
48*c9945492SAndroid Build Coastguard Worker #define	ETHERMTU	ETH_DATA_LEN
49*c9945492SAndroid Build Coastguard Worker #define	ETHERMIN	(ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN)
50*c9945492SAndroid Build Coastguard Worker 
51*c9945492SAndroid Build Coastguard Worker #ifdef __cplusplus
52*c9945492SAndroid Build Coastguard Worker }
53*c9945492SAndroid Build Coastguard Worker #endif
54*c9945492SAndroid Build Coastguard Worker 
55*c9945492SAndroid Build Coastguard Worker #endif
56