Next: 6.5 Erfahrungen mit der
Up: Die Implementierung des CMIP/SNMP
Previous: Callbacks der OSI-Klassen, die
Automatische Code-Generierung
Automatische Code-Generierung für die OSI-Klassen und
OSI-Attribute
Wie im vorherigen Abschnitt beschrieben wurde, implementiert der Agentenentwickler
ausschließlich Callbacks. Der MIBcomposer generiert daraus C++-Klassen
und damit die Implementierung aller Managementobjekt-Klassen, die in der MIB des
Agenten durch GDMO-Templates definiert werden.
Jeder einzelne Callback wird dabei in einer eigenen Datei im Verzeichnis ,,
workspace`` gespeichert, zum Beispiel die beiden Dateien der in 6.3.1
vorgestellten Callbacks des Attributs sysContact:
MIB2.sysContact.real_access.cpp.txt.cbk
MIB2.sysContact.real_update.cpp.txt.cbk
Der mit dem MIBcomposer daraus generierte C++-Code der
Managementobjekt-Klassen befindet sich im Verzeichnis ,,build``.
Die Funktionsweise eines Attribut-Lese-Zugriffs läuft für alle OSI-Attribute,
die SNMP-Variablen repräsentieren, gleich ab: Es wird die Internet-Adresse, der
Community-String und die OID der gewünschten SNMP-Variable benötigt. Ebenso
verhält es sich bei einem Schreib-Zugriff.
Der C++-Programmcode für die beiden benötigten Callbacks (Real Value
Access und Real Value Update) konnten nun so implementiert werden, daß die
erforderlichen Parameter zur Laufzeit bestimmt werden. Daraus resultiert, daß für
alle OSI-Attribute, die SNMP-Variablen repräsentieren, die gleichen
Callback-Codes verwendet werden können.
Diese Callbacks werden nun in gesonderten Dateien
muster.real_access.cpp.txt.cbk
muster.real_update.cpp.txt.cbk
gespeichert. Die
ursprünglichen Callback-Dateien der Attribute werden nun zu Links auf diese
gesonderten Dateien:
MIB2.sysContact.real_access.cpp.txt.cbk ->
muster.real_access.cpp.txt.cbk
MIB2.sysContact.real_update.cpp.txt.cbk ->
muster.real_update.cpp.txt.cbk
Dies hat entscheidende Vorteile:
Für eine große Anzahl an Attributen muß nur eine kleine Menge an Callbacks in
den gesonderten Dateien gehalten werden. Ist irgendeine Änderung im Code notwendig,
muß diese nur an einer zentralen Stelle vorgenommen werden und nicht für jedes
Attribut einzeln erfolgen. Außerdem können so für neue MIBs und damit für neue
Attribute lediglich durch Erstellen von weiteren Links diese Attribute codiert
werden.
Die gleiche Situation tritt für den Callback ein, der die Aktion ,,
aktualisiereTabelle`` implementiert. Er wurde so programmiert, daß er für alle
OSI-Klassen identisch ist. Somit kann er ebenso in einer gesonderte Datei
gespeichert und mit Links den jeweiligen OSI-Klassen zugeordnet werden.
Der MIBcomposer greift nun über diese Links auf den Callback-Code zu
und generiert daraus schließlich den C++-Code der Managementobjekt-Klassen.
Für die automatische Erstellung der Links im Verzeichnis ,,workspace`` wurde
ein Werkzeug entwickelt: erstelleLinks. Es enthält in einer Liste alle
gesonderten Dateien mit den für alle Klassen bzw. Attribute, die SNMP-Ressourcen
repräsentieren, notwendigen Callbacks.
Anhand der in der Metadata
Database eingetragenen OSI-Klassen und OSI-Attributen kann dieses Werkzeug erkennen, welche
SNMP-Ressourcen repräsentieren und erstellt für jedes dieser Klassen und Attribute, auf der
Grundlage dieser Liste, die entsprechenden Links auf den Callback-Code in den
gesonderten Dateien.
Next: 6.5 Erfahrungen mit der
Up: Die Implementierung des CMIP/SNMP
Previous: Callbacks der OSI-Klassen, die
Copyright Munich Network Management Team