next up previous contents
Next: Die C++-Klasse PollingIntervall Up: Die Global Polling -Komponente Previous: Die Global Polling -Komponente

6.2.1 Die C++-Klasse MOIofSNMP_Table

Diese Basisklasse soll Methoden bereitstellen, um für jede Tabellenzeile in einer SNMP-Tabelle OSI-Instanzen im Gateway kreieren bzw. um für veraltete Tabellenzeilen die entsprechenden OSI-Instanzen löschen zu können.

class MOIofSNMP_Table
{
        private:
                stringList *oldMOI, *newMOI;
                char oid[512];
                char ipAddress[512];
                int createMOIs;
                int deleteMOIs;
                char NamingAttrOID[512];
                char ClassOID[512];
                char ParentInstName[512];

        public:
                MOIofSNMP_Table(char *newOid,char *newIpAddress,
                        char *newNamingAttrOID,char *newClassOID,
                        char *newParentInstName);
                ~MOIofSNMP_Table();
                int updateMOIs(int &changes);
                char *getSNMP_OID() { return(oid); }
};
Dazu wird dem Konstruktor dieser Klasse
1.
die Internet-Adresse des SNMP-Agenten,
2.
die OID der SNMP-Tabelle,
3.
die OID der OSI-Klasse, die im Gateway eine Tabellenzeile repräsentieren soll,
4.
die OID des Naming Attributs dieser OSI-Klasse und schließlich
5.
der DN (Distinguished Name) der Vaterinstanz, die der Instanz der OSI-Klasse, die die Tabellenzeile repräsentieren soll, in der Containment-Hierarchie übergeordnet ist
übergeben. Eine Instanz dieser C++-Klasse verwaltet weiterhin zwei Listen:
1.
Die oldMOI-Liste enthält alle Indizes der SNMP-Tabellenzeilen, die gerade im Gateway von Instanzen repräsentiert werden.
2.
In der newMOI-Liste werden alle Indizes der SNMP-Tabellenzeilen gespeichert, die gerade im SNMP-Agenten existieren.
Bei der Initialisierung durch den Konstruktor werden zwei leere Listen erzeugt.
Der Aufruf der Methode updateMOIs bewirkt folgendes:
1.
Es werden von der SNMP-Tabelle mit der OID oid in der MIB des SNMP-Agenten auf dem Host mit der Internet-Adresse ipAddress alle Indizes der gerade vorhandenen Tabellenzeilen in dieser Tabelle in der Liste newMOI abgespeichert. Dies wird mit der Methode specialWalk der SNMP-API (siehe 6.1.1) erreicht.
2.
Anschließend werden die beiden Listen newMOI und oldMOI miteinander verglichen:
(a)
Falls ein Index in newMOI, aber nicht in oldMOI existiert, muß eine OSI-Instanz für diese Tabellenzeile im Gateway kreiert werden: Die OSI-Klasse der neu zu kreierenden Instanz wird über classOID identifiziert. Der DN der neuen Instanz setzt sich aus dem ParentInstName und dem RDN dieser Instanz zusammen. Der RDN ergibt sich schließlich aus der OID des Naming Attributs und dem Index der SNMP-Tabellenzeile.
(b)
Falls ein Index in der oldMOI, aber nicht in der newMOI existiert, muß die entsprechende Instanz im Gateway gelöscht werden. Die Identifizierung der zu löschenden Instanz erfolgt durch die classOID (damit wird die OSI-Klasse der Instanz bezeichnet) und dem DN (dieser wird aus dem ParentInstName, der Naming Attribut OID und dem Index berechnet, siehe Punkt (a)).
(c)
Falls ein Index sowohl in oldMOI als auch in newMOI existiert, wird keine Bearbeitung dieser Tabellenzeile notwendig.
Somit kann durch regelmäßigen Aufruf der Methode updateMOIs die SNMP-Tabelle im Gateway repliziert werden, das heißt, jede Tabellenzeile einer SNMP-Tabelle wird von einer OSI-Instanz repräsentiert. Eventuell notwendiges Kreieren bzw. Löschen von OSI-Instanzen wird von dieser C++-Klasse automatisch ausgeführt.


next up previous contents
Next: Die C++-Klasse PollingIntervall Up: Die Global Polling -Komponente Previous: Die Global Polling -Komponente
Copyright Munich Network Management Team