Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
IFMIB(4)		     Kernel Interfaces Manual			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) 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  inter-
     faces,  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  con-
     stants, 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  in-
     terface  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  ac-
     cessed 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  be-
		     cause 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  Inter-
     face 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.  Regard-
     less, all interfaces automatically support the generic MIB.

FreeBSD 15.1			December 26, 2020			IFMIB(4)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ifmib&manpath=FreeBSD+15.1-RELEASE+and+Ports>

home | help