ifmib - Management Information Base for network interfaces
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_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 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:
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:
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 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 )
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |