IFMIB(4)

명칭
ifmib - 네트워크 인터페이스의 MIB

개요
#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>

해설
ifmib 기능은, netstat(1,) slstat(8) 및 SNMP 관리 에이전트와 같은 클라이언트 어플리케이션에 대해, 네트워크 인터페이스에 관한 관리 정보를 제공한다 sysctl(3) 인터페이스의 어플리케이션입니다. 이 정보는, 겉(표)의 각각의 행이 논리적인 네트워크 인터페이스 (하드웨어 디바이스 또는 lo(4) (와)과 같은 소프트웨어에 의한 가상 디바이스의 어느 쪽인지)로부터 되는 겉(표) 형식에서 구축됩니다. 겉(표)에는 2 개의 열이 있어, 각각의 열은 하나의 구조체를 가집니다. 하나의 열은 모든 인터페이스에 관련하는 일반적인 정보를 포함해, 이제(벌써) 한편의 열은 인터페이스의 특정의 클래스에 고유한 정보를 포함합니다. (일반적으로 후자는, 만약 존재해 커널에 실장 가능하면, 특정의 인터페이스 클래스를 정의한다 SNMP MIB (을)를 실장합니다. )

ifmib 기능은 sysctl(3) MIB 의 “net.link.generic” 브랜치(branch) 경유로 액세스 됩니다. sysctl(3) name 의 각각의 레벨의 명백한 정수는 <net/if_mib.h> 그리고 정의됩니다. 인터페이스의 총수 (그리고 즉 겉(표)의 행수)는 “net.link.generic.system.ifcount” (또는, 명백한 정수이다 CTL_NET, PF_LINK, NETLINK_GENERIC, IFMIB_SYSTEM, IFMIB_IFCOUNT) 에 의해 주어집니다. 특정의 인터페이스를 검색하는 관리 어플리케이션은, 1 번째의 행으로부터 개시해, 지정된 인터페이스가 검출되는지, 인터페이스의 총수에 달할 때까지, 행으로부터 행으로 겉(표)를 이동합니다.

모든 인터페이스에 공통된, 일반적인 인터페이스 정보는 아래와 같은 순서로 액세스 할 수 있습니다:

    int
    get_ifmib_general(int row, struct ifmibdata *ifmd)
    {
    	int name[6];
    	name[0] = CTL_NET;
    	name[1] = PF_LINK;
    	name[2] = NETLINK_GENERIC;
    	name[3] = IFMIB_IFDATA;
    	name[4] = row;
    	name[5] = IFDATA_GENERAL;
    	return sysctl(name, 6, ifmd, sizeof *ifmd, (void *) 0, 0);
    }

ifmibdata 구조체 의 필드는 아래와 같은 대로입니다:

ifmd_name
    (char []) 유니트 번호를 포함한, 인터페이스의 이름

ifmd_pcount
    (int) 무차별하게 접속을 기다리고 있는 수

ifmd_flags
    (int) 인터페이스의 플래그 ( <net/if.h> 그리고 정의되고 있습니다)

ifmd_snd_len
    (int) 송신 큐의 현재의 순간적인 길이

ifmd_snd_drops
    (int) 송신 큐가 가득했던 모아 두고 이 인터페이스가 드롭 한 패킷수

ifmd_data
    (struct if_data) <net/if.h> 에 정의되고 있는 구조체로부터의 상세 정보 (if_data(9) 를 참조해 주세요)

클래스 고유한 정보는 IFDATA_LINKSPECIFIC 열을 대신에 조사하는 것에 의해 취득할 수 있습니다. 구조체의 형식 및 길이는 인터페이스의 클래스에 의존하는 것에 주의해 주세요. IFT_ETHER, IFT_ISO88023, IFT_STARLAN 인터페이스에 대해서는, 구조체는 “struct ifmib_iso_8802_3” ( <net/if_mib.h> 그리고 정의되고 있습니다)로 불리고 있어, 이더넷(ethernet) 좋아하는 네트워크를 위한 RFC 1650 MIB 의 슈퍼 세트를 실장하고 있습니다. IFT_SLIP 에 대해서는, 구조체는 “struct sl_softc” (<net/if_slvar.h>) 입니다.

관련 항목
sysctl(3), intro(4), ifnet(9) Definitions of Managed Objects for the Ethernet-like Interface Types Using SMIv2, F. Kastenholz, 1994년 8월, RFC 1650.

버그
대부분의 이더넷(ethernet) 좋아하는 인터페이스는 Ethernet MIB 를 아직 서포트하고 있지 않습니다. 서포트하는 것을 알려져 있는 인터페이스에는 ed(4) 및 de(4) (을)를 포함합니다. 그럼에도 불구하고, 모든 인터페이스는 자동적으로 generic MIB 를 서포트합니다.

역사
ifmib 하 FreeBSD 2.2 그리고 처음으로 출현했습니다.