if_ether.h

Go to the documentation of this file.
00001 /**
00002 *
00003 
00004  * INET         An implementation of the TCP/IP protocol suite for the LINUX
00005  *              operating system.  INET is implemented using the  BSD Socket
00006  *              interface as the means of communication with the user level.
00007  *
00008  *              Global definitions for the Ethernet IEE 802.3 interface.
00009  *
00010  * Version:     @(#)if_ether.h  1.0.1a  02/08/94
00011  *
00012  * Author:      Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
00013  *              Donald Becker, <becker@super.org>
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 */
00022 #ifndef _LINUX_IF_ETHER_H
00023 #define _LINUX_IF_ETHER_H
00024 
00025 
00026 /**
00027 *
00028  IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
00029 
00030 
00031 */
00032 #define ETH_ALEN        6               ///< Octets in one ethernet addr         
00033 #define ETH_HLEN        14              ///< Total octets in header.     
00034 #define ETH_ZLEN        60              ///< Min. octets in frame sans FCS 
00035 #define ETH_DATA_LEN    1500            ///< Max. octets in payload      
00036 #define ETH_FRAME_LEN   1514            ///< Max. octets in frame sans FCS 
00037 
00038 
00039 /// These are the defined Ethernet Protocol ID's. 
00040 #define ETH_P_LOOP      0x0060          ///< Ethernet Loopback packet   
00041 #define ETH_P_ECHO      0x0200          ///< Ethernet Echo packet               
00042 #define ETH_P_PUP       0x0400          ///< Xerox PUP packet           
00043 #define ETH_P_IP        0x0800          ///< Internet Protocol packet   
00044 #define ETH_P_ARP       0x0806          ///< Address Resolution packet  
00045 #define ETH_P_RARP      0x8035          ///< Reverse Addr Res packet    
00046 #define ETH_P_X25       0x0805          ///< CCITT X.25                 
00047 #define ETH_P_IPX       0x8137          ///< IPX over DIX                       
00048 #define ETH_P_802_3     0x0001          ///< Dummy type for 802.3 frames  
00049 #define ETH_P_AX25      0x0002          ///< Dummy protocol id for AX.25  
00050 #define ETH_P_ALL       0x0003          ///< Every packet (be careful!!!) 
00051 
00052 /// This is an Ethernet frame header. 
00053 struct ethhdr {
00054   unsigned char         h_dest[ETH_ALEN];       ///< destination eth addr       
00055   unsigned char         h_source[ETH_ALEN];     ///< source ether addr  
00056   unsigned short        h_proto;                ///< packet type ID field       
00057 };
00058 
00059 /// Ethernet statistics collection data. 
00060 struct enet_statistics{
00061   int   rx_packets;                     ///< total packets received     
00062   int   tx_packets;                     ///< total packets transmitted  
00063   int   rx_errors;                      ///< bad packets received               
00064   int   tx_errors;                      ///< packet transmit problems   
00065   int   rx_dropped;                     ///< no space in linux buffers  
00066   int   tx_dropped;                     ///< no space available in linux        
00067   int   multicast;                      ///< multicast packets received 
00068   int   collisions;
00069 
00070   /// detailed rx_errors: 
00071   int   rx_length_errors;
00072   int   rx_over_errors;                 ///< receiver ring buff overflow        
00073   int   rx_crc_errors;                  ///< recved pkt with crc error  
00074   int   rx_frame_errors;                ///< recv'd frame alignment error 
00075   int   rx_fifo_errors;                 ///< recv'r fifo overrun                
00076   int   rx_missed_errors;               ///< receiver missed packet     
00077 
00078   /// detailed tx_errors 
00079   int   tx_aborted_errors;
00080   int   tx_carrier_errors;
00081   int   tx_fifo_errors;
00082   int   tx_heartbeat_errors;
00083   int   tx_window_errors;
00084 };
00085 
00086 #endif  // _LINUX_IF_ETHER_H 

Generated on Mon May 1 21:47:00 2006 for KernelAPI by  doxygen 1.4.6-5