root/include/linux/if_ether.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * INET         An implementation of the TCP/IP protocol suite for the LINUX
   3  *              operating system.  INET is implemented using the  BSD Socket
   4  *              interface as the means of communication with the user level.
   5  *
   6  *              Global definitions for the Ethernet IEE 802.3 interface.
   7  *
   8  * Version:     @(#)if_ether.h  1.0.1   03/15/93
   9  *
  10  * Author:      Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  11  *
  12  *              This program is free software; you can redistribute it and/or
  13  *              modify it under the terms of the GNU General Public License
  14  *              as published by the Free Software Foundation; either version
  15  *              2 of the License, or (at your option) any later version.
  16  */
  17 #ifndef _LINUX_IF_ETHER_H
  18 #define _LINUX_IF_ETHER_H
  19 
  20 
  21 /* IEEE 802.3 Ethernet magic constants. */
  22 #define ETH_ALEN        6               /* #bytes in eth addr           */
  23 #define ETH_HLEN        14              /* #bytes in eth header         */
  24 #define ETH_ZLEN        60              /* min #bytes in frame          */
  25 #define ETH_FLEN        1536            /* max #bytes in frame          */
  26 #define ETH_DLEN        (ETH_FLEN - ETH_HLEN)   /* max #bytes of data   */
  27 
  28 /* These are the defined Ethernet Protocol ID's. */
  29 #define ETH_P_LOOP      0x0060          /* Ethernet Loopback packet     */
  30 #define ETH_P_ECHO      0x0200          /* Ethernet Echo packet         */
  31 #define ETH_P_PUP       0x0400          /* Xerox PUP packet             */
  32 #define ETH_P_IP        0x0800          /* Internet Protocol packet     */
  33 #define ETH_P_ARP       0x0806          /* Address Resolution packet    */
  34 #define ETH_P_RARP      0x8035          /* Reverse Addr Res packet      */
  35 #define ETH_P_X25       0x0805          /* CCITT X.25                   */
  36 #define ETH_P_IPX       0x8137          /* IPX over DIX                 */
  37 #define ETH_P_802_3     0x0001          /* Dummy type for 802.3 frames  */
  38 #define ETH_P_AX25      0x0002          /* Dummy protocol id for AX.25  */
  39 #define ETH_P_ALL       0x0003          /* Every packet (be careful!!!) */
  40 
  41 /* Define the Ethernet Broadcast Address (48 bits set to "1"). */
  42 #define ETH_A_BCAST     "\377\377\377\377\377\377"
  43 
  44 /* This is an Ethernet frame header. */
  45 struct ethhdr {
  46   unsigned char         h_dest[ETH_ALEN];       /* destination eth addr */
  47   unsigned char         h_source[ETH_ALEN];     /* source ether addr    */
  48   unsigned short        h_proto;                /* packet type ID field */
  49 };
  50 
  51 /* This is the complete Ethernet frame. */
  52 struct ethframe {
  53   struct ethhdr         f_hdr;                  /* frame header         */
  54   char                  f_data[ETH_DLEN];       /* frame data (variable)*/
  55 };
  56 
  57 
  58 /* Receiver modes */
  59 #define ETH_MODE_MONITOR        1       /* Monitor mode - no receive    */
  60 #define ETH_MODE_PHYS           2       /* Physical address receive only */
  61 #define ETH_MODE_BCAST          3       /* Broadcast receive + mode 2   */
  62 #define ETH_MODE_MCAST          4       /* Multicast receive + mode 3   */
  63 #define ETH_MODE_PROMISC        5       /* Promiscuous mode - receive all */
  64 
  65 
  66 /* Ethernet statistics collection data. */
  67 struct enet_statistics{
  68   int   rx_packets;                     /* total packets received       */
  69   int   tx_packets;                     /* total packets transmitted    */
  70   int   rx_errors;                      /* bad packets received         */
  71   int   tx_errors;                      /* packet transmit problems     */
  72   int   rx_dropped;                     /* no space in linux buffers    */
  73   int   tx_dropped;                     /* no space available in linux  */
  74   int   multicast;                      /* multicast packets received   */
  75   int   collisions;
  76 
  77   /* detailed rx_errors: */
  78   int   rx_length_errors;
  79   int   rx_over_errors;                 /* receiver ring buff overflow  */
  80   int   rx_crc_errors;                  /* recved pkt with crc error    */
  81   int   rx_frame_errors;                /* recv'd frame alignment error */
  82   int   rx_fifo_errors;                 /* recv'r fifo overrun          */
  83   int   rx_missed_errors;               /* receiver missed packet       */
  84 
  85   /* detailed tx_errors */
  86   int   tx_aborted_errors;
  87   int   tx_carrier_errors;
  88   int   tx_fifo_errors;
  89   int   tx_heartbeat_errors;
  90   int   tx_window_errors;
  91 };
  92 
  93 #endif  /* _LINUX_IF_ETHER_H */

/* [previous][next][first][last][top][bottom][index][help] */