00001 /* 00002 * INET An implementation of the TCP/IP protocol suite for the LINUX 00003 * operating system. INET is implemented using the BSD Socket 00004 * interface as the means of communication with the user level. 00005 * 00006 * Global definitions for the Ethernet IEEE 802.3 interface. 00007 * 00008 * Version: @(#)if_ether.h 1.0.1a 02/08/94 00009 * 00010 * Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> 00011 * Donald Becker, <becker@super.org> 00012 * Alan Cox, <alan@redhat.com> 00013 * Steve Whitehouse, <gw7rrm@eeshack3.swan.ac.uk> 00014 * 00015 * This program is free software; you can redistribute it and/or 00016 * modify it under the terms of the GNU General Public License 00017 * as published by the Free Software Foundation; either version 00018 * 2 of the License, or (at your option) any later version. 00019 */ 00020 00021 #ifndef _LINUX_IF_ETHER_H 00022 #define _LINUX_IF_ETHER_H 00023 00024 /* 00025 * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble 00026 * and FCS/CRC (frame check sequence). 00027 */ 00028 00029 #define ETH_ALEN 6 /* Octets in one ethernet addr */ 00030 #define ETH_HLEN 14 /* Total octets in header. */ 00031 #define ETH_ZLEN 60 /* Min. octets in frame sans FCS */ 00032 #define ETH_DATA_LEN 1500 /* Max. octets in payload */ 00033 #define ETH_FRAME_LEN 1514 /* Max. octets in frame sans FCS */ 00034 00035 /* 00036 * These are the defined Ethernet Protocol ID's. 00037 */ 00038 00039 #define ETH_P_LOOP 0x0060 /* Ethernet Loopback packet */ 00040 #define ETH_P_ECHO 0x0200 /* Ethernet Echo packet */ 00041 #define ETH_P_PUP 0x0400 /* Xerox PUP packet */ 00042 #define ETH_P_IP 0x0800 /* Internet Protocol packet */ 00043 #define ETH_P_X25 0x0805 /* CCITT X.25 */ 00044 #define ETH_P_ARP 0x0806 /* Address Resolution packet */ 00045 #define ETH_P_BPQ 0x08FF /* G8BPQ AX.25 Ethernet Packet [ NOT AN OFFICIALLY REGISTERED ID ] */ 00046 #define ETH_P_DEC 0x6000 /* DEC Assigned proto */ 00047 #define ETH_P_DNA_DL 0x6001 /* DEC DNA Dump/Load */ 00048 #define ETH_P_DNA_RC 0x6002 /* DEC DNA Remote Console */ 00049 #define ETH_P_DNA_RT 0x6003 /* DEC DNA Routing */ 00050 #define ETH_P_LAT 0x6004 /* DEC LAT */ 00051 #define ETH_P_DIAG 0x6005 /* DEC Diagnostics */ 00052 #define ETH_P_CUST 0x6006 /* DEC Customer use */ 00053 #define ETH_P_SCA 0x6007 /* DEC Systems Comms Arch */ 00054 #define ETH_P_RARP 0x8035 /* Reverse Addr Res packet */ 00055 #define ETH_P_ATALK 0x809B /* Appletalk DDP */ 00056 #define ETH_P_AARP 0x80F3 /* Appletalk AARP */ 00057 #define ETH_P_IPX 0x8137 /* IPX over DIX */ 00058 #define ETH_P_IPV6 0x86DD /* IPv6 over bluebook */ 00059 #define ETH_P_ATMMPOA 0x884c /* MultiProtocol Over ATM */ 00060 #define ETH_P_ATMFATE 0x8884 /* Frame-based ATM Transport 00061 * over Ethernet 00062 */ 00063 00064 /* 00065 * Non DIX types. Won't clash for 1500 types. 00066 */ 00067 00068 #define ETH_P_802_3 0x0001 /* Dummy type for 802.3 frames */ 00069 #define ETH_P_AX25 0x0002 /* Dummy protocol id for AX.25 */ 00070 #define ETH_P_ALL 0x0003 /* Every packet (be careful!!!) */ 00071 #define ETH_P_802_2 0x0004 /* 802.2 frames */ 00072 #define ETH_P_SNAP 0x0005 /* Internal only */ 00073 #define ETH_P_DDCMP 0x0006 /* DEC DDCMP: Internal only */ 00074 #define ETH_P_WAN_PPP 0x0007 /* Dummy type for WAN PPP frames*/ 00075 #define ETH_P_PPP_MP 0x0008 /* Dummy type for PPP MP frames */ 00076 #define ETH_P_LOCALTALK 0x0009 /* Localtalk pseudo type */ 00077 #define ETH_P_PPPTALK 0x0010 /* Dummy type for Atalk over PPP*/ 00078 #define ETH_P_TR_802_2 0x0011 /* 802.2 frames */ 00079 #define ETH_P_MOBITEX 0x0015 /* Mobitex (kaz@cafe.net) */ 00080 #define ETH_P_CONTROL 0x0016 /* Card specific control frames */ 00081 #define ETH_P_IRDA 0x0017 /* Linux/IR */ 00082 00083 /* 00084 * This is an Ethernet frame header. 00085 */ 00086 00087 struct ethhdr 00088 { 00089 unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ 00090 unsigned char h_source[ETH_ALEN]; /* source ether addr */ 00091 unsigned short h_proto; /* packet type ID field */ 00092 }; 00093 00094 /* 00095 * We Have changed the ethernet statistics collection data. This 00096 * is just for partial compatibility for now. 00097 */ 00098 00099 00100 #define enet_statistics net_device_stats 00101 00102 #endif /* _LINUX_IF_ETHER_H */