ethernet.h raw

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