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
1.4.6-5