SYNTAX 句
OBJECT-TYPE マクロには、MIB オブジェクトのデータと型を定義する SYNTAX 句が含まれています。 SNMP プロバイダーでは SYNTAX 句のマッピングに関する一般的な規則を遵守しますが、プロバイダーでは複数のデータ型に固有の規則にも従います。
注意
プロバイダーのインストールの詳細については、「WMI SNMP 環境の設定」を参照してください。
次のマッピング規則は、次の表で説明するすべてのデータ型に適用されます。
- SYNTAX 句のテキスト表現は、CIM プロパティ修飾子 textual_convention にマップされます。
- SYNTAX 句の名前付き型定義は、CIM プロパティ修飾子 object_syntax にマップされます。 このマッピングは、データ型によって異なります。 詳細については、「マッピングの説明」を参照してください。
- SNMPv1 および SNMPv2C プロトコル フレームをエンコードするときに使用される SNMP の種類は、CIM プロパティ修飾子 encoding にマップされます。
- CIM プロパティ修飾子 cimtype には、基になる CIM プロトコル値を書式設定するテキスト表現が含まれています。
次の表は、プロバイダー マッピングの動作を制御する特定のルールを持つデータ型の一覧です。
SNMP データ型 | 説明 |
---|---|
プリミティブ型 | 管理情報構造 (SMI) ドキュメント RFC 1213 と RFC 1903 で定義されている基本データ型の 1 つです。 |
テキスト規則 | SNMPv2C TEXTUAL-CONVENTION マクロを明示的に使用して生成されるか、名前付き型を使用して生成される型定義。 テキスト規則により、既存のデータ型に、名前と、場合によっては値の範囲が割り当てられます。 |
名前付き型 | プリミティブ型、テキスト規則、または制約付き型への名前付き参照。 |
制約付き型 | SMI ドキュメント RFC 1213 および RFC 1903 で定義されているサブタイピング メカニズムによって制約されているプリミティブ型、名前付き型、またはテキスト規則。 |
プリミティブ型
プリミティブ型は、管理情報構造 (SMI) ドキュメント RFC 1213 と RFC 1903 で定義されている基本データ型の 1 つです。 SNMP プリミティブ型は CIM 定義型にマップされます。 次の表に、SYNTAX 句が SNMPv1 のプリミティブ型を明示的に参照する場合に発生するマッピングを示しています。 textual_convention、encoding、object_syntax 修飾子は、常に MIB の種類と同じであり、既定値は常に NULL です。
MIB 型 | CIM バリアント型 | cimtype の値 |
---|---|---|
INTEGER | VT_I4 | sint32 |
OCTETSTRING | VT_BSTR | string |
OBJECTIDENTIFIER | VT_BSTR | string |
NULL | VT_NULL | サポートされていません |
IpAddress | VT_BSTR | string |
カウンタ | VT_I4 | uint32 |
ゲージ | VT_I4 | uint32 |
TimeTicks | VT_I4 | uint32 |
非透過的 | VT_BSTR | string |
NetworkAddress | VT_BSTR | string |
SYNTAX 句で明示的に、または名前付き型の割り当てを使用して NULL を参照する場合、プロバイダーでは OBJECT-TYPE マクロが無視されます。 次の表に、SYNTAX 句が SNMPv2 のプリミティブ型を明示的に参照する場合に発生するマッピングを示しています。 textual_convention、encoding、object_syntax 修飾子は、常に MIB の種類と同じであり、既定値は常に NULL です。
MIB 型 | CIM バリアント型 | cimtype の値 |
---|---|---|
INTEGER | VT_I4 | sint32 |
OCTET STRING | VT_BSTR | string |
OBJECT IDENTIFIER | VT_BSTR | string |
IpAddress | VT_BSTR | string |
Counter32 | VT_I4 | uint32 |
Gauge32 | VT_I4 | uint32 |
Unsigned32 | VT_I4 | uint32 |
Integer32 | VT_I4 | sint32 |
Counter64 | VT_BSTR | uint64 |
TimeTicks | VT_I4 | uint32 |
非透過的 | VT_BSTR | string |
名前付き型
SNMP 名前付き型は CIM 定義型にマップされます。 SYNTAX 句で、型割り当ての派生によってプリミティブ型、テキスト規則、または制約付き型を参照する場合は、それらの型を使用して、どのマッピング プロシージャが適用されるかを判断します。
型割り当て規則の派生によって、制約付き型定義が発生した場合、次を行います。
- さらなる派生により、TEXTUAL-CONVENTION マクロに記載されているテキスト表記規則の 1 つが見つかった場合は、制約付き型とテキスト規則のマッピング規則を適用します。
- それ以外の場合、いずれかのプリミティブ型テーブルに一覧表示されているプリミティブ型のいずれかが見つかった場合は、プリミティブ型と制約付き型のマッピング規則を適用します。
TEXTUAL_CONVENTION マクロに記載されているテキスト表記規則のいずれかが発生した場合は、テキスト規則のマッピング規則を適用します。
いずれかのプリミティブ型テーブルに一覧表示されているプリミティブ型のいずれかが見つかった場合は、プリミティブ型のマッピング規則を適用します。
注意
上記のマッピングに準拠していないプロパティ型を含むクラスは無効です。 この場合、インスタンス取得関数の実行中にプロバイダーからクラス定義の取得が要求された場合、プロバイダーからエラーが返されます。
制約付き型
制約付き型とは、SMI ドキュメント RFC 1213 および RFC 1903 で定義されているサブタイピング メカニズムによって制約されているプリミティブ型、名前付き型、またはテキスト規則です。 サブタイピングが発生した場合は、サブタイプ値を指定するために追加の CIM 修飾子が必要です。 SYNTAX 句の名前付き型定義では、サブタイプの制約を含まない CIM プロパティ修飾子 object_syntax に逐語的にマップします。
サブタイプは、次のいずれかの形式に従うことができます。
Enumerated INTEGER
CIM プロパティ修飾子 enumeration では、列挙値を指定します。 この修飾子は、符号付き 32 ビット整数値のコンマ区切りのリストを含む文字列として表されます。 次の表に、マッピングの種類を示します。 既定値は常に NULL です。
制約付き MIB 型 | CIM バリアント型 | CIM 修飾子 |
---|---|---|
Enumerated INTEGER | VT_BSTR |
textual_convention: enumeratedinteger encoding: INTEGER cimtype: string |
BITS
CIM プロパティ修飾子 bits では、列挙値を指定します。 この修飾子は、符号付き 32 ビット整数値のコンマ区切りのリストを含む文字列として表されます。 次の表に、マッピングの種類を示します。 既定値は常に NULL です。
制約付き MIB 型 | CIM バリアント型 | CIM 修飾子 |
---|---|---|
BITS | VT_ARRAY | VT_BSTR |
textual_convention: bits encoding: OCTETSTRING cimtype: string |
可変長
SYNTAX 句で、可変長 OCTET STRING または Opaque としてサブタイプ化されたプリミティブ型、名前付き型、またはテキスト規則を参照する場合、CIM プロパティ修飾子 variable_length では、型定義に関連付けられている最小、最大、固定長の値を指定します。 この修飾子は、可変長の値が符号なし 32 ビット整数として表される次の形式の文字列として実装されます。
(((0.9) .. (0.9)) | (0.9))(, (((0.9) .. (0.9)) | (0.9)))*
固定長
SYNTAX 句で、固定長 OCTET STRING または Opaque としてサブタイプ化されたプリミティブ型、名前付き型、またはテキスト規則を参照する場合、CIM プロパティ修飾子 fixed_length では固定長値を指定します。 この修飾子は、符号なし 32 ビット整数値として表されます。
範囲
SYNTAX 句で、範囲指定型または固定値 INTEGER またはゲージとしてサブタイプ化されたプリミティブ型、名前付き型、またはテキスト規則を参照する場合、CIM プロパティ修飾子 variable_value では、型定義に関連付けられている範囲指定値と固定値を指定します。 この修飾子は、範囲と固定長の値が符号なし 32 ビット整数として表される次の形式の文字列として実装されます。
(((0.9)..(0.9))|(0.9))(,(((0.9)..(0.9))|(0.9)))*
コード例
次の例では、列挙された INTEGER サブタイプについて説明します。
Status := INTEGER {
up(1),
down(2),
testing(3)
}
この例は、次にマップされます。
enumeration("up(1),down(2),testing(3)")
次のコード例では、BITS サブタイプを示しています。
Status := BITS {
up(1),
down(2),
testing(3)
}
次のコード例は、次にマップされます。
bits("up(1),down(2),testing(3)")
次のコード例では、可変長サブタイプを示しています。
MySnmpOSIAddress ::= TEXTUAL-CONVENTION
DISPLAY-HINT "*1x:/1x:"
STATUS current
DESCRIPTION
"Represents an OSI transport-address:
octets contents encoding
1 length of NSAP 'n' as an unsigned-integer
(either 0 or from 3 to 20)
2..(n+1) NSAP concrete binary representation
(n+2)..m TSEL string of (up to 64) octets
"
SYNTAX OCTET STRING (SIZE (1|4..85))
この例は、次にマップされます。
display_hint("*1x:/1x:"),
encoding("OCTETSTRING"),
textual_convention("OCTETSTRING"),
variable_length ("1,4..85")
次の例では、固定長サブタイプを示しています。
IPXADDRESS := OCTET STRING (SIZE (6))
この例は、次にマップされます。
fixed_length(6)
次の例では、範囲サブタイプを示しています。
Status := INTEGER (10..20|8)
この例は、次にマップされます。
variable_value("10..20,8")