xref: /xnu-10002.41.9/bsd/net/if_mib.h (revision 699cd48037512bf4380799317ca44ca453c82f57)
1*699cd480SApple OSS Distributions /*
2*699cd480SApple OSS Distributions  * Copyright (c) 2000-2019 Apple Inc. All rights reserved.
3*699cd480SApple OSS Distributions  *
4*699cd480SApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5*699cd480SApple OSS Distributions  *
6*699cd480SApple OSS Distributions  * This file contains Original Code and/or Modifications of Original Code
7*699cd480SApple OSS Distributions  * as defined in and that are subject to the Apple Public Source License
8*699cd480SApple OSS Distributions  * Version 2.0 (the 'License'). You may not use this file except in
9*699cd480SApple OSS Distributions  * compliance with the License. The rights granted to you under the License
10*699cd480SApple OSS Distributions  * may not be used to create, or enable the creation or redistribution of,
11*699cd480SApple OSS Distributions  * unlawful or unlicensed copies of an Apple operating system, or to
12*699cd480SApple OSS Distributions  * circumvent, violate, or enable the circumvention or violation of, any
13*699cd480SApple OSS Distributions  * terms of an Apple operating system software license agreement.
14*699cd480SApple OSS Distributions  *
15*699cd480SApple OSS Distributions  * Please obtain a copy of the License at
16*699cd480SApple OSS Distributions  * http://www.opensource.apple.com/apsl/ and read it before using this file.
17*699cd480SApple OSS Distributions  *
18*699cd480SApple OSS Distributions  * The Original Code and all software distributed under the License are
19*699cd480SApple OSS Distributions  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20*699cd480SApple OSS Distributions  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21*699cd480SApple OSS Distributions  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22*699cd480SApple OSS Distributions  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23*699cd480SApple OSS Distributions  * Please see the License for the specific language governing rights and
24*699cd480SApple OSS Distributions  * limitations under the License.
25*699cd480SApple OSS Distributions  *
26*699cd480SApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27*699cd480SApple OSS Distributions  */
28*699cd480SApple OSS Distributions /*
29*699cd480SApple OSS Distributions  * Copyright 1996 Massachusetts Institute of Technology
30*699cd480SApple OSS Distributions  *
31*699cd480SApple OSS Distributions  * Permission to use, copy, modify, and distribute this software and
32*699cd480SApple OSS Distributions  * its documentation for any purpose and without fee is hereby
33*699cd480SApple OSS Distributions  * granted, provided that both the above copyright notice and this
34*699cd480SApple OSS Distributions  * permission notice appear in all copies, that both the above
35*699cd480SApple OSS Distributions  * copyright notice and this permission notice appear in all
36*699cd480SApple OSS Distributions  * supporting documentation, and that the name of M.I.T. not be used
37*699cd480SApple OSS Distributions  * in advertising or publicity pertaining to distribution of the
38*699cd480SApple OSS Distributions  * software without specific, written prior permission.  M.I.T. makes
39*699cd480SApple OSS Distributions  * no representations about the suitability of this software for any
40*699cd480SApple OSS Distributions  * purpose.  It is provided "as is" without express or implied
41*699cd480SApple OSS Distributions  * warranty.
42*699cd480SApple OSS Distributions  *
43*699cd480SApple OSS Distributions  * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''.  M.I.T. DISCLAIMS
44*699cd480SApple OSS Distributions  * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
45*699cd480SApple OSS Distributions  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
46*699cd480SApple OSS Distributions  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
47*699cd480SApple OSS Distributions  * SHALL M.I.T. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
48*699cd480SApple OSS Distributions  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
49*699cd480SApple OSS Distributions  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
50*699cd480SApple OSS Distributions  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51*699cd480SApple OSS Distributions  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
52*699cd480SApple OSS Distributions  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53*699cd480SApple OSS Distributions  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
54*699cd480SApple OSS Distributions  * SUCH DAMAGE.
55*699cd480SApple OSS Distributions  *
56*699cd480SApple OSS Distributions  * $FreeBSD: src/sys/net/if_mib.h,v 1.6 1999/08/28 00:48:19 peter Exp $
57*699cd480SApple OSS Distributions  */
58*699cd480SApple OSS Distributions 
59*699cd480SApple OSS Distributions #ifndef _NET_IF_MIB_H
60*699cd480SApple OSS Distributions #define _NET_IF_MIB_H   1
61*699cd480SApple OSS Distributions #include <net/if_var.h>
62*699cd480SApple OSS Distributions #include <sys/appleapiopts.h>
63*699cd480SApple OSS Distributions #include <sys/types.h>
64*699cd480SApple OSS Distributions 
65*699cd480SApple OSS Distributions struct ifmibdata {
66*699cd480SApple OSS Distributions 	char                            ifmd_name[IFNAMSIZ]; /* name of interface */
67*699cd480SApple OSS Distributions 	unsigned int            ifmd_pcount;    /* number of promiscuous listeners */
68*699cd480SApple OSS Distributions 	unsigned int            ifmd_flags;     /* interface flags */
69*699cd480SApple OSS Distributions 	unsigned int            ifmd_snd_len;   /* instantaneous length of send queue */
70*699cd480SApple OSS Distributions 	unsigned int            ifmd_snd_maxlen; /* maximum length of send queue */
71*699cd480SApple OSS Distributions 	unsigned int            ifmd_snd_drops; /* number of drops in send queue */
72*699cd480SApple OSS Distributions 	unsigned int            ifmd_filler[4]; /* for future expansion */
73*699cd480SApple OSS Distributions 	struct if_data64        ifmd_data; /* generic information and statistics */
74*699cd480SApple OSS Distributions };
75*699cd480SApple OSS Distributions 
76*699cd480SApple OSS Distributions #ifdef PRIVATE
77*699cd480SApple OSS Distributions struct ifmibdata_supplemental {
78*699cd480SApple OSS Distributions 	struct if_traffic_class ifmd_traffic_class;
79*699cd480SApple OSS Distributions 	struct if_data_extended ifmd_data_extended;
80*699cd480SApple OSS Distributions 	struct if_packet_stats  ifmd_packet_stats;
81*699cd480SApple OSS Distributions 	struct if_rxpoll_stats  ifmd_rxpoll_stats;
82*699cd480SApple OSS Distributions 	struct if_netif_stats   ifmd_netif_stats;
83*699cd480SApple OSS Distributions };
84*699cd480SApple OSS Distributions #endif /* PRIVATE */
85*699cd480SApple OSS Distributions 
86*699cd480SApple OSS Distributions /*
87*699cd480SApple OSS Distributions  * sysctl MIB tags at the net.link.generic level
88*699cd480SApple OSS Distributions  */
89*699cd480SApple OSS Distributions #define IFMIB_SYSTEM    1       /* non-interface-specific */
90*699cd480SApple OSS Distributions #define IFMIB_IFDATA    2       /* per-interface data table */
91*699cd480SApple OSS Distributions #define IFMIB_IFALLDATA 3       /* all interfaces data at once */
92*699cd480SApple OSS Distributions 
93*699cd480SApple OSS Distributions /*
94*699cd480SApple OSS Distributions  * MIB tags for the various net.link.generic.ifdata tables
95*699cd480SApple OSS Distributions  */
96*699cd480SApple OSS Distributions #define IFDATA_GENERAL          1       /* generic stats for all kinds of ifaces */
97*699cd480SApple OSS Distributions #define IFDATA_LINKSPECIFIC     2       /* specific to the type of interface */
98*699cd480SApple OSS Distributions #define IFDATA_ADDRS            3       /* addresses assigned to interface */
99*699cd480SApple OSS Distributions #define IFDATA_MULTIADDRS       4       /* multicast addresses assigned to interface */
100*699cd480SApple OSS Distributions #ifdef PRIVATE
101*699cd480SApple OSS Distributions #define IFDATA_SUPPLEMENTAL     5       /* supplemental link specific stats */
102*699cd480SApple OSS Distributions #endif /* PRIVATE */
103*699cd480SApple OSS Distributions 
104*699cd480SApple OSS Distributions /*
105*699cd480SApple OSS Distributions  * MIB tags at the net.link.generic.system level
106*699cd480SApple OSS Distributions  */
107*699cd480SApple OSS Distributions #define IFMIB_IFCOUNT   1       /* number of interfaces configured */
108*699cd480SApple OSS Distributions 
109*699cd480SApple OSS Distributions /*
110*699cd480SApple OSS Distributions  * MIB tags as the net.link level
111*699cd480SApple OSS Distributions  * All of the other values are IFT_* names defined in if_types.h.
112*699cd480SApple OSS Distributions  */
113*699cd480SApple OSS Distributions #define NETLINK_GENERIC 0       /* functions not specific to a type of iface */
114*699cd480SApple OSS Distributions 
115*699cd480SApple OSS Distributions /*
116*699cd480SApple OSS Distributions  * The reason why the IFDATA_LINKSPECIFIC stuff is not under the
117*699cd480SApple OSS Distributions  * net.link.<iftype> branches is twofold:
118*699cd480SApple OSS Distributions  *   1) It's easier to code this way, and doesn't require duplication.
119*699cd480SApple OSS Distributions  *   2) The fourth level under net.link.<iftype> is <pf>; that is to say,
120*699cd480SApple OSS Distributions  *	the net.link.<iftype> tree instruments the adaptation layers between
121*699cd480SApple OSS Distributions  *	<iftype> and a particular protocol family (e.g., net.link.ether.inet
122*699cd480SApple OSS Distributions  *	instruments ARP).  This does not really leave room for anything else
123*699cd480SApple OSS Distributions  *	that needs to have a well-known number.
124*699cd480SApple OSS Distributions  */
125*699cd480SApple OSS Distributions 
126*699cd480SApple OSS Distributions /*
127*699cd480SApple OSS Distributions  * Link-specific MIB structures for various link types.
128*699cd480SApple OSS Distributions  */
129*699cd480SApple OSS Distributions 
130*699cd480SApple OSS Distributions /* For IFT_ETHER, IFT_ISO88023, and IFT_STARLAN, as used by RFC 1650 */
131*699cd480SApple OSS Distributions struct ifs_iso_8802_3 {
132*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsAlignmentErrors;
133*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsFCSErrors;
134*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsSingleCollisionFrames;
135*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsMultipleCollisionFrames;
136*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsSQETestErrors;
137*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsDeferredTransmissions;
138*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsLateCollisions;
139*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsExcessiveCollisions;
140*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsInternalMacTransmitErrors;
141*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsCarrierSenseErrors;
142*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsFrameTooLongs;
143*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsInternalMacReceiveErrors;
144*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsEtherChipSet;
145*699cd480SApple OSS Distributions 	/* Matt Thomas wants this one, not included in RFC 1650: */
146*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsMissedFrames;
147*699cd480SApple OSS Distributions 
148*699cd480SApple OSS Distributions 	u_int32_t       dot3StatsCollFrequencies[16]; /* NB: index origin */
149*699cd480SApple OSS Distributions 
150*699cd480SApple OSS Distributions 	u_int32_t       dot3Compliance;
151*699cd480SApple OSS Distributions #define DOT3COMPLIANCE_STATS    1
152*699cd480SApple OSS Distributions #define DOT3COMPLIANCE_COLLS    2
153*699cd480SApple OSS Distributions };
154*699cd480SApple OSS Distributions 
155*699cd480SApple OSS Distributions /*
156*699cd480SApple OSS Distributions  * Chipset identifiers are normally part of the vendor's enterprise MIB.
157*699cd480SApple OSS Distributions  * However, we don't want to be trying to represent arbitrary-length
158*699cd480SApple OSS Distributions  * OBJECT IDENTIFIERs here (ick!), and the right value is not necessarily
159*699cd480SApple OSS Distributions  * obvious to the driver implementor.  So, we define our own identification
160*699cd480SApple OSS Distributions  * mechanism here, and let the agent writer deal with the translation.
161*699cd480SApple OSS Distributions  */
162*699cd480SApple OSS Distributions #define DOT3CHIPSET_VENDOR(x)   ((x) >> 16)
163*699cd480SApple OSS Distributions #define DOT3CHIPSET_PART(x)     ((x) & 0xffff)
164*699cd480SApple OSS Distributions #define DOT3CHIPSET(v, p)        (((v) << 16) + ((p) & 0xffff))
165*699cd480SApple OSS Distributions 
166*699cd480SApple OSS Distributions /* Driver writers!  Add your vendors here! */
167*699cd480SApple OSS Distributions enum dot3Vendors {
168*699cd480SApple OSS Distributions 	dot3VendorAMD = 1,
169*699cd480SApple OSS Distributions 	dot3VendorIntel = 2,
170*699cd480SApple OSS Distributions 	dot3VendorNational = 4,
171*699cd480SApple OSS Distributions 	dot3VendorFujitsu = 5,
172*699cd480SApple OSS Distributions 	dot3VendorDigital = 6,
173*699cd480SApple OSS Distributions 	dot3VendorWesternDigital = 7
174*699cd480SApple OSS Distributions };
175*699cd480SApple OSS Distributions 
176*699cd480SApple OSS Distributions /* Driver writers!  Add your chipsets here! */
177*699cd480SApple OSS Distributions enum {
178*699cd480SApple OSS Distributions 	dot3ChipSetAMD7990 = 1,
179*699cd480SApple OSS Distributions 	dot3ChipSetAMD79900 = 2,
180*699cd480SApple OSS Distributions 	dot3ChipSetAMD79C940 = 3
181*699cd480SApple OSS Distributions };
182*699cd480SApple OSS Distributions 
183*699cd480SApple OSS Distributions enum {
184*699cd480SApple OSS Distributions 	dot3ChipSetIntel82586 = 1,
185*699cd480SApple OSS Distributions 	dot3ChipSetIntel82596 = 2,
186*699cd480SApple OSS Distributions 	dot3ChipSetIntel82557 = 3
187*699cd480SApple OSS Distributions };
188*699cd480SApple OSS Distributions 
189*699cd480SApple OSS Distributions enum {
190*699cd480SApple OSS Distributions 	dot3ChipSetNational8390 = 1,
191*699cd480SApple OSS Distributions 	dot3ChipSetNationalSonic = 2
192*699cd480SApple OSS Distributions };
193*699cd480SApple OSS Distributions 
194*699cd480SApple OSS Distributions enum {
195*699cd480SApple OSS Distributions 	dot3ChipSetFujitsu86950 = 1
196*699cd480SApple OSS Distributions };
197*699cd480SApple OSS Distributions 
198*699cd480SApple OSS Distributions enum {
199*699cd480SApple OSS Distributions 	dot3ChipSetDigitalDC21040 = 1,
200*699cd480SApple OSS Distributions 	dot3ChipSetDigitalDC21140 = 2,
201*699cd480SApple OSS Distributions 	dot3ChipSetDigitalDC21041 = 3,
202*699cd480SApple OSS Distributions 	dot3ChipSetDigitalDC21140A = 4,
203*699cd480SApple OSS Distributions 	dot3ChipSetDigitalDC21142 = 5
204*699cd480SApple OSS Distributions };
205*699cd480SApple OSS Distributions 
206*699cd480SApple OSS Distributions enum {
207*699cd480SApple OSS Distributions 	dot3ChipSetWesternDigital83C690 = 1,
208*699cd480SApple OSS Distributions 	dot3ChipSetWesternDigital83C790 = 2
209*699cd480SApple OSS Distributions };
210*699cd480SApple OSS Distributions /* END of Ethernet-link MIB stuff */
211*699cd480SApple OSS Distributions 
212*699cd480SApple OSS Distributions /*
213*699cd480SApple OSS Distributions  * Put other types of interface MIBs here, or in interface-specific
214*699cd480SApple OSS Distributions  * header files if convenient ones already exist.
215*699cd480SApple OSS Distributions  */
216*699cd480SApple OSS Distributions 
217*699cd480SApple OSS Distributions /*
218*699cd480SApple OSS Distributions  * Structure for interface family ID table
219*699cd480SApple OSS Distributions  */
220*699cd480SApple OSS Distributions 
221*699cd480SApple OSS Distributions struct if_family_id {
222*699cd480SApple OSS Distributions 	u_int32_t               iffmid_len;
223*699cd480SApple OSS Distributions 	u_int32_t               iffmid_id;
224*699cd480SApple OSS Distributions 	char                    iffmid_str[1];  /* variable length string */
225*699cd480SApple OSS Distributions };
226*699cd480SApple OSS Distributions 
227*699cd480SApple OSS Distributions 
228*699cd480SApple OSS Distributions #endif /* _NET_IF_MIB_H */
229