next up previous contents
Next: Der Bridge-Daemon Up: Anpassung der Bridgesoftware Previous: Anpassung der Bridgesoftware

Das Konfigurationstool brcfg

Die Anpassung des Codes umfaßt drei Teile. Zum einen muß der Hilfsausdruck (brcfg -h, siehe unten) dahingehend angepaßt werden, daß Einträge für das Setzen der Port- und der MAC-Adressen VLAN's hinzukommen:

brcfg - Bridge Configuration tool v0.2
--------------------------------------
brcfg sta[rt]                           Start Bridge
brcfg sto[p]                            Stop Bridge
brcfg p[ort] x e[nable]                 Enable a port
brcfg p[ort] x d[isable]                Disable a port
brcfg p[ort] x p[riority] y             Set the priority of a port
brcfg p[ort] x v[lan] y                 Set the vlan_id of a port
brcfg m[ac] x v[lan] y                  Set the vlan_id of a mac address
brcfg pr[iority] y                      Set bridge priority
brcfg pa[thcost] y                      Set the pathcosts
brcfg d[ebug] on                        Switch debugging on
brcfg d[ebug] off                       Switch debugging off
brcfg pol[icy] r[eject]/a[ccept]        Switch the policy/flush protocol list
brcfg e[xempt] <protocol> ..            Set list of exempt protocols
brcfg l[ist]                            List available protocols
brcfg stat[s] z[ero]                    Reset Statistics counters
brcfg stat[s] d[isable]                 Switch protocol statistics off
brcfg stat[s] e[nable]                  Switch keeping protocol statistics on
brcfg stat[s] s[how]                    Show protocol statistics
brcfg statu[s]                          Show bridge status

Examples:
---------
brcfg start exempt atalk aarp           Bridge start dont do LocalTalk bridging
brcfg stop                              Bridge stop

Dann muß die gewünschte Funktion implementiert werden und schließlich noch eine Statusausgabe, die ausgegeben wird, wenn brcfg ohne Parameter gestartet wird, eingefügt werden. Der Hilfsausdruck beschränkt sich auf das Einfügen zweier Zeilen. Für die Statusausgabe ist der Funktion disp_ports die Zeile printf("\tvlan id 0x\%08x\n",ports[i].vlan\_id) hinzuzufügen, die die VLAN ID des betreffenden Ports ausgibt. Aufwendiger ist die Implementierung der Funktionen create_vlan und create_mac_vlan.

Zunächst war die Case-Anweisung des Kommandozeilenparsers durch das Hinzufügen der Parameter für den Aufruf obiger Funktionen zu erweitern. Die Funktion create_vlan erwartet als Parameter den Port als String und ebenso als String die VLAN ID. Diese Werte werden im nächsten Schritt in Integerwerte umgewandelt. Alsdann werden die Werte durch den Aufruf von cmd(BRCMD_VLAN_CONFIG,po,id,) der Funktion cmd übergeben, die den eigentlichen I/O Aufruf absetzt.

323 void create_vlan(char *port,char *vlan)
324 { int po=atoi(port),id=atoi(vlan);
325   cmd(BRCMD_VLAN_CONFIG,po,id,"");
326   printf("Vlan_id for port %d set to 0x%08x\n",po,id);
327 }

Als Parameter erwartet cmd den Typ des I/O Aufrufs, zwei Integerwerte und schließlich ein Stringfeld zur Aufnahme der MAC-Adresse. Dieses dritte Feld muß der Struktur br_cf, die in br.h zu finden ist, noch hinzugefügt werden. Durch die Übergabe der MAC-Adresse als String kann dem Kernel der Wert der MAC-Adresse schon im richtigen Format übergeben werden.

329 void create_mac_vlan(char *mac,char *vlan)                              
330 { unsigned int i,j;                                                     
331   unsigned char ula[6];                                                 
332   int id=atoi(vlan);                                                    
333                                                                         
334   for ( i=0; i<6; i++) {                                                
335         j = i;                                                          
336         sscanf( &mac[j*2], "%02x", &ula[j]);                            
337   }

[...]

347 cmd(BRCMD_MAC_VLAN,id,0,ula);
348 }

brcfg selbst erwartet die Eingabe der MAC-Adresse als String ohne die sonst üblichen Doppelpunkte. Mittels der Funktion sscanf wird dieser String als 6 Byte großer, hexadezimaler String in den Speicher geschrieben. Anschließend wird der I/O Aufruf durch den Aufruf der Funktion cmd initiiert.

Für die Einbindung des neuen Codes in die Distribution geht man analog zu der Beschreibung aus Kapitel 5.1.1 vor. Der Patch für die Konfigurationssoftware ist im Anhang B abgedruckt. Besitzt man eine Debian-Distribution, so kann man sich den Source zum Binärpaket (bridgex_0.25.deb) unter ftp.de.debian.org aus dem Internet laden. Für andere Distributionen steht die Datei bridgex-0.25.tar.gz zum Download bereit. Für das Entpacken und Patchen des Sourcecodes gilt das, was schon für den Kernelsource gesagt wurde. Nach dem Auspacken des Sourcecodes in einem beliebigen temporären Verzeichnis, sollte ein einfaches make den Source übersetzen. Anschließend ist das neu erstellte Programm brcfg nach /sbin zu kopieren.


next up previous contents
Next: Der Bridge-Daemon Up: Anpassung der Bridgesoftware Previous: Anpassung der Bridgesoftware
Root on HPHEGER0
3/3/1999