root/headers/private/net/ethernet.h
/*
 * Copyright 2006-2010, Haiku, Inc. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 */
#ifndef ETHERNET_H
#define ETHERNET_H


#include <SupportDefs.h>


#define ETHER_ADDRESS_LENGTH    6
#define ETHER_CRC_LENGTH                4
#define ETHER_HEADER_LENGTH             14

#define ETHER_MIN_FRAME_SIZE    64
#define ETHER_MAX_FRAME_SIZE    1514

struct ether_header {
        uint8   destination[ETHER_ADDRESS_LENGTH];
        uint8   source[ETHER_ADDRESS_LENGTH];
        uint16  type;
} _PACKED;


// ethernet types
#define ETHER_TYPE_IP                           0x0800
#define ETHER_TYPE_ARP                          0x0806
#define ETHER_TYPE_IPX                          0x8137
#define ETHER_TYPE_IPV6                         0x86dd
#define ETHER_TYPE_PPPOE_DISCOVERY      0x8863  // PPPoE discovery stage
#define ETHER_TYPE_PPPOE                        0x8864  // PPPoE session stage


#endif  // ETHERNET_H