IFF_UP和IFF_RUNNING有什么区别?

这两个标志通常被放在一起。 他们有什么区别?

从Linux设备驱动程序3 :

IFF_UP该标志对于驱动程序是只读的。 当接口处于活动状态并准备传输数据包时,内核会将其打开。

IFF_RUNNING

此标志表示接口已启动并正在运行。 它主要用于兼容BSD; 内核几乎没有使用它。 大多数网络驱动程序不需要担心IFF_RUNNING。

挖掘更深一层,似乎有一个显着的差异:

IFF_RUNNING应该反映在网络接口上的运行状态,而不是它的管理状态。 举例来说,管理员可以将以太网接口(例如, ifconfig eth0 up )带到以太网接口,但是如果没有插入电缆,它将不被认为是可操作的(即按照RFC2863 RUNNING )。

检查以太网电缆是否真正连接到网络您应该检查IFF_RUNNIG。 IFF_UP表示系统为接口分配资源。

请查看“ip link show”和“ethtool eth0”如何检查链接的详细代码。