Подтвердить что ты не робот

В чем разница между IFF_UP и IFF_RUNNING?

Эти два флага часто устанавливаются вместе. В чем разница между ними?

4b9b3361

Ответ 1

От Драйверы устройств Linux 3:

IFF_UP      Этот флаг доступен только для чтения для драйвера. Ядро включает его, когда интерфейс активен и готов к передаче пакетов.

...

IFF_RUNNING

Этот флаг указывает, что интерфейс запущен и работает. Это в основном для совместимости с BSD; ядро мало использует его. Наиболее сетевым драйверам не нужно беспокоиться о IFF_RUNNING.

Копаясь немного глубже, кажется, что существует одна существенная разница:

IFF_RUNNING должен отражать операционный статус на сетевом интерфейсе, а не на его административном. Например, для интерфейса Ethernet может быть добавлен UP администратором (например, ifconfig eth0 up), но он не будет считаться рабочим (т.е. RUNNING в соответствии с RFC2863), если кабель не подключен.

Ответ 2

Чтобы проверить, действительно ли кабель Ethernet подключен к сети, вы должны проверить IFF_RUNNIG. IFF_UP означает, что система выделяет ресурсы для интерфейса.

Пожалуйста, найдите подробный код, как "ip link show" и "ethtool eth0" проверяет наличие ссылки здесь.