1 /* 2 * Fundamental constants relating to ethernet. 3 * 4 * $Id: ethernet.h,v 1.1 1996/08/05 14:02:38 phk Exp $ 5 * 6 */ 7 8 #ifndef _NET_ETHERNET_H_ 9 #define _NET_ETHERNET_H_ 10 11 /* 12 * The number of bytes in an ethernet (MAC) address. 13 */ 14 #define ETHER_ADDR_LEN 6 15 16 /* 17 * The number of bytes in the type field. 18 */ 19 #define ETHER_TYPE_LEN 2 20 21 /* 22 * The number of bytes in the trailing CRC field. 23 */ 24 #define ETHER_CRC_LEN 4 25 26 /* 27 * The length of the combined header. 28 */ 29 #define ETHER_HDR_LEN (ETHER_ADDR_LEN*2+ETHER_TYPE_LEN) 30 31 /* 32 * The minimum packet length. 33 */ 34 #define ETHER_MIN_LEN 64 35 36 /* 37 * The maximum packet length. 38 */ 39 #define ETHER_MAX_LEN 1518 40 41 /* 42 * A macro to validate a length with 43 */ 44 #define ETHER_IS_VALID_LEN(foo) \ 45 ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN) 46 47 /* 48 * Structure of a 10Mb/s Ethernet header. 49 */ 50 struct ether_header { 51 u_char ether_dhost[ETHER_ADDR_LEN]; 52 u_char ether_shost[ETHER_ADDR_LEN]; 53 u_short ether_type; 54 }; 55 56 /* 57 * Structure of a 48-bit Ethernet address. 58 */ 59 struct ether_addr { 60 u_char octet[ETHER_ADDR_LEN]; 61 }; 62 63 #endif 64