Dr Andrew Scott G7VAV

My photo
 
April 2024
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
6 7 8 9 10 11 12


ethernet.h
01: /* Copyright (C) 1997, 1999, 2001, 2008 Free Software Foundation, Inc.
02:    This file is part of the GNU C Library.
03: 
04:    The GNU C Library is free software; you can redistribute it and/or
05:    modify it under the terms of the GNU Lesser General Public
06:    License as published by the Free Software Foundation; either
07:    version 2.1 of the License, or (at your option) any later version.
08: 
09:    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 */
85: 


for client 18.191.132.194
© Andrew Scott 2006 - 2024,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/