next up previous contents
Next: Zusammenfassung Up: Übersetzung von ASN.1-Makros in Previous: Abbildung der Managementobjekte

Abbildung des NOTIFICATION-TYPE Makros

Ereignismeldungen sind beim Internet-Management SNMP-Protokolleinheiten, die von einer SNMP-Einheit (einem Manager oder einem Agenten) unaufgefordert an eine zweite SNMP-Einheit gesendet werden. Im Gegensatz dazu entspricht die Meldung eines Events in der CORBA-Umgebung im Prinzip dem Aufruf einer bestimmten (push- oder pull-)Methode eines Objektes (s. 2.3.1). Bei der push-event-Kommunikation etwa ruft ein Objekt, das ein Ereignis einem anderen Objekt melden will, mit einem CORBA-Request eine push-Methode auf diesem Objekt auf. Um diesen Mechanismus zu gewährleisten, werden für jedes SNMP-Modul, in dem Ereignismeldungen vorgesehen sind, genau zwei Schnittstellen definiert, die entsprechende push- bzw. pull-Methoden zur Verfügung stellen:

Die push- bzw. pull-Methoden ergeben sich aus den NOTIFICATION-TYPE Makros eines MIB-Moduls, da mit diesem festgelegt wird, welche Managementinformation in einem SNMP-Trap enthalten ist.

Für jedes NOTIFICATION-TYPE Makro werden diese Schnittstellen um insgesamt drei Methoden erweitert und zwar:

Die Parameter enthalten die OID und den Kontext der Quellinstanz sowie den Zeitpunkt des Traps. Folgendes Beispiel des NOTIFICATION-TYPE linkUp erläutert die Vorgangsweise genauer:

...

linkUp NOTIFICATION-TYPE
     OBJECTS { ifIndex }
     STATUS current
     DESCRIPTION
          ``A linkUp trap signifies that the SNMPv2 entity ...''
     ::= { snmpTraps 4 }
...
Damit stehen zunächst die Namen der Funktionen fest: linkUp für die Schnittstelle SnmpNotifications einerseits, und pull_linkUp sowie try_linkUp für die Schnittstelle PullSnmpNotifications andererseits. Mit der Funktion try_linkUp kann abgefragt werden, ob ein Supplier eine solche Ereignismeldung vorrätig hat (s. 2.3.1). Ihr Rückgabewert ist abhängig davon entweder true oder false. Die beiden anderen Funktionen liefern keine Werte zurück.

In der optionalen OBJECTS-Klausel werden jene MIB-Objekte aufgelistet, deren Information zusätzlich mit der Ereignismeldung verschickt wird. Im Beispiel besteht diese Liste nur aus dem Managed Object ifIndex, also dem Zeilenindex des soeben ,,eingeschalteten`` Links in der Interface-Tabelle. Die OBJECTS-Klausel wird auf ein IDL-Strukt abgebildet. Der Name dafür ist der Deskriptor des NOTIFICATION-TYPE-Makros mit dem Suffix Type. Die Elemente sind die Werte der Managed Objects in der OBJECTS-Liste, den Typ der Elemente erhält man aus der SYNTAX-Klausel des jeweiligen OBJECT-TYPE-Makros. Dieser IDL-Strukt wird ein weiterer in-Parameter der Methode linkUp bzw. ein weiterer out-Parameter der Methoden pull_linkUp und try_linkUp. Es sei darauf hingewiesen, daß bei der generischen Event-Kommunikation nur ein Parameter vom Typ any erlaubt ist (s. 2.3.1). Dies war mitunter ein Grund, für SNMP-Traps typisierte Events vorzusehen. Dennoch sind im Modul SNMPMgmt für generische Eventkommunikation die Schnittstellen GenericNotification und PullGenericNotification mit den Methoden snmp_notification bzw. pull_snmp_notification und try_snmp_notification definiert.

Schließlich wird der OBJECT IDENTIFIER des NOTIFICATION-TYPE-Makros als konstante Zeichenkette übernommen. Für dieses Beispiel erhält man das folgende IDL-Mapping:


struct IfIndexType {
		 ASN1_ObjectIdentifier var_name;
		 ASN1_ObjectIdentifier var_value;
};
struct LinkUpType {
		 ASN1_Integer ifIndex; 
};
const ASN1_ObjectIdentifier linkUp = ``snmpTraps.4''; 
/* DESCRIPTION:
		 ``A linkUp trap signifies that the SNMPv2 entity, ...'' */
 
interface SnmpNotifications {
		 void linkUp(
				 in ASN1_ObjectIdentifier srcParty,
				 in ASN1_ObjectIdentifier snmpContext,
				 in SNMPv2TC::TimeStampType eventTime,
				 in LinkUpType notification_info); 
};
interface PullSnmpNotifications {
		 void pull_linkUp(
				 out ASN1_ObjectIdentifier srcParty,
				 out ASN1_ObjectIdentifier snmpContext,
				 out SNMPv2TC::TimeStampType eventTime,
				 out LinkUpType notification_info);
		 boolean try_linkUp(
				 out ASN1_ObjectIdentifier srcParty,
				 out ASN1_ObjectIdentifier snmpContext,
				 out SNMPv2TC::TimeStampType eventTime,
				 out LinkUpType notification_info);
};
Es sei nochmals erwähnt, daß die Schnittstellen SnmpNotifications und PullSnmpNotifications für jedes Modul nur einmal definiert werden. Wenn mehrere NOTIFICATION-TYPE-Makros in einem MIB-Modul vorhanden sind, so werden diese Schnittstellen um entsprechende Methoden ergänzt.


next up previous contents
Next: Zusammenfassung Up: Übersetzung von ASN.1-Makros in Previous: Abbildung der Managementobjekte
Copyright Munich Network Management Team