1.\" Copyright 1996 Massachusetts Institute of Technology 2.\" 3.\" Permission to use, copy, modify, and distribute this software and 4.\" its documentation for any purpose and without fee is hereby 5.\" granted, provided that both the above copyright notice and this 6.\" permission notice appear in all copies, that both the above 7.\" copyright notice and this permission notice appear in all 8.\" supporting documentation, and that the name of M.I.T. not be used 9.\" in advertising or publicity pertaining to distribution of the 10.\" software without specific, written prior permission. M.I.T. makes 11.\" no representations about the suitability of this software for any 12.\" purpose. It is provided "as is" without express or implied 13.\" warranty. 14.\" 15.\" THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS 16.\" ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE, 17.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT 19.\" SHALL M.I.T. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 21.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 22.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 25.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26.\" SUCH DAMAGE. 27.\" 28.\" $FreeBSD: src/share/man/man4/ifmib.4,v 1.8.2.6 2002/10/10 18:21:41 johan Exp $ 29.\" $DragonFly: src/share/man/man4/ifmib.4,v 1.2 2003/06/17 04:36:59 dillon Exp $ 30.\" 31.Dd November 15, 1996 32.Dt IFMIB 4 33.Os 34.Sh NAME 35.Nm ifmib 36.Nd Management Information Base for network interfaces 37.Sh SYNOPSIS 38.In sys/types.h 39.In sys/socket.h 40.In sys/sysctl.h 41.In sys/time.h 42.In net/if.h 43.In net/if_mib.h 44.Sh DESCRIPTION 45The 46.Nm 47facility is an application of the 48.Xr sysctl 3 49interface to provide management information about network interfaces 50to client applications such as 51.Xr netstat 1 , 52.Xr slstat 8 , 53and 54.Tn SNMP 55management agents. This information is structured as a table, where 56each row in the table represents a logical network interface (either a 57hardware device or a software pseudo-device like 58.Xr lo 4 ) . 59There are two columns in the table, each containing a single 60structure: one column contains generic information relevant to all 61interfaces, and the other contains information specific to the 62particular class of interface. (Generally the latter will implement 63the 64.Tn SNMP 65.Tn MIB 66defined for that particular interface class, if one exists and can be 67implemented in the kernel.) 68.Pp 69The 70.Nm 71facility is accessed via the 72.Dq Li net.link.generic 73branch of the 74.Xr sysctl 3 75MIB. The manifest constants for each level in the 76.Xr sysctl 3 77.Ar name 78are defined in 79.Aq Pa net/if_mib.h . 80A count of interfaces (and thus rows in the table) is given by 81.Dq Li net.link.generic.system.ifcount 82(or, using the manifest constants, 83.Dv CTL_NET , 84.Dv PF_LINK , 85.Dv NETLINK_GENERIC , 86.Dv IFMIB_SYSTEM , 87.Dv IFMIB_IFCOUNT ) . 88A management application searching for a particular interface should 89start with row 1 and continue through the table row-by-row until the 90desired interface is found, or the interface count is reached. 91.Pp 92The generic interface information, common to all interfaces, 93can be accessed via the following procedure: 94.Bd -literal -offset indent 95int 96get_ifmib_general(int row, struct ifmibdata *ifmd) 97{ 98 int name[6]; 99 size_t len; 100 101 name[0] = CTL_NET; 102 name[1] = PF_LINK; 103 name[2] = NETLINK_GENERIC; 104 name[3] = IFMIB_IFDATA; 105 name[4] = row; 106 name[5] = IFDATA_GENERAL; 107 108 len = sizeof(*ifmd); 109 110 return sysctl(name, 6, ifmd, &len, (void *)0, 0); 111} 112.Ed 113.Pp 114The fields in 115.Li struct ifmibdata 116are as follows: 117.Bl -tag -width "ifmd_snd_drops" 118.It Li ifmd_name 119.Pq Li "char []" 120the name of the interface, including the unit number 121.It Li ifmd_pcount 122.Pq Li int 123the number of promiscuous listeners 124.It Li ifmd_flags 125.Pq Li int 126the interface's flags (defined in 127.Aq Pa net/if.h ) 128.It Li ifmd_snd_len 129.Pq Li int 130the current instantaneous length of the send queue 131.It Li ifmd_snd_drops 132.Pq Li int 133the number of packets dropped at this interface because the send queue 134was full 135.It Li ifmd_data 136.Pq Li struct if_data 137more information from a structure defined in 138.Aq Pa net/if.h 139(see 140.Xr if_data 9 ) 141.El 142.Pp 143Class-specific information can be retrieved by examining the 144.Dv IFDATA_LINKSPECIFIC 145column instead. Note that the form and length of the structure will 146depend on the class of interface. For 147.Dv IFT_ETHER , 148.Dv IFT_ISO88023 , 149and 150.Dv IFT_STARLAN 151interfaces, the structure is called 152.Dq Li struct ifmib_iso_8802_3 153(defined in 154.Aq Pa net/if_mib.h ) , 155and implements a superset of the 156.Tn "RFC 1650" 157MIB for Ethernet-like networks. 158.\" This will eventually be defined in an ethermib(4) page. 159For 160.Dv IFT_SLIP , 161the structure is a 162.Dq Li struct sl_softc 163.Pq Aq Pa net/if_slvar.h . 164.Sh SEE ALSO 165.Xr sysctl 3 , 166.Xr intro 4 , 167.Xr ifnet 9 168.\" .Xr ethermib 4 , 169.Rs 170.%T "Definitions of Managed Objects for the Ethernet-like Interface Types Using SMIv2" 171.%A F. Kastenholz 172.%D August 1994 173.%O RFC 1650 174.Re 175.Sh BUGS 176Many Ethernet-like interfaces do not yet support the Ethernet MIB; 177the interfaces known to support it include 178.Xr ed 4 179and 180.Xr de 4 . 181Regardless, all interfaces automatically support the generic MIB. 182.Sh HISTORY 183The 184.Nm 185interface first appeared in 186.Fx 2.2 . 187