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