iflib: Add subinterface interrupt allocation function
[freebsd.git] / sys / net / if_types.h
1 /*-
2  * SPDX-License-Identifier: BSD-3-Clause
3  *
4  * Copyright (c) 1989, 1993, 1994
5  *      The Regents of the University of California.  All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  * 3. Neither the name of the University nor the names of its contributors
16  *    may be used to endorse or promote products derived from this software
17  *    without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29  * SUCH DAMAGE.
30  * $NetBSD: if_types.h,v 1.16 2000/04/19 06:30:53 itojun Exp $
31  */
32
33 #ifndef _NET_IF_TYPES_H_
34 #define _NET_IF_TYPES_H_
35
36 /*
37  * Interface types for benefit of parsing media address headers.
38  * This list is derived from the SNMP list of ifTypes, originally
39  * documented in RFC1573, now maintained as:
40  *
41  *      http://www.iana.org/assignments/smi-numbers
42  */
43
44 typedef enum {
45         IFT_OTHER       = 0x1,          /* none of the following */
46         IFT_1822        = 0x2,          /* old-style arpanet imp */
47         IFT_HDH1822     = 0x3,          /* HDH arpanet imp */
48         IFT_X25DDN      = 0x4,          /* x25 to imp */
49         IFT_X25         = 0x5,          /* PDN X25 interface (RFC877) */
50         IFT_ETHER       = 0x6,          /* Ethernet CSMA/CD */
51         IFT_ISO88023    = 0x7,          /* CMSA/CD */
52         IFT_ISO88024    = 0x8,          /* Token Bus */
53         IFT_ISO88025    = 0x9,          /* Token Ring */
54         IFT_ISO88026    = 0xa,          /* MAN */
55         IFT_STARLAN     = 0xb,
56         IFT_P10         = 0xc,          /* Proteon 10MBit ring */
57         IFT_P80         = 0xd,          /* Proteon 80MBit ring */
58         IFT_HY          = 0xe,          /* Hyperchannel */
59         IFT_FDDI        = 0xf,
60         IFT_LAPB        = 0x10,
61         IFT_SDLC        = 0x11,
62         IFT_T1          = 0x12,
63         IFT_CEPT        = 0x13,         /* E1 - european T1 */
64         IFT_ISDNBASIC   = 0x14,
65         IFT_ISDNPRIMARY = 0x15,
66         IFT_PTPSERIAL   = 0x16,         /* Proprietary PTP serial */
67         IFT_PPP         = 0x17,         /* RFC 1331 */
68         IFT_LOOP        = 0x18,         /* loopback */
69         IFT_EON         = 0x19,         /* ISO over IP */
70         IFT_XETHER      = 0x1a,         /* obsolete 3MB experimental ethernet */
71         IFT_NSIP        = 0x1b,         /* XNS over IP */
72         IFT_SLIP        = 0x1c,         /* IP over generic TTY */
73         IFT_ULTRA       = 0x1d,         /* Ultra Technologies */
74         IFT_DS3         = 0x1e,         /* Generic T3 */
75         IFT_SIP         = 0x1f,         /* SMDS */
76         IFT_FRELAY      = 0x20,         /* Frame Relay DTE only */
77         IFT_RS232       = 0x21,
78         IFT_PARA        = 0x22,         /* parallel-port */
79         IFT_ARCNET      = 0x23,
80         IFT_ARCNETPLUS  = 0x24,
81         IFT_ATM         = 0x25,         /* ATM cells */
82         IFT_MIOX25      = 0x26,
83         IFT_SONET       = 0x27,         /* SONET or SDH */
84         IFT_X25PLE      = 0x28,
85         IFT_ISO88022LLC = 0x29,
86         IFT_LOCALTALK   = 0x2a,
87         IFT_SMDSDXI     = 0x2b,
88         IFT_FRELAYDCE   = 0x2c,         /* Frame Relay DCE */
89         IFT_V35         = 0x2d,
90         IFT_HSSI        = 0x2e,
91         IFT_HIPPI       = 0x2f,
92         IFT_MODEM       = 0x30,         /* Generic Modem */
93         IFT_AAL5        = 0x31,         /* AAL5 over ATM */
94         IFT_SONETPATH   = 0x32,
95         IFT_SONETVT     = 0x33,
96         IFT_SMDSICIP    = 0x34,         /* SMDS InterCarrier Interface */
97         IFT_PROPVIRTUAL = 0x35,         /* Proprietary Virtual/internal */
98         IFT_PROPMUX     = 0x36,         /* Proprietary Multiplexing */
99         IFT_IEEE80212   = 0x37,         /* 100BaseVG */
100         IFT_FIBRECHANNEL = 0x38,        /* Fibre Channel */
101         IFT_HIPPIINTERFACE = 0x39,      /* HIPPI interfaces      */
102         IFT_FRAMERELAYINTERCONNECT = 0x3a, /* Obsolete, use 0x20 either 0x2c */
103         IFT_AFLANE8023  = 0x3b,         /* ATM Emulated LAN for 802.3 */
104         IFT_AFLANE8025  = 0x3c,         /* ATM Emulated LAN for 802.5 */
105         IFT_CCTEMUL     = 0x3d,         /* ATM Emulated circuit           */
106         IFT_FASTETHER   = 0x3e,         /* Fast Ethernet (100BaseT) */
107         IFT_ISDN        = 0x3f,         /* ISDN and X.25            */
108         IFT_V11         = 0x40,         /* CCITT V.11/X.21              */
109         IFT_V36         = 0x41,         /* CCITT V.36                   */
110         IFT_G703AT64K   = 0x42,         /* CCITT G703 at 64Kbps */
111         IFT_G703AT2MB   = 0x43,         /* Obsolete see DS1-MIB */
112         IFT_QLLC        = 0x44,         /* SNA QLLC                     */
113         IFT_FASTETHERFX = 0x45,         /* Fast Ethernet (100BaseFX)    */
114         IFT_CHANNEL     = 0x46,         /* channel                      */
115         IFT_IEEE80211   = 0x47,         /* radio spread spectrum (unused) */
116         IFT_IBM370PARCHAN = 0x48,       /* IBM System 360/370 OEMI Channel */
117         IFT_ESCON       = 0x49,         /* IBM Enterprise Systems Connection */
118         IFT_DLSW        = 0x4a,         /* Data Link Switching */
119         IFT_ISDNS       = 0x4b,         /* ISDN S/T interface */
120         IFT_ISDNU       = 0x4c,         /* ISDN U interface */
121         IFT_LAPD        = 0x4d,         /* Link Access Protocol D */
122         IFT_IPSWITCH    = 0x4e,         /* IP Switching Objects */
123         IFT_RSRB        = 0x4f,         /* Remote Source Route Bridging */
124         IFT_ATMLOGICAL  = 0x50,         /* ATM Logical Port */
125         IFT_DS0         = 0x51,         /* Digital Signal Level 0 */
126         IFT_DS0BUNDLE   = 0x52,         /* group of ds0s on the same ds1 */
127         IFT_BSC         = 0x53,         /* Bisynchronous Protocol */
128         IFT_ASYNC       = 0x54,         /* Asynchronous Protocol */
129         IFT_CNR         = 0x55,         /* Combat Net Radio */
130         IFT_ISO88025DTR = 0x56,         /* ISO 802.5r DTR */
131         IFT_EPLRS       = 0x57,         /* Ext Pos Loc Report Sys */
132         IFT_ARAP        = 0x58,         /* Appletalk Remote Access Protocol */
133         IFT_PROPCNLS    = 0x59,         /* Proprietary Connectionless Protocol*/
134         IFT_HOSTPAD     = 0x5a,         /* CCITT-ITU X.29 PAD Protocol */
135         IFT_TERMPAD     = 0x5b,         /* CCITT-ITU X.3 PAD Facility */
136         IFT_FRAMERELAYMPI = 0x5c,       /* Multiproto Interconnect over FR */
137         IFT_X213        = 0x5d,         /* CCITT-ITU X213 */
138         IFT_ADSL        = 0x5e,         /* Asymmetric Digital Subscriber Loop */
139         IFT_RADSL       = 0x5f,         /* Rate-Adapt. Digital Subscriber Loop*/
140         IFT_SDSL        = 0x60,         /* Symmetric Digital Subscriber Loop */
141         IFT_VDSL        = 0x61,         /* Very H-Speed Digital Subscrib. Loop*/
142         IFT_ISO88025CRFPINT = 0x62,     /* ISO 802.5 CRFP */
143         IFT_MYRINET     = 0x63,         /* Myricom Myrinet */
144         IFT_VOICEEM     = 0x64,         /* voice recEive and transMit */
145         IFT_VOICEFXO    = 0x65,         /* voice Foreign Exchange Office */
146         IFT_VOICEFXS    = 0x66,         /* voice Foreign Exchange Station */
147         IFT_VOICEENCAP  = 0x67,         /* voice encapsulation */
148         IFT_VOICEOVERIP = 0x68,         /* voice over IP encapsulation */
149         IFT_ATMDXI      = 0x69,         /* ATM DXI */
150         IFT_ATMFUNI     = 0x6a,         /* ATM FUNI */
151         IFT_ATMIMA      = 0x6b,         /* ATM IMA                    */
152         IFT_PPPMULTILINKBUNDLE = 0x6c,  /* PPP Multilink Bundle */
153         IFT_IPOVERCDLC  = 0x6d,         /* IBM ipOverCdlc */
154         IFT_IPOVERCLAW  = 0x6e,         /* IBM Common Link Access to Workstn */
155         IFT_STACKTOSTACK = 0x6f,        /* IBM stackToStack */
156         IFT_VIRTUALIPADDRESS = 0x70,    /* IBM VIPA */
157         IFT_MPC         = 0x71,         /* IBM multi-protocol channel support */
158         IFT_IPOVERATM   = 0x72,         /* IBM ipOverAtm */
159         IFT_ISO88025FIBER = 0x73,       /* ISO 802.5j Fiber Token Ring */
160         IFT_TDLC        = 0x74,         /* IBM twinaxial data link control */
161         IFT_GIGABITETHERNET = 0x75,     /* Gigabit Ethernet */
162         IFT_HDLC        = 0x76,         /* HDLC */
163         IFT_LAPF        = 0x77,         /* LAP F */
164         IFT_V37         = 0x78,         /* V.37 */
165         IFT_X25MLP      = 0x79,         /* Multi-Link Protocol */
166         IFT_X25HUNTGROUP = 0x7a,        /* X25 Hunt Group */
167         IFT_TRANSPHDLC  = 0x7b,         /* Transp HDLC */
168         IFT_INTERLEAVE  = 0x7c,         /* Interleave channel */
169         IFT_FAST        = 0x7d,         /* Fast channel */
170         IFT_IP          = 0x7e,         /* IP (for APPN HPR in IP networks) */
171         IFT_DOCSCABLEMACLAYER = 0x7f,   /* CATV Mac Layer */
172         IFT_DOCSCABLEDOWNSTREAM = 0x80, /* CATV Downstream interface */
173         IFT_DOCSCABLEUPSTREAM = 0x81,   /* CATV Upstream interface */
174         IFT_A12MPPSWITCH = 0x82,        /* Avalon Parallel Processor */
175         IFT_TUNNEL      = 0x83,         /* Encapsulation interface */
176         IFT_COFFEE      = 0x84,         /* coffee pot */
177         IFT_CES         = 0x85,         /* Circiut Emulation Service */
178         IFT_ATMSUBINTERFACE = 0x86,     /* (x)  ATM Sub Interface */
179         IFT_L2VLAN      = 0x87,         /* Layer 2 Virtual LAN using 802.1Q */
180         IFT_L3IPVLAN    = 0x88,         /* Layer 3 Virtual LAN - IP Protocol */
181         IFT_L3IPXVLAN   = 0x89,         /* Layer 3 Virtual LAN - IPX Prot. */
182         IFT_DIGITALPOWERLINE = 0x8a,    /* IP over Power Lines */
183         IFT_MEDIAMAILOVERIP = 0x8b,     /* (xxx)  Multimedia Mail over IP */
184         IFT_DTM         = 0x8c,         /* Dynamic synchronous Transfer Mode */
185         IFT_DCN         = 0x8d,         /* Data Communications Network */
186         IFT_IPFORWARD   = 0x8e,         /* IP Forwarding Interface */
187         IFT_MSDSL       = 0x8f,         /* Multi-rate Symmetric DSL */
188         IFT_IEEE1394    = 0x90,         /* IEEE1394 High Performance SerialBus*/
189         IFT_IFGSN       = 0x91,         /* HIPPI-6400 */
190         IFT_DVBRCCMACLAYER = 0x92,      /* DVB-RCC MAC Layer */
191         IFT_DVBRCCDOWNSTREAM = 0x93,    /* DVB-RCC Downstream Channel */
192         IFT_DVBRCCUPSTREAM = 0x94,      /* DVB-RCC Upstream Channel */
193         IFT_ATMVIRTUAL  = 0x95,         /* ATM Virtual Interface */
194         IFT_MPLSTUNNEL  = 0x96,         /* MPLS Tunnel Virtual Interface */
195         IFT_SRP         = 0x97,         /* Spatial Reuse Protocol */
196         IFT_VOICEOVERATM = 0x98,        /* Voice over ATM */
197         IFT_VOICEOVERFRAMERELAY = 0x99, /* Voice Over Frame Relay */
198         IFT_IDSL        = 0x9a,         /* Digital Subscriber Loop over ISDN */
199         IFT_COMPOSITELINK = 0x9b,       /* Avici Composite Link Interface */
200         IFT_SS7SIGLINK  = 0x9c,         /* SS7 Signaling Link */
201         IFT_PROPWIRELESSP2P = 0x9d,     /* Prop. P2P wireless interface */
202         IFT_FRFORWARD   = 0x9e,         /* Frame forward Interface */
203         IFT_RFC1483     = 0x9f,         /* Multiprotocol over ATM AAL5 */
204         IFT_USB         = 0xa0,         /* USB Interface */
205         IFT_IEEE8023ADLAG = 0xa1,       /* IEEE 802.3ad Link Aggregate*/
206         IFT_BGPPOLICYACCOUNTING = 0xa2, /* BGP Policy Accounting */
207         IFT_FRF16MFRBUNDLE = 0xa3,      /* FRF.16 Multilink Frame Relay*/
208         IFT_H323GATEKEEPER = 0xa4,      /* H323 Gatekeeper */
209         IFT_H323PROXY   = 0xa5,         /* H323 Voice and Video Proxy */
210         IFT_MPLS        = 0xa6,         /* MPLS */
211         IFT_MFSIGLINK   = 0xa7,         /* Multi-frequency signaling link */
212         IFT_HDSL2       = 0xa8,         /* High Bit-Rate DSL, 2nd gen. */
213         IFT_SHDSL       = 0xa9,         /* Multirate HDSL2 */
214         IFT_DS1FDL      = 0xaa,         /* Facility Data Link (4Kbps) on a DS1*/
215         IFT_POS         = 0xab,         /* Packet over SONET/SDH Interface */
216         IFT_DVBASILN    = 0xac,         /* DVB-ASI Input */
217         IFT_DVBASIOUT   = 0xad,         /* DVB-ASI Output */
218         IFT_PLC         = 0xae,         /* Power Line Communications */
219         IFT_NFAS        = 0xaf,         /* Non-Facility Associated Signaling */
220         IFT_TR008       = 0xb0,         /* TROO8 */
221         IFT_GR303RDT    = 0xb1,         /* Remote Digital Terminal */
222         IFT_GR303IDT    = 0xb2,         /* Integrated Digital Terminal */
223         IFT_ISUP        = 0xb3,         /* ISUP */
224         IFT_PROPDOCSWIRELESSMACLAYER = 0xb4,    /* prop/Wireless MAC Layer */
225         IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5,  /* prop/Wireless Downstream */
226         IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6,    /* prop/Wireless Upstream */
227         IFT_HIPERLAN2   = 0xb7,         /* HIPERLAN Type 2 Radio Interface */
228         IFT_PROPBWAP2MP = 0xb8,         /* PropBroadbandWirelessAccess P2MP*/
229         IFT_SONETOVERHEADCHANNEL = 0xb9, /* SONET Overhead Channel */
230         IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba, /* Digital Wrapper Overhead */
231         IFT_AAL2        = 0xbb,         /* ATM adaptation layer 2 */
232         IFT_RADIOMAC    = 0xbc,         /* MAC layer over radio links */
233         IFT_ATMRADIO    = 0xbd,         /* ATM over radio links */
234         IFT_IMT         = 0xbe,         /* Inter-Machine Trunks */
235         IFT_MVL         = 0xbf,         /* Multiple Virtual Lines DSL */
236         IFT_REACHDSL    = 0xc0,         /* Long Reach DSL */
237         IFT_FRDLCIENDPT = 0xc1,         /* Frame Relay DLCI End Point */
238         IFT_ATMVCIENDPT = 0xc2,         /* ATM VCI End Point */
239         IFT_OPTICALCHANNEL = 0xc3,      /* Optical Channel */
240         IFT_OPTICALTRANSPORT = 0xc4,    /* Optical Transport */
241         IFT_INFINIBAND  = 0xc7,         /* Infiniband */
242         IFT_INFINIBANDLAG = 0xc8,       /* Infiniband Link Aggregate */
243         IFT_BRIDGE      = 0xd1,         /* Transparent bridge interface */
244         IFT_STF         = 0xd7,         /* 6to4 interface */
245
246         /*
247          * Not based on IANA assignments.  Conflicting with IANA assignments.
248          * We should make them negative probably.
249          * This requires changes to struct if_data.
250          */
251         IFT_GIF         = 0xf0,         /* Generic tunnel interface */
252         IFT_PVC         = 0xf1,         /* Unused */
253         IFT_ENC         = 0xf4,         /* Encapsulating interface */
254         IFT_PFLOG       = 0xf6,         /* PF packet filter logging */
255         IFT_PFSYNC      = 0xf7,         /* PF packet filter synchronization */
256         IFT_WIREGUARD   = 0xf8,         /* WireGuard tunnel */
257 } ifType;
258
259 /*
260  * Some (broken) software uses #ifdef IFT_TYPE to check whether
261  * an operating systems supports certain interface type.  Lack of
262  * ifdef leads to a piece of functionality compiled out.
263  */
264 #ifndef BURN_BRIDGES
265 #define IFT_BRIDGE      IFT_BRIDGE
266 #define IFT_PPP         IFT_PPP
267 #define IFT_PROPVIRTUAL IFT_PROPVIRTUAL
268 #define IFT_L2VLAN      IFT_L2VLAN
269 #define IFT_L3IPVLAN    IFT_L3IPVLAN
270 #define IFT_IEEE1394    IFT_IEEE1394
271 #define IFT_INFINIBAND  IFT_INFINIBAND
272 #endif
273
274 #endif /* !_NET_IF_TYPES_H_ */