Next: Starten des Subagenten
Up: No Title
Previous: Erzeugen und Löschen von
Um eine neue MIB-Varibable in den Agenten einzufügen, sind folgende
Schritte durchzuführen:
- Sofern es sich um eine lesbare Variable handelt, muß eine Funktion erstellt werden, die den
Wert der Variablen ausliest (GET-Funktion). Die Funktion bekommt als Parameter einen Zeiger auf ein
Feld von Integerwerten, deren Interpratation als Tabellenindex der Funktion selbst überlassen bleibt.
Der auszulesende Wert der Variable muß in einen Speicherbereich geschrieben werden, der auch
nach Beendigung der Funktion nicht überschrieben werden kann. Insbesondere bietet sich die
Möglichkeit an, die Variable, die den Rückgabewert enthält als 'static' zu deklarieren. Als
Return-Wert wird dann ein Zeiger auf diesen Speicherbereich übergeben. Ist die Variable aus
irgendeinem Grund nicht auszulesen, so ist ein NULL-Zeiger zurückzugeben.
- Bei Variablen, deren Wert auch gesetzt werden kann, muß zusätzlich eine Funktion geschrieben
werden, die diese Aufgabe übernimmt (SET-Funktion). Diese Funktion bekommt wiederum einen Zeiger auf
ein Feld von Integern zur Indizierung und darüberhinaus einen Zeiger auf den Wert, der der
Variablen zugewiesen werden soll. Es handelt sich um einen Zeiger vom Typ 'char*'. Sollte es sich um eine
Variable anderen Typs handeln, so ist eine Umsetzung vorzunehmen. Der dritte Parameter dient zur
Unterscheidung, ob es sich bei dem Request um eine SET- oder COMMIT-Aufforderung handelt. Bei der
SET-Aufforderung muß lediglich überprüft werden, ob ein Setzen der Variablen möglich ist, während
bei der COMMIT-Request der Wert tatsächlich geändert wird. Als Returnwert wird eine eventuell
nötige Fehlermeldung zurückgegeben. (Fehlermeldungen : siehe [4]).
Wurde die Funktion
fehlerfrei ausgeführt, so ist als Returnwert 'SNMPerror_noError' zurückzugeben.
- Im Falle einer Tabellenvariablen, muß schließlich eine Funktion existieren, die den
nächstgrößeren Indexwert der Tabelle bestimmt (GETNEXT-Funktion). Diese Funktion liefert keinen
Returnwert, sondern ändert direkt die als Parameter übergebene Liste von Indexwerten. Sollte bereits
der letzte Eintrag der Tabelle erreicht sein, so schreibt die Funktion an die erste Position des
Indexfeldes den Wert -1.
Diese Funktion wird aufgerufen, um bei GETNEXT Requests die Tabelle in der richtigen Reihenfolge
durchlaufen zu können.
- Nun muß in der Datei 'data.c' ein Eintrag für die neue Variable angelegt werden. Hierzu wird
an der entsprechenden Stelle im Feld 'var_descr_a' ein Eintrag eingefügt. Dieser besteht aus
- einem Zeiger auf die GET-Funktion
- einem Zeiger auf die SET-Funktion (oder NULL, falls die Variable 'read-only' ist)
- dem Typ der Variablen (mögliche Typen, siehe [4])
- einem Zeiger auf die GETNEXT-Funktion (oder NULL, falls es sich um eine einfache Variable handelt)
- Ein weiterer Eintrag muß in der selben Datei im Feld 'var_table' erfolgen. Hier wird der 'OID'
der Variablen festgelegt. An dieselbe Indexposition wie im Feld 'var_descr_a' wird der 'OID'
als Feld von Integerwerten eingetragen. Nicht benutzte Werte bekommen hierbei negative Zahlen zugewiesen.
Der letzte Wert enthält die Anzahl der gültigen Werte. Auch sie wird negativ eingetragen.
- Als Abschluß ist nun noch in der Datei 'dpi_system.h' der Wert der Konstante
'MAX_VAR_NUMBER', der die Anzahl der implementierten Variablen enthält, um eins zu
erhöhen.
Next: Starten des Subagenten
Up: No Title
Previous: Erzeugen und Löschen von
Copyright Munich Network Management Team