The
facility is an application of the
sysctl(3)
interface to provide management information about network interfaces
to client applications such as
netstat(1),
slstat(8),
and
SNMP
management agents.
This information is structured as a table, where
each row in the table represents a logical network interface (either a
hardware device or a software pseudo-device like
lo(4)).
There are two columns in the table, each containing a single
structure: one column contains generic information relevant to all
interfaces, and the other contains information specific to the
particular class of interface.
(Generally the latter will implement
the
SNMPMIB
defined for that particular interface class, if one exists and can be
implemented in the kernel.)
The
facility is accessed via the
``net.link.generic
''
branch of the
sysctl(3)
MIB.
The manifest constants for each level in the
sysctl(3)
name
are defined in
In net/if_mib.h .
The index of the last row in the table is given by
``net.link.generic.system.ifcount
''
(or, using the manifest constants,
CTL_NETPF_LINKNETLINK_GENERICIFMIB_SYSTEMIFMIB_IFCOUNT )
A management application searching for a particular interface should
start with row 1 and continue through the table row-by-row until the
desired interface is found, or the interface count is reached.
Note that the table may be sparse, i.e., a given row may not exist,
indicated by an
errno
of
Er ENOENT .
Such an error should be ignored, and the next row should be checked.
The generic interface information, common to all interfaces,
can be accessed via the following procedure:
(char []
)
the name of the interface, including the unit number
ifmd_pcount
(int
)
the number of promiscuous listeners
ifmd_flags
(int
)
the interface's flags (defined in
In net/if.h )
ifmd_snd_len
(int
)
the current instantaneous length of the send queue
ifmd_snd_drops
(int
)
the number of packets dropped at this interface because the send queue
was full
ifmd_data
(struct if_data
)
more information from a structure defined in
#include <net/if.h>
(see
if_data9)
Class-specific information can be retrieved by examining the
IFDATA_LINKSPECIFIC
column instead.
Note that the form and length of the structure will
depend on the class of interface.
For
IFT_ETHERIFT_ISO88023
and
IFT_STARLAN
interfaces, the structure is called
``struct ifmib_iso_8802_3
''
(defined in
In net/if_mib.h ) ,
and implements a superset of the
RFC 1650
MIB for Ethernet-like networks.
For
IFT_SLIP
the structure is a
``struct sl_softc
''
(In net/if_slvar.h
)
"Definitions of Managed Objects for the Ethernet-like Interface Types Using SMIv2"
F. Kastenholz
August 1994
RFC 1650
HISTORY
The
interface first appeared in
Fx 2.2 .
BUGS
Many Ethernet-like interfaces do not yet support the Ethernet MIB;
the interfaces known to support it include
ed(4)
and
de(4).
Regardless, all interfaces automatically support the generic MIB.