Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
0002 /*
0003  * INET     An implementation of the TCP/IP protocol suite for the LINUX
0004  *      operating system.  INET is implemented using the  BSD Socket
0005  *      interface as the means of communication with the user level.
0006  *
0007  *      Global definitions for the Ethernet IEEE 802.3 interface.
0008  *
0009  * Version: @(#)if_ether.h  1.0.1a  02/08/94
0010  *
0011  * Author:  Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
0012  *      Donald Becker, <becker@super.org>
0013  *      Alan Cox, <alan@lxorguk.ukuu.org.uk>
0014  *      Steve Whitehouse, <gw7rrm@eeshack3.swan.ac.uk>
0015  *
0016  *      This program is free software; you can redistribute it and/or
0017  *      modify it under the terms of the GNU General Public License
0018  *      as published by the Free Software Foundation; either version
0019  *      2 of the License, or (at your option) any later version.
0020  */
0021 
0022 #ifndef _UAPI_LINUX_IF_ETHER_H
0023 #define _UAPI_LINUX_IF_ETHER_H
0024 
0025 #include <linux/types.h>
0026 
0027 /*
0028  *  IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
0029  *  and FCS/CRC (frame check sequence).
0030  */
0031 
0032 #define ETH_ALEN    6       /* Octets in one ethernet addr   */
0033 #define ETH_TLEN    2       /* Octets in ethernet type field */
0034 #define ETH_HLEN    14      /* Total octets in header.   */
0035 #define ETH_ZLEN    60      /* Min. octets in frame sans FCS */
0036 #define ETH_DATA_LEN    1500        /* Max. octets in payload    */
0037 #define ETH_FRAME_LEN   1514        /* Max. octets in frame sans FCS */
0038 #define ETH_FCS_LEN 4       /* Octets in the FCS         */
0039 
0040 #define ETH_MIN_MTU 68      /* Min IPv4 MTU per RFC791  */
0041 #define ETH_MAX_MTU 0xFFFFU     /* 65535, same as IP_MAX_MTU    */
0042 
0043 /*
0044  *  These are the defined Ethernet Protocol ID's.
0045  */
0046 
0047 #define ETH_P_LOOP  0x0060      /* Ethernet Loopback packet */
0048 #define ETH_P_PUP   0x0200      /* Xerox PUP packet     */
0049 #define ETH_P_PUPAT 0x0201      /* Xerox PUP Addr Trans packet  */
0050 #define ETH_P_TSN   0x22F0      /* TSN (IEEE 1722) packet   */
0051 #define ETH_P_ERSPAN2   0x22EB      /* ERSPAN version 2 (type III)  */
0052 #define ETH_P_IP    0x0800      /* Internet Protocol packet */
0053 #define ETH_P_X25   0x0805      /* CCITT X.25           */
0054 #define ETH_P_ARP   0x0806      /* Address Resolution packet    */
0055 #define ETH_P_BPQ   0x08FF      /* G8BPQ AX.25 Ethernet Packet  [ NOT AN OFFICIALLY REGISTERED ID ] */
0056 #define ETH_P_IEEEPUP   0x0a00      /* Xerox IEEE802.3 PUP packet */
0057 #define ETH_P_IEEEPUPAT 0x0a01      /* Xerox IEEE802.3 PUP Addr Trans packet */
0058 #define ETH_P_BATMAN    0x4305      /* B.A.T.M.A.N.-Advanced packet [ NOT AN OFFICIALLY REGISTERED ID ] */
0059 #define ETH_P_DEC       0x6000          /* DEC Assigned proto           */
0060 #define ETH_P_DNA_DL    0x6001          /* DEC DNA Dump/Load            */
0061 #define ETH_P_DNA_RC    0x6002          /* DEC DNA Remote Console       */
0062 #define ETH_P_DNA_RT    0x6003          /* DEC DNA Routing              */
0063 #define ETH_P_LAT       0x6004          /* DEC LAT                      */
0064 #define ETH_P_DIAG      0x6005          /* DEC Diagnostics              */
0065 #define ETH_P_CUST      0x6006          /* DEC Customer use             */
0066 #define ETH_P_SCA       0x6007          /* DEC Systems Comms Arch       */
0067 #define ETH_P_TEB   0x6558      /* Trans Ether Bridging     */
0068 #define ETH_P_RARP      0x8035      /* Reverse Addr Res packet  */
0069 #define ETH_P_ATALK 0x809B      /* Appletalk DDP        */
0070 #define ETH_P_AARP  0x80F3      /* Appletalk AARP       */
0071 #define ETH_P_8021Q 0x8100          /* 802.1Q VLAN Extended Header  */
0072 #define ETH_P_ERSPAN    0x88BE      /* ERSPAN type II       */
0073 #define ETH_P_IPX   0x8137      /* IPX over DIX         */
0074 #define ETH_P_IPV6  0x86DD      /* IPv6 over bluebook       */
0075 #define ETH_P_PAUSE 0x8808      /* IEEE Pause frames. See 802.3 31B */
0076 #define ETH_P_SLOW  0x8809      /* Slow Protocol. See 802.3ad 43B */
0077 #define ETH_P_WCCP  0x883E      /* Web-cache coordination protocol
0078                      * defined in draft-wilson-wrec-wccp-v2-00.txt */
0079 #define ETH_P_MPLS_UC   0x8847      /* MPLS Unicast traffic     */
0080 #define ETH_P_MPLS_MC   0x8848      /* MPLS Multicast traffic   */
0081 #define ETH_P_ATMMPOA   0x884c      /* MultiProtocol Over ATM   */
0082 #define ETH_P_PPP_DISC  0x8863      /* PPPoE discovery messages     */
0083 #define ETH_P_PPP_SES   0x8864      /* PPPoE session messages   */
0084 #define ETH_P_LINK_CTL  0x886c      /* HPNA, wlan link local tunnel */
0085 #define ETH_P_ATMFATE   0x8884      /* Frame-based ATM Transport
0086                      * over Ethernet
0087                      */
0088 #define ETH_P_PAE   0x888E      /* Port Access Entity (IEEE 802.1X) */
0089 #define ETH_P_PROFINET  0x8892      /* PROFINET         */
0090 #define ETH_P_REALTEK   0x8899          /* Multiple proprietary protocols */
0091 #define ETH_P_AOE   0x88A2      /* ATA over Ethernet        */
0092 #define ETH_P_ETHERCAT  0x88A4      /* EtherCAT         */
0093 #define ETH_P_8021AD    0x88A8          /* 802.1ad Service VLAN     */
0094 #define ETH_P_802_EX1   0x88B5      /* 802.1 Local Experimental 1.  */
0095 #define ETH_P_PREAUTH   0x88C7      /* 802.11 Preauthentication */
0096 #define ETH_P_TIPC  0x88CA      /* TIPC             */
0097 #define ETH_P_LLDP  0x88CC      /* Link Layer Discovery Protocol */
0098 #define ETH_P_MRP   0x88E3      /* Media Redundancy Protocol    */
0099 #define ETH_P_MACSEC    0x88E5      /* 802.1ae MACsec */
0100 #define ETH_P_8021AH    0x88E7          /* 802.1ah Backbone Service Tag */
0101 #define ETH_P_MVRP  0x88F5          /* 802.1Q MVRP                  */
0102 #define ETH_P_1588  0x88F7      /* IEEE 1588 Timesync */
0103 #define ETH_P_NCSI  0x88F8      /* NCSI protocol        */
0104 #define ETH_P_PRP   0x88FB      /* IEC 62439-3 PRP/HSRv0    */
0105 #define ETH_P_CFM   0x8902      /* Connectivity Fault Management */
0106 #define ETH_P_FCOE  0x8906      /* Fibre Channel over Ethernet  */
0107 #define ETH_P_IBOE  0x8915      /* Infiniband over Ethernet */
0108 #define ETH_P_TDLS  0x890D          /* TDLS */
0109 #define ETH_P_FIP   0x8914      /* FCoE Initialization Protocol */
0110 #define ETH_P_80221 0x8917      /* IEEE 802.21 Media Independent Handover Protocol */
0111 #define ETH_P_HSR   0x892F      /* IEC 62439-3 HSRv1    */
0112 #define ETH_P_NSH   0x894F      /* Network Service Header */
0113 #define ETH_P_LOOPBACK  0x9000      /* Ethernet loopback packet, per IEEE 802.3 */
0114 #define ETH_P_QINQ1 0x9100      /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
0115 #define ETH_P_QINQ2 0x9200      /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
0116 #define ETH_P_QINQ3 0x9300      /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
0117 #define ETH_P_EDSA  0xDADA      /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */
0118 #define ETH_P_DSA_8021Q 0xDADB      /* Fake VLAN Header for DSA [ NOT AN OFFICIALLY REGISTERED ID ] */
0119 #define ETH_P_DSA_A5PSW 0xE001      /* A5PSW Tag Value [ NOT AN OFFICIALLY REGISTERED ID ] */
0120 #define ETH_P_IFE   0xED3E      /* ForCES inter-FE LFB type */
0121 #define ETH_P_AF_IUCV   0xFBFB      /* IBM af_iucv [ NOT AN OFFICIALLY REGISTERED ID ] */
0122 
0123 #define ETH_P_802_3_MIN 0x0600      /* If the value in the ethernet type is more than this value
0124                      * then the frame is Ethernet II. Else it is 802.3 */
0125 
0126 /*
0127  *  Non DIX types. Won't clash for 1500 types.
0128  */
0129 
0130 #define ETH_P_802_3 0x0001      /* Dummy type for 802.3 frames  */
0131 #define ETH_P_AX25  0x0002      /* Dummy protocol id for AX.25  */
0132 #define ETH_P_ALL   0x0003      /* Every packet (be careful!!!) */
0133 #define ETH_P_802_2 0x0004      /* 802.2 frames         */
0134 #define ETH_P_SNAP  0x0005      /* Internal only        */
0135 #define ETH_P_DDCMP     0x0006          /* DEC DDCMP: Internal only     */
0136 #define ETH_P_WAN_PPP   0x0007          /* Dummy type for WAN PPP frames*/
0137 #define ETH_P_PPP_MP    0x0008          /* Dummy type for PPP MP frames */
0138 #define ETH_P_LOCALTALK 0x0009      /* Localtalk pseudo type    */
0139 #define ETH_P_CAN   0x000C      /* CAN: Controller Area Network */
0140 #define ETH_P_CANFD 0x000D      /* CANFD: CAN flexible data rate*/
0141 #define ETH_P_PPPTALK   0x0010      /* Dummy type for Atalk over PPP*/
0142 #define ETH_P_TR_802_2  0x0011      /* 802.2 frames         */
0143 #define ETH_P_MOBITEX   0x0015      /* Mobitex (kaz@cafe.net)   */
0144 #define ETH_P_CONTROL   0x0016      /* Card specific control frames */
0145 #define ETH_P_IRDA  0x0017      /* Linux-IrDA           */
0146 #define ETH_P_ECONET    0x0018      /* Acorn Econet         */
0147 #define ETH_P_HDLC  0x0019      /* HDLC frames          */
0148 #define ETH_P_ARCNET    0x001A      /* 1A for ArcNet :-)            */
0149 #define ETH_P_DSA   0x001B      /* Distributed Switch Arch. */
0150 #define ETH_P_TRAILER   0x001C      /* Trailer switch tagging   */
0151 #define ETH_P_PHONET    0x00F5      /* Nokia Phonet frames          */
0152 #define ETH_P_IEEE802154 0x00F6     /* IEEE802.15.4 frame       */
0153 #define ETH_P_CAIF  0x00F7      /* ST-Ericsson CAIF protocol    */
0154 #define ETH_P_XDSA  0x00F8      /* Multiplexed DSA protocol */
0155 #define ETH_P_MAP   0x00F9      /* Qualcomm multiplexing and
0156                      * aggregation protocol
0157                      */
0158 #define ETH_P_MCTP  0x00FA      /* Management component transport
0159                      * protocol packets
0160                      */
0161 
0162 /*
0163  *  This is an Ethernet frame header.
0164  */
0165 
0166 /* allow libcs like musl to deactivate this, glibc does not implement this. */
0167 #ifndef __UAPI_DEF_ETHHDR
0168 #define __UAPI_DEF_ETHHDR       1
0169 #endif
0170 
0171 #if __UAPI_DEF_ETHHDR
0172 struct ethhdr {
0173     unsigned char   h_dest[ETH_ALEN];   /* destination eth addr */
0174     unsigned char   h_source[ETH_ALEN]; /* source ether addr    */
0175     __be16      h_proto;        /* packet type ID field */
0176 } __attribute__((packed));
0177 #endif
0178 
0179 
0180 #endif /* _UAPI_LINUX_IF_ETHER_H */