56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _NET_ETHERNET_H
 | |
| #define _NET_ETHERNET_H
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #include <stdint.h>
 | |
| #include <sys/types.h>
 | |
| #include <netinet/if_ether.h>
 | |
| 
 | |
| struct ether_addr {
 | |
| 	uint8_t ether_addr_octet[ETH_ALEN];
 | |
| };
 | |
| 
 | |
| struct ether_header {
 | |
| 	uint8_t  ether_dhost[ETH_ALEN];
 | |
| 	uint8_t  ether_shost[ETH_ALEN];
 | |
| 	uint16_t ether_type;
 | |
| };
 | |
| 
 | |
| #define	ETHERTYPE_PUP		0x0200
 | |
| #define ETHERTYPE_SPRITE	0x0500
 | |
| #define	ETHERTYPE_IP		0x0800
 | |
| #define	ETHERTYPE_ARP		0x0806
 | |
| #define	ETHERTYPE_REVARP	0x8035
 | |
| #define ETHERTYPE_AT		0x809B
 | |
| #define ETHERTYPE_AARP		0x80F3
 | |
| #define	ETHERTYPE_VLAN		0x8100
 | |
| #define ETHERTYPE_IPX		0x8137
 | |
| #define	ETHERTYPE_IPV6		0x86dd
 | |
| #define ETHERTYPE_LOOPBACK	0x9000
 | |
| 
 | |
| 
 | |
| #define	ETHER_ADDR_LEN	ETH_ALEN
 | |
| #define	ETHER_TYPE_LEN	2
 | |
| #define	ETHER_CRC_LEN	4
 | |
| #define	ETHER_HDR_LEN	ETH_HLEN
 | |
| #define	ETHER_MIN_LEN	(ETH_ZLEN + ETHER_CRC_LEN)
 | |
| #define	ETHER_MAX_LEN	(ETH_FRAME_LEN + ETHER_CRC_LEN)
 | |
| 
 | |
| #define	ETHER_IS_VALID_LEN(foo)	\
 | |
| 	((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN)
 | |
| 
 | |
| #define	ETHERTYPE_TRAIL		0x1000
 | |
| #define	ETHERTYPE_NTRAILER	16
 | |
| 
 | |
| #define	ETHERMTU	ETH_DATA_LEN
 | |
| #define	ETHERMIN	(ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN)
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif
 |