Man Linux: Main Page and Category List

NAME

     ifmib - Management Information Base for network interfaces

SYNOPSIS

     #include <sys/types.h>
     #include <sys/socket.h>
     #include <sys/sysctl.h>
     #include <sys/time.h>
     #include <net/if.h>
     #include <net/if_mib.h>

DESCRIPTION

     The ifmib 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 SNMP MIB defined for that particular
     interface class, if one exists and can be implemented in the kernel.)

     The ifmib 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 The index of the last row in the table is given by
     “net.link.generic.system.ifcount” (or, using the manifest constants,
     CTL_NET, PF_LINK, NETLINK_GENERIC, IFMIB_SYSTEM, IFMIB_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 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:

           int
           get_ifmib_general(int row, struct ifmibdata *ifmd)
           {
                   int name[6];
                   size_t len;

                   name[0] = CTL_NET;
                   name[1] = PF_LINK;
                   name[2] = NETLINK_GENERIC;
                   name[3] = IFMIB_IFDATA;
                   name[4] = row;
                   name[5] = IFDATA_GENERAL;

                   len = sizeof(*ifmd);

                   return sysctl(name, 6, ifmd, &len, (void *)0, 0);
           }

     The fields in struct ifmibdata are as follows:

     ifmd_name       (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

     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_data(9))

     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_ETHER,
     IFT_ISO88023, and IFT_STARLAN interfaces, the structure is called “struct
     ifmib_iso_8802_3” (defined in and implements a superset of the RFC 1650
     MIB for Ethernet-like networks.  For IFT_SLIP, the structure is a “struct
     sl_softc” (

SEE ALSO

     sysctl(3), intro(4), ifnet(9)

     F. Kastenholz, Definitions of Managed Objects for the Ethernet-like
     Interface Types Using SMIv2, August 1994, RFC 1650.

HISTORY

     The ifmib interface first appeared in FreeBSD 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.