Next: Die C++-Klasse PollingIntervall
Up: Die Global Polling -Komponente
Previous: Die Global Polling -Komponente
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: Die C++-Klasse PollingIntervall
Up: Die Global Polling -Komponente
Previous: Die Global Polling -Komponente
Copyright Munich Network Management Team