1 /* Copyright (C) 1997-2022 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, see
16    <https://www.gnu.org/licenses/>.  */
17 
18 #ifndef _NET_IF_ETHER_H
19 #define _NET_IF_ETHER_H	1
20 
21 /*
22  *	IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
23  *	and FCS/CRC (frame check sequence).
24  */
25 
26 #define ETH_ALEN	6		/* Octets in one ethernet addr	 */
27 #define ETH_HLEN	14		/* Total octets in header.	 */
28 #define ETH_ZLEN	60		/* Min. octets in frame sans FCS */
29 #define ETH_DATA_LEN	1500		/* Max. octets in payload	 */
30 #define ETH_FRAME_LEN	1514		/* Max. octets in frame sans FCS */
31 
32 /*
33  *	These are the defined Ethernet Protocol ID's.
34  */
35 
36 #define ETH_P_LOOP	0x0060		/* Ethernet Loopback packet	*/
37 #define ETH_P_ECHO	0x0200		/* Ethernet Echo packet		*/
38 #define ETH_P_PUP	0x0400		/* Xerox PUP packet		*/
39 #define ETH_P_IP	0x0800		/* Internet Protocol packet	*/
40 #define ETH_P_X25	0x0805		/* CCITT X.25			*/
41 #define ETH_P_ARP	0x0806		/* Address Resolution packet	*/
42 #define	ETH_P_BPQ	0x08FF		/* G8BPQ AX.25 Ethernet Packet	[ NOT AN OFFICIALLY REGISTERED ID ] */
43 #define ETH_P_DEC       0x6000          /* DEC Assigned proto           */
44 #define ETH_P_DNA_DL    0x6001          /* DEC DNA Dump/Load            */
45 #define ETH_P_DNA_RC    0x6002          /* DEC DNA Remote Console       */
46 #define ETH_P_DNA_RT    0x6003          /* DEC DNA Routing              */
47 #define ETH_P_LAT       0x6004          /* DEC LAT                      */
48 #define ETH_P_DIAG      0x6005          /* DEC Diagnostics              */
49 #define ETH_P_CUST      0x6006          /* DEC Customer use             */
50 #define ETH_P_SCA       0x6007          /* DEC Systems Comms Arch       */
51 #define ETH_P_RARP      0x8035		/* Reverse Addr Res packet	*/
52 #define ETH_P_ATALK	0x809B		/* Appletalk DDP		*/
53 #define ETH_P_AARP	0x80F3		/* Appletalk AARP		*/
54 #define ETH_P_IPX	0x8137		/* IPX over DIX			*/
55 #define ETH_P_IPV6	0x86DD		/* IPv6 over bluebook		*/
56 
57 /*
58  *	Non DIX types. Won't clash for 1500 types.
59  */
60 
61 #define ETH_P_802_3	0x0001		/* Dummy type for 802.3 frames  */
62 #define ETH_P_AX25	0x0002		/* Dummy protocol id for AX.25  */
63 #define ETH_P_ALL	0x0003		/* Every packet (be careful!!!) */
64 #define ETH_P_802_2	0x0004		/* 802.2 frames 		*/
65 #define ETH_P_SNAP	0x0005		/* Internal only		*/
66 #define ETH_P_DDCMP     0x0006          /* DEC DDCMP: Internal only     */
67 #define ETH_P_WAN_PPP   0x0007          /* Dummy type for WAN PPP frames*/
68 #define ETH_P_PPP_MP    0x0008          /* Dummy type for PPP MP frames */
69 #define ETH_P_LOCALTALK 0x0009		/* Localtalk pseudo type 	*/
70 #define ETH_P_PPPTALK	0x0010		/* Dummy type for Atalk over PPP*/
71 #define ETH_P_TR_802_2	0x0011		/* 802.2 frames 		*/
72 
73 /*
74  *	This is an Ethernet frame header.
75  */
76 
77 struct ethhdr
78 {
79   unsigned char	h_dest[ETH_ALEN];	/* destination eth addr	*/
80   unsigned char	h_source[ETH_ALEN];	/* source ether addr	*/
81   unsigned short int h_proto;		/* packet type ID field	*/
82 };
83 
84 #endif	/* net/if_ether.h */
85