Provided by: freebsd-manpages_12.2-2_all bug

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 <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_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 <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 <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
       <net/if_mib.h>), and implements a superset of the RFC 1650 MIB for Ethernet-like networks.

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.

Debian                                          October 28, 2009                                        IFMIB(4)