next up previous contents
Next: Verwendete Datenstrukturen Up: Bearbeitung eines eintreffenden Paketes Previous: Bearbeitung eines eintreffenden Paketes

Allgemeine Überlegungen zur Paketbearbeitung

Die Funktion 'DPIawait_packet_from_agent()' wartet auf das Eintreffen eines Paketes und liefert einen Zeiger auf das empfangene Paket. Dieses wird mit Hilfe der Funktion 'pDPIpacket()' in seine einzelnen Bestandteile zerlegt und in einer Struktur 'snmp_dpi_hdr' gespeichert. Aufgrund des 'packet_type'-Feldes dieser Struktur wird unterschieden, um welche Art von Paket es sich handelt und dementsprechend eine Funktion zur weiteren Bearbeitung aufgerufen (do_get(), do_next(), ...).

Das Paket enthält weiterhin einen 'Object Identifier' (OID), der die Variable bestimmt, die in diesem Paket gelesen bzw. gesetzt werden soll. Aufgrund dieses OID ist es nun erforderlich, die entsprechende GET- bzw. SET-Funktion aufzurufen. Hierzu mußte eine Methode gefunden werden, in angemessener Zeit, die aufzurufende Funktion zu bestimmen.

Ein weiteres Problem ergibt sich beim Zugriff auf Tabellen. Die MIB enthält außer einfachen Variablen auch Tabellen, die zum Teil auch ineinander verschachtelt sein können. Auch sind die Indexe mancher Tabellen keine Integerwerte sondern Strings. Das heißt, daß weder die Anzahl noch der Typ der Indexe für alle Variablen gleich sind. Da aber eine einheitliche Aufrufsyntax für alle Funktionen wünschenswert ist, konnten die Indexe nicht einfach als Parameter übergeben werden.

Große Schwierigkeiten bereitet die Behandlung von GETNEXT Requests. Hier muß statt der dem OID des Paketes entsprechenden Variable, die in der MIB lexikographisch folgende Variable zurückgegeben werden. Das bedeutet, daß bei einfachen Variablen die nächste Variable bestimmt werden muß und bei Tabellen der Eintrag mit dem nächstgrößeren Index. Sollte kein größerer Index in der Tabelle existieren, so muß wiederum die nächste Variable gesucht werden. Handelt es sich bei der nächstgrößeren Variable wieder um eine Tabelle, so ist der kleinste Index dieser Tabelle auszuwählen. Bei ineinander verschachtelten Tabellen steigt die Komplexität.


next up previous contents
Next: Verwendete Datenstrukturen Up: Bearbeitung eines eintreffenden Paketes Previous: Bearbeitung eines eintreffenden Paketes
Copyright Munich Network Management Team