Änderungen im Verbindungszustand

Netzwerkverbindungen haben es von Haus aus mit der Welt außerhalb des lokalen Systems zu tun. Sie sind daher auch oft durch äußere Ereignisse betroffen und bestehen eventuell nur vorübergehend. Das Netzwerk-Subsystem muß Bescheid wissen, wenn Netzwerkverbindungen entstehen und verschwinden, und stellt einige Funktionen zur Verfügung, die der Treiber verwenden kann, um diese Informationen zu melden.

Die meisten Netzwerktechnologien, bei denen es eine tatsächliche physikalische Verbindung gibt, liefern einen Carrier-Zustand; die Anwesenheit des Carriers bedeutet, daß die Hardware vorhanden und betriebsbereit ist. Ethernet-Karten können das Carrier-Signal beispielsweise auf der Leitung feststellen; wenn ein Benutzer über das Kabel stolpert, verschwindet der Carrier und die Verbindung damit ebenfalls. Default-mäßig wird angenommen, daß Netzwerk-Geräte ein Carrier-Signal haben. Der Treiber kann diesen Zustand aber mit den folgenden Funktionen explizit verändern:


void netif_carrier_off(struct net_device *dev);
void netif_carrier_on(struct net_device *dev);

Wenn Ihr Treiber feststellt, daß der Carrier auf einem der Geräte fehlt, sollte er netif_carrier_off aufrufen, um den Kernel davon zu informieren. Wenn der Carrier wiederkommt, sollte netif_carrier_on aufgerufen werden. Manche Treiber rufen auch netif_carrier_off auf, wenn größere Konfigurationsänderungen (wie etwa des Medientyps) vorgenommen werden; wenn die Karte mit den Änderungen ist fertig, wird der neue Carrier vorgefunden, und die Übertragung kann fortgesetzt werden.

Es gibt auch eine Integer-Funktion:


int netif_carrier_ok(struct net_device *dev);

Sie kann verwendet werden, um den aktuellen Carrier-Zustand (wie er in der Geräte-Struktur steht) abzufragen.