メインコンテンツまでスキップ

3. 定義

SNMPv2-PDU DEFINITIONS ::= BEGIN

-- プロトコルデータユニット

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 タイプ

GetRequest-PDU ::=
[0]
IMPLICIT PDU

GetNextRequest-PDU ::=
[1]
IMPLICIT PDU

Response-PDU ::=
[2]
IMPLICIT PDU

SetRequest-PDU ::=
[3]
IMPLICIT PDU

-- [4] は廃止されました

GetBulkRequest-PDU ::=
[5]
IMPLICIT BulkPDU

InformRequest-PDU ::=
[6]
IMPLICIT PDU

SNMPv2-Trap-PDU ::=
[7]
IMPLICIT PDU

-- Report-PDU の使用法と正確なセマンティクスは現在定義されていません。
-- この PDU を使用する SNMP 管理フレームワークは、その使用法とセマンティクスを定義する必要があります。

Report-PDU ::=
[8]
IMPLICIT PDU

max-bindings
INTEGER ::= 2147483647

PDU ::=
SEQUENCE {
request-id
Integer32,
error-status -- 時々無視される
INTEGER {
noError(0),
tooBig(1),
noSuchName(2), -- プロキシ互換性のため
badValue(3), -- プロキシ互換性のため
readOnly(4), -- プロキシ互換性のため
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 -- 時々無視される
INTEGER (0..max-bindings),
variable-bindings -- 値は時々無視される
VarBindList
}

BulkPDU ::= -- 構造は PDU と同一でなければなりません
SEQUENCE {
request-id
Integer32,
non-repeaters
INTEGER (0..max-bindings),
max-repetitions
INTEGER (0..max-bindings),
variable-bindings -- 値は無視される
VarBindList
}

-- 変数バインディング

VarBind ::=
SEQUENCE {
name
ObjectName,
CHOICE {
value
ObjectSyntax,
unSpecified -- 検索要求内
NULL,
-- 応答内の例外
noSuchObject[0]
IMPLICIT NULL,
noSuchInstance[1]
IMPLICIT NULL,
endOfMibView[2]
IMPLICIT NULL
}
}

-- 変数バインディングリスト

VarBindList ::=
SEQUENCE (SIZE (0..max-bindings)) OF
VarBind

-- 他のモジュールからの定義

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

この ASN.1 モジュールは、SNMP バージョン 2 プロトコルデータユニット (PDU) の構造を定義します。このモジュールには以下が含まれます:

  • PDU タイプ: GetRequest、GetNextRequest、GetBulkRequest、Response、SetRequest、InformRequest、SNMPv2-Trap、および Report
  • エラーステータスコード (error status codes): Response-PDU で使用され、処理結果を示します
  • 変数バインディング (variable bindings): オブジェクト名とその値または例外をペアリングするためのメカニズム
  • データ型 (data types): 単純型(INTEGER、OCTET STRING、OBJECT IDENTIFIER)とアプリケーション全体型(IpAddress、Counter32、Counter64、Gauge32、TimeTicks、Opaque、Unsigned32)の両方