next up previous contents
Next: GET-Pakete Up: Bearbeitung eines eintreffenden Paketes Previous: Allgemeine Überlegungen zur Paketbearbeitung

Verwendete Datenstrukturen

Um die Suche nach der aufzurufenden Funktion effizient zu realisieren, wurden zwei Felder definiert, die jeweils einen Eintrag pro Variable enthalten. Die Felder befinden sich im Modul 'device.c'.

Das Feld 'var_table' enthält für jede Variable einen Eintrag, der ihren OID in Form eines 'array of int' beinhaltet. Nicht verwendete Stellen werden mit negativen Zahlen belegt. Der letzten Zahl kommt hierbei eine besondere Bedeutung zu, da sie, ebenfalls negativ dargestellt, die Anzahl der nicht-negativen Stellen und damit die Länge des OID enthält.





1cm

Abbildung 2: var_table




Das Feld 'var_desrc_a' enthält für jede Variable Zeiger auf Funktionen zum Lesen bzw. Setzen von Variablen, den Typ der Variablen sowie, im Falle von Tabellenvariablen, einen Zeiger auf eine Funktion, die die Instanz mit dem nächstgrößeren Index bestimmt. Sollte eine der Funktionen für eine bestimmte Variable nicht existieren (z.B. 'read-only'-Variablen enthalten keine SET-Funktion), steht an dieser Stelle NULL.





1cm

Abbildung 3: var_descr_a




Die Indizierung der beiden Felder ist identisch, so daß aus der ersten Tabelle der Index bestimmt werden kann und mit Hilfe dieses Indexes aus der zweiten Tabelle die entsprechende Funktion.


next up previous contents
Next: GET-Pakete Up: Bearbeitung eines eintreffenden Paketes Previous: Allgemeine Überlegungen zur Paketbearbeitung
Copyright Munich Network Management Team