next up previous contents index
Next: Abbildung von Gruppen und Up: Der JIDM-Algorithmus Previous: Umsetzung der ASN.1-Datentypen

Umsetzung von MIB-Modulen

    Ein SNMPv2-Informationsmodul enthält die Beschreibung einer MIB mit Strukturierungs- und/oder Informationsknoten. Beispiel für ein solches Modul ist die MIB-II [#!RFC1213!#]:
RFC1213-MIB DEFINITIONS ::= BEGIN
IMPORTS
        mgmt, NetworkAddress, IpAddress, Counter, Gauge,
                TimeTicks
            FROM RFC1155-SMI
        OBJECT-TYPE
                FROM RFC-1212;
mib-2      OBJECT IDENTIFIER ::= { mgmt 1 }

-- textual conventions
DisplayString ::=
    OCTET STRING
PhysAddress ::=
    OCTET STRING
-- groups in MIB-II

system       OBJECT IDENTIFIER ::= { mib-2 1 }
interfaces   OBJECT IDENTIFIER ::= { mib-2 2 }
at           OBJECT IDENTIFIER ::= { mib-2 3 }
ip           OBJECT IDENTIFIER ::= { mib-2 4 }
icmp         OBJECT IDENTIFIER ::= { mib-2 5 }
tcp          OBJECT IDENTIFIER ::= { mib-2 6 }
udp          OBJECT IDENTIFIER ::= { mib-2 7 }
egp          OBJECT IDENTIFIER ::= { mib-2 8 }
transmission OBJECT IDENTIFIER ::= { mib-2 10 }
snmp         OBJECT IDENTIFIER ::= { mib-2 11 }
          
-- Formale Beschreibung der einzelnen Gruppen

END

Jedes Informationsmodul wird auf ein IDL-Modul mit gleichem Identifikator (im Beispiel RFC1213-MIB) abgebildet. Der Dateiname entspricht dem Modulnamen, der um das Suffix ,,.idl`` ergänzt wird. In diese Datei werden alle den ASN.1-Makros des Moduls entsprechenden IDL-Definitionen geschrieben; sie sieht für das obige Beispiel folgendermaßen aus:


// rfc1213.idl  
#ifndef RFC1213_MIB_idl 
#define RFC1213_MIB_idl 
#include ``SNMPMgmt.idl''
module RFC1213_MIB { 
#include ``rfc1155.idl'' 
typedef RFC1155_SMI::TimeTicksType TimeTicksType; 
typedef RFC1155_SMI::GaugeType GaugeType; 
typedef RFC1155_SMI::CounterType CounterType; 
typedef RFC1155_SMI::IpAddressType IpAddressType; 
typedef RFC1155_SMI::NetworkAddressType NetworkAddressType; 
#define mgmt RFC1155_SMI::mgmt; 
const ASN1_ObjectIdentifier mib_2 = ``mgmt.1'';
const ASN1_ObjectIdentifier system = ``mib_2.1'';
const ASN1_ObjectIdentifier interfaces = ``mib_2.2'';
const ASN1_ObjectIdentifier at = ``mib_2.3'';
const ASN1_ObjectIdentifier ip = ``mib_2.4'';
const ASN1_ObjectIdentifier icmp = ``mib_2.5'';
const ASN1_ObjectIdentifier tcp = ``mib_2.6'';
const ASN1_ObjectIdentifier udp = ``mib_2.7'';
const ASN1_ObjectIdentifier egp = ``mib_2.8'';
const ASN1_ObjectIdentifier transmission = ``mib_2.10'';
const ASN1_ObjectIdentifier snmp = ``mib_2.11'';
// IDL-Beschreibung der Gruppen 
} 
#endif 

Zu beachten ist, daß sämtliche Objektidentifikatoren als Konstanten deklariert werden; sie werden für die Adressierung der Managed Objects benötigt.



Copyright Munich Network Management Team