Изменение состояния соединения

Предыдущая  Содержание  Следующая V*D*V

Сетевые подключения, по определению, имеют дело с внешним миром за пределами локальной системы. Поэтому они часто подвержены внешним событиям и они могут быть временными обстоятельствами. Сетевая подсистема должна знать, когда сетевые соединения устанавливаются или пропадают, и она предоставляет несколько функций, которые драйвер может использовать, чтобы передать эту информацию.

 

Большинство сетевых технологий, связанных с настоящим, физическим соединением предоставляют состояние несущей (carrier); присутствии несущей означает, что оборудование присутствует и готово функционировать. Ethernet адаптеры, например, считывают несущий сигнал на проводе; когда пользователь спотыкается о кабель, эта несущая пропадает и связь пропадает. По умолчанию сетевыми устройствами предполагается, что несущий сигнал присутствует. Однако, драйвер может изменить это состояние явным образом с помощью этих функций:

 

void netif_carrier_off(struct net_device *dev);

void netif_carrier_on(struct net_device *dev);

 

Если ваш драйвер обнаруживает отсутствие несущей на одном из своих устройств, он должен вызвать netif_carrier_off, чтобы проинформировать ядро об этом изменении. Когда несущая возвращается, должна быть вызвана netif_carrier_on. Некоторые драйверы также вызывают netif_carrier_off при выполнении основных изменений конфигурации (таких, как тип носителя); как  только адаптер закончил устанавливать себя в исходное состояние, новая несущая обнаружена и трафик может возобновиться.

 

Также существует функция, возвращающая целочисленное значение:

 

int netif_carrier_ok(struct net_device *dev);

 

Она может быть использована для проверки текущего состояния несущей (как это отражено в структуре устройства).

Предыдущая  Содержание  Следующая