next up previous contents
Next: System Group Up: GET-Funktionen Previous: GET-Funktionen

Allgemeines

Um die Werte der MIB-Variablen aus dem System auszulesen, werden zwei Arten von GET-Funktionen verwendet:

Je nach Typ der jeweiligen Variable, wird eine der beiden Arten angewandt. Als Rückgabewert wird in beiden Fällen ein Zeiger auf das Ergebnis übergeben. Aus diesem Grund muß in der Funktion sichergestellt werden, daß der Speicherbereich, in dem das Ergebnis steht, nicht überschrieben werden kann. Deshalb wird die Ergebnisvariable als 'static' deklariert, was bedeutet, daß der Speicherbereich der Variablen, über die Laufzeit der Funktion hinaus, reserviert bleibt.

Der Parameter 'param_list' ist ein Zeiger auf ein Feld von Integerwerten, die zur Indizierung von Tabellen verwendet werden. Erfolgt die Indizierung über Strings, so müssen diese Integerwerte zuerst in einen String konvertiert werden. Hierzu dient die Funktion 'make_string()'.

Bei Gruppen von Funktionen, die Variablenwerte auf ähnliche Art und Weise erhalten, wurde eine Funktion der Form 'char* get_NAME(char* param_list, int type) geschrieben, die von den jeweils zugehörigen GET-Funktionen aufgerufen wird. Der Parameter 'type' gibt hierbei die im jeweiligen Fall zu bestimmende Variable an. Mit Hilfe einer 'switch/case'-Anweisung wird dann aufgrund von 'type' der entsprechende Rückgabewert bestimmt. Sollten hierbei Variablen vom Typ INTEGER auftreten, so wird ihr Typ mit Hilfe eines Casts auf den Typ 'char*' umgewandelt.

Aus Leistungsgründen erscheint es nicht sinnvoll, bei Nachfragen innerhalb eines Paketes, die sich auf dieselbe Variable beziehen, diese Variable mehrmals auszulesen. Ähnlich verhält es sich bei Variablen, deren Wert dadurch bestimmt wird, daß eine größere Struktur ausgelesen wird. Wird innerhalb eines Paketes auf mehrere Variablen zugegriffen, die sich alle aus derselben Struktur ergeben, so sollte diese ebenfalls nur einmal ausgelesen werden. Hierzu wird in den entsprechenden Funktionen eine Kopie der jeweiligen Struktur angelegt, aus der bei folgenden Aufrufen die Werte ausgelesen werden.

Um feststellen zu können, ob die Aufrufe von Anfragen desselben Paketes stammen, wird ein Zähler 'global_counter' eingeführt, der beim Abschicken eines Paketes um eins erhöht wird. Da die derzeitige Version des Agenten keine Pakete mit mehr als einer Variablennachfrage erlaubt, besteht die Möglichkeit, mit Hilfe des Schalters '-cache' dieses Hochzählen auf das Absenden von SET-Paketen zu beschränken. Somit ergibt sich eine deutliche Leisungssteigerung, auch wenn die Nachfrage nach gleichen Variablen nicht in einem Paket stattfindet. Zu beachten ist hierbei, daß insbesondere bei Variablen, die ihren Wert relativ schnell ändern (z.B in der Prozeßtabelle) Probleme auftreten können. Bei Variablen, die ausgelesen werden können, ohne weitere Informationen auslesen zu müssen, wurde auf eine Speicherung verzichtet, da nicht anzunehmen ist, daß innerhalb eines Paketes mehrfach auf dieselbe Variable zugegriffen wird.

Um die Werte für die Variablen zu erhalten, bedient man sich im wesentlichen drei verschiedener Methoden:

Im folgenden Abschnitt werden nun die Funktionen genauer erläutert, die von diesem Schema abweichende Methoden anwenden, um die gewünschte Information bereitzustellen.


next up previous contents
Next: System Group Up: GET-Funktionen Previous: GET-Funktionen
Copyright Munich Network Management Team