3. Definitionen
SNMPv2-PDU DEFINITIONS ::= BEGIN
-- Protokolldateneinheiten
PDUs ::=
CHOICE {
get-request
GetRequest-PDU,
get-next-request
GetNextRequest-PDU,
get-bulk-request
GetBulkRequest-PDU,
response
Response-PDU,
set-request
SetRequest-PDU,
inform-request
InformRequest-PDU,
snmpV2-trap
SNMPv2-Trap-PDU,
report
Report-PDU
}
-- PDU-Typen
GetRequest-PDU ::=
[0]
IMPLICIT PDU
GetNextRequest-PDU ::=
[1]
IMPLICIT PDU
Response-PDU ::=
[2]
IMPLICIT PDU
SetRequest-PDU ::=
[3]
IMPLICIT PDU
-- [4] ist veraltet
GetBulkRequest-PDU ::=
[5]
IMPLICIT BulkPDU
InformRequest-PDU ::=
[6]
IMPLICIT PDU
SNMPv2-Trap-PDU ::=
[7]
IMPLICIT PDU
-- Verwendung und genaue Semantik von Report-PDU sind derzeit nicht definiert.
-- Jedes SNMP-Verwaltungsframework, das diese PDU verwendet, muss deren Verwendung und Semantik definieren.
Report-PDU ::=
[8]
IMPLICIT PDU
max-bindings
INTEGER ::= 2147483647
PDU ::=
SEQUENCE {
request-id
Integer32,
error-status -- manchmal ignoriert
INTEGER {
noError(0),
tooBig(1),
noSuchName(2), -- für Proxy-Kompatibilität
badValue(3), -- für Proxy-Kompatibilität
readOnly(4), -- für Proxy-Kompatibilität
genErr(5),
noAccess(6),
wrongType(7),
wrongLength(8),
wrongEncoding(9),
wrongValue(10),
noCreation(11),
inconsistentValue(12),
resourceUnavailable(13),
commitFailed(14),
undoFailed(15),
authorizationError(16),
notWritable(17),
inconsistentName(18)
},
error-index -- manchmal ignoriert
INTEGER (0..max-bindings),
variable-bindings -- Werte werden manchmal ignoriert
VarBindList
}
BulkPDU ::= -- Struktur MUSS mit PDU identisch sein
SEQUENCE {
request-id
Integer32,
non-repeaters
INTEGER (0..max-bindings),
max-repetitions
INTEGER (0..max-bindings),
variable-bindings -- Werte werden ignoriert
VarBindList
}
-- Variablenbindung
VarBind ::=
SEQUENCE {
name
ObjectName,
CHOICE {
value
ObjectSyntax,
unSpecified -- in Abrufanforderungen
NULL,
-- Ausnahmen in Antworten
noSuchObject[0]
IMPLICIT NULL,
noSuchInstance[1]
IMPLICIT NULL,
endOfMibView[2]
IMPLICIT NULL
}
}
-- Variablenbindungsliste
VarBindList ::=
SEQUENCE (SIZE (0..max-bindings)) OF
VarBind
-- Definitionen aus anderen Modulen
Integer32 ::= [UNIVERSAL 2] IMPLICIT INTEGER (-2147483648..2147483647)
ObjectName ::= [UNIVERSAL 6] IMPLICIT OBJECT IDENTIFIER
ObjectSyntax ::= CHOICE {
simple
SimpleSyntax,
application-wide
ApplicationSyntax
}
SimpleSyntax ::= CHOICE {
integer-value
INTEGER (-2147483648..2147483647),
string-value
OCTET STRING (SIZE (0..65535)),
objectID-value
OBJECT IDENTIFIER
}
ApplicationSyntax ::= CHOICE {
ipAddress-value
IpAddress,
counter-value
Counter32,
timeticks-value
TimeTicks,
arbitrary-value
Opaque,
big-counter-value
Counter64,
unsigned-integer-value
Unsigned32
}
IpAddress ::=
[APPLICATION 0]
IMPLICIT OCTET STRING (SIZE (4))
Counter32 ::=
[APPLICATION 1]
IMPLICIT INTEGER (0..4294967295)
Unsigned32 ::=
[APPLICATION 2]
IMPLICIT INTEGER (0..4294967295)
Gauge32 ::= Unsigned32
TimeTicks ::=
[APPLICATION 3]
IMPLICIT INTEGER (0..4294967295)
Opaque ::=
[APPLICATION 4]
IMPLICIT OCTET STRING
Counter64 ::=
[APPLICATION 6]
IMPLICIT INTEGER (0..18446744073709551615)
END
Dieses ASN.1-Modul definiert die Struktur von SNMP-Version-2-Protokolldateneinheiten (PDUs). Das Modul umfasst:
- PDU-Typen: GetRequest, GetNextRequest, GetBulkRequest, Response, SetRequest, InformRequest, SNMPv2-Trap und Report
- Fehlerstatuscodes (error status codes): Werden in Response-PDU verwendet, um Verarbeitungsergebnisse anzuzeigen
- Variablenbindungen (variable bindings): Der Mechanismus zum Paaren von Objektnamen mit ihren Werten oder Ausnahmen
- Datentypen (data types): Sowohl einfache Typen (INTEGER, OCTET STRING, OBJECT IDENTIFIER) als auch anwendungsweite Typen (IpAddress, Counter32, Counter64, Gauge32, TimeTicks, Opaque, Unsigned32)