Next: Einbinden des neuen Codes
Up: Erweiterung des Kernels
Previous: Erweiterter Code
Sie dient dazu, den Anschluß neuer Systeme bekannt zu geben.
Um Meldungen über Ereignisse weiterzuleiten, hat der Kernel
mehrere Möglichkeiten. Zum einen kann er Ereignisse über die
Funktion printk an den syslogd zur Verarbeitung
weitergeben. Eine andere Möglichkeit ist die Schnittstelle
des /proc-Filesystems. Diese wird im Allgemeinen dazu
verwendet, Statusinformationen mittles Tabellen auszugeben.
Beispiele hierfür sind die arp- und die
routing-Tabelle. Die dritte Variante ist das sogenannte
netlink-Device. Dabei handelt es sich um einen
Kernel-Treiber, der bidirektionale Kommunikation erlaubt.
Ein Beispiel für die Implementierung dieser Schnittstelle
liefert der arpd. Bei vielen Systemen im Netz
verlagert der arpd seine Tabellen aus dem Kernel
hinaus in den User-Bereich. Die Einführung der
netlink-Schnittstelle steht auf der Todo-Liste
der Bridge Entwickler.
Voraussetzung für die Verarbeitung von Nachrichten ist
das Einrichten eines neuen Device. Die Majornummer der
netlink-Schnittstelle ist dabei 36. Für die
Minornummer war die 9 noch frei. Somit mußte die
Datei /usr/src/linux/include/net/netlink.h
um den Eintrag #define NETLINK_BRD 9
erweitert werden. Das Device wird in der Funktion
__initfunc des Switching Codes br.c
durch den Aufruf von
netlink_attach(NETLINK_BRD, brd_callback)
initialisiert. Durch den Aufruf von
netlink_post(NETLINK_BRD, skb) in der Funktion
brd_send wird dem Device /dev/brd
das gewünschte Event übergeben. Momentan besteht das
Event aus dem Port, der MAC-Adresse, der VLAN ID,
einem Feld Flags und einem Timer-Feld.
Die Funktion brd_send wird in br_learn
nach dem Einfügen eines neuen Systems in den AVL-Baum
aufgerufen und damit dem netlink-Device das Hinzukommen
eines neuen Systems angezeigt. Die für das Event nötigen
Informationen werden der Struktur fdb entnommen.
Next: Einbinden des neuen Codes
Up: Erweiterung des Kernels
Previous: Erweiterter Code
Root on HPHEGER0
3/3/1999