"Fossies" - the Fresh Open Source Software Archive

Member "tcpflow-1.6.1/src/be13_api/net_ethernet.h" (19 Feb 2021, 3223 Bytes) of package /linux/misc/tcpflow-1.6.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "net_ethernet.h" see the Fossies "Dox" file reference documentation.

    1 /* Copyright (C) 1997, 1999, 2001, 2008 Free Software Foundation, Inc.
    2    This file is part of the GNU C Library.
    3 
    4    The GNU C Library is free software; you can redistribute it and/or
    5    modify it under the terms of the GNU Lesser General Public
    6    License as published by the Free Software Foundation; either
    7    version 2.1 of the License, or (at your option) any later version.
    8 
    9    The GNU C Library is distributed in the hope that it will be useful,
   10    but WITHOUT ANY WARRANTY; without even the implied warranty of
   11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   12    Lesser General Public License for more details.
   13 
   14    You should have received a copy of the GNU Lesser General Public
   15    License along with the GNU C Library; if not, write to the Free
   16    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   17    02111-1307 USA.  */
   18 
   19 /* Based on the FreeBSD version of this file. Curiously, that file
   20    lacks a copyright in the header. */
   21 
   22 #ifndef __NET_ETHERNET_H
   23 #define __NET_ETHERNET_H 1
   24 
   25 #include <sys/cdefs.h>
   26 #include <sys/types.h>
   27 //#include <linux/if_ether.h>     /* IEEE 802.3 Ethernet constants */
   28 
   29 __BEGIN_DECLS
   30 
   31 /* This is a name for the 48 bit ethernet address available on many
   32    systems.  */
   33 struct ether_addr
   34 {
   35   u_int8_t ether_addr_octet[ETH_ALEN];
   36 } __attribute__ ((__packed__));
   37 
   38 /* 10Mb/s ethernet header */
   39 struct ether_header
   40 {
   41   u_int8_t  ether_dhost[ETH_ALEN];  /* destination eth addr */
   42   u_int8_t  ether_shost[ETH_ALEN];  /* source ether addr    */
   43   u_int16_t ether_type;             /* packet type ID field */
   44 } __attribute__ ((__packed__));
   45 
   46 /* Ethernet protocol ID's */
   47 #define ETHERTYPE_PUP       0x0200          /* Xerox PUP */
   48 #define ETHERTYPE_SPRITE    0x0500      /* Sprite */
   49 #define ETHERTYPE_IP        0x0800      /* IP */
   50 #define ETHERTYPE_ARP       0x0806      /* Address resolution */
   51 #define ETHERTYPE_REVARP    0x8035      /* Reverse ARP */
   52 #define ETHERTYPE_AT        0x809B      /* AppleTalk protocol */
   53 #define ETHERTYPE_AARP      0x80F3      /* AppleTalk ARP */
   54 #define ETHERTYPE_VLAN      0x8100      /* IEEE 802.1Q VLAN tagging */
   55 #define ETHERTYPE_IPX       0x8137      /* IPX */
   56 #define ETHERTYPE_IPV6      0x86dd      /* IP protocol version 6 */
   57 #define ETHERTYPE_LOOPBACK  0x9000      /* used to test interfaces */
   58 
   59 
   60 #define ETHER_ADDR_LEN  ETH_ALEN                 /* size of ethernet addr */
   61 #define ETHER_TYPE_LEN  2                        /* bytes in type field */
   62 #define ETHER_CRC_LEN   4                        /* bytes in CRC field */
   63 #define ETHER_HDR_LEN   ETH_HLEN                 /* total octets in header */
   64 #define ETHER_MIN_LEN   (ETH_ZLEN + ETHER_CRC_LEN) /* min packet length */
   65 #define ETHER_MAX_LEN   (ETH_FRAME_LEN + ETHER_CRC_LEN) /* max packet length */
   66 
   67 /* make sure ethenet length is valid */
   68 #define ETHER_IS_VALID_LEN(foo) \
   69     ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN)
   70 
   71 /*
   72  * The ETHERTYPE_NTRAILER packet types starting at ETHERTYPE_TRAIL have
   73  * (type-ETHERTYPE_TRAIL)*512 bytes of data followed
   74  * by an ETHER type (as given above) and then the (variable-length) header.
   75  */
   76 #define ETHERTYPE_TRAIL     0x1000      /* Trailer packet */
   77 #define ETHERTYPE_NTRAILER  16
   78 
   79 #define ETHERMTU    ETH_DATA_LEN
   80 #define ETHERMIN    (ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN)
   81 
   82 __END_DECLS
   83 
   84 #endif  /* net/ethernet.h */