Main index | Section 4 | 日本語 | Options |
#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>
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.
RFC 1650, Definitions of Managed Objects for the Ethernet-like Interface Types Using SMIv2, August 1994.
,IFMIB (4) | October 28, 2009 |
Main index | Section 4 | 日本語 | Options |
Please direct any comments about this manual page service to Ben Bullock. Privacy policy.