1 /* 2 * Copyright 2006-2010, Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef ETHERNET_H 6 #define ETHERNET_H 7 8 9 #include <SupportDefs.h> 10 11 12 #define ETHER_ADDRESS_LENGTH 6 13 #define ETHER_CRC_LENGTH 4 14 #define ETHER_HEADER_LENGTH 14 15 16 #define ETHER_MIN_FRAME_SIZE 64 17 #define ETHER_MAX_FRAME_SIZE 1514 18 19 struct ether_header { 20 uint8 destination[ETHER_ADDRESS_LENGTH]; 21 uint8 source[ETHER_ADDRESS_LENGTH]; 22 uint16 type; 23 } _PACKED; 24 25 26 // ethernet types 27 #define ETHER_TYPE_IP 0x0800 28 #define ETHER_TYPE_ARP 0x0806 29 #define ETHER_TYPE_IPX 0x8137 30 #define ETHER_TYPE_IPV6 0x86dd 31 #define ETHER_TYPE_PPPOE_DISCOVERY 0x8863 // PPPoE discovery stage 32 #define ETHER_TYPE_PPPOE 0x8864 // PPPoE session stage 33 34 35 #endif // ETHERNET_H 36