ifmib(4)

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) inter
face 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 in
formation 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_IF
COUNT). 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, indi
cated 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, includ
ing 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 su
perset 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 Ether
net MIB; the
interfaces known to support it include ed(4) and de(4). Re
gardless, all
interfaces automatically support the generic MIB.
BSD November 15, 1996
Copyright © 2010-2024 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout