176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef _GPXE_IF_ETHER_H 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _GPXE_IF_ETHER_H 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 476d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanFILE_LICENCE ( GPL2_OR_LATER ); 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include <stdint.h> 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETH_ALEN 6 /* Size of Ethernet address */ 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETH_HLEN 14 /* Size of ethernet header */ 1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETH_ZLEN 60 /* Minimum packet */ 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETH_FRAME_LEN 1514 /* Maximum packet */ 1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETH_DATA_ALIGN 2 /* Amount needed to align the data after an ethernet header */ 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef ETH_MAX_MTU 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETH_MAX_MTU (ETH_FRAME_LEN-ETH_HLEN) 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif 1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETH_P_RAW 0x0000 /* Raw packet */ 1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETH_P_IP 0x0800 /* Internet Protocl Packet */ 1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETH_P_ARP 0x0806 /* Address Resolution Protocol */ 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETH_P_RARP 0x8035 /* Reverse Address resolution Protocol */ 2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETH_P_IPV6 0x86DD /* IPv6 over blueblook */ 2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETH_P_SLOW 0x8809 /* Ethernet slow protocols */ 2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETH_P_EAPOL 0x888E /* 802.1X EAP over LANs */ 2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define ETH_P_AOE 0x88A2 /* ATA over Ethernet */ 2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** An Ethernet link-layer header */ 2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct ethhdr { 2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Destination MAC address */ 2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t h_dest[ETH_ALEN]; 3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Source MAC address */ 3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint8_t h_source[ETH_ALEN]; 3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /** Protocol ID */ 3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman uint16_t h_protocol; 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} __attribute__ ((packed)); 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif /* _GPXE_IF_ETHER_H */ 37