ifconfg命令天天用,但是还真没有认真分析过,今天总结一下。
以ifconfig为入口,了解内核对应的数据结构字段。
先看一下ifconfig的结果:
flags=4163<UP,BROADCAST,RUNNING,MULTICAST>:
unsigned int flags;
表示网卡状态:
UP:对应内核IFF_UP,表示网卡是开启的。
BROADCAST:表示网卡支持广播,对应内核IFF_BROADCAST
MULTICAST:表示网卡支持组播,对应内核IFF_MULTICAST
RUNNING:对应内核IFF_RUNNING,给的注释是@IFF_RUNNING: interface RFC2863 OPER_UP. Volatile.表示支持RFC2863接口组网络管理协议。RFC2863定义了管理信息库(MIB)的一部分,用于Internet社区中的网络管理协议。
4163的由来:在linux内核中flags取值如下:
4163 = IFF_UP + IFF_BROADCAST + IFF_RUNNING + IFF_MULTICAST
enum net_device_flags {
IFF_UP = 1<<0, /* sysfs */
IFF_BROADCAST = 1<<1, /* volatile */
IFF_DEBUG = 1<<2, /* sysfs */
IFF_LOOPBACK = 1<<3, /* volatile */
IFF_POINTOPOINT = 1<<4, /* volatile */
IFF_NOTRAILERS = 1<<5, /* sysfs */
IFF_RUNNING = 1<<6, /* volatile */
IFF_NOARP = 1<<7, /* sysfs */
IFF_PROMISC = 1<<8, /* sysfs */
IFF_ALLMULTI = 1<<9, /* sysfs */
IF