SYNTAX 子句
OBJECT-TYPE 宏包含一个语法子句,该子句定义 MIB 对象的数据和类型。 虽然 SNMP 提供程序遵守映射 SYNTAX 子句的一般规则,但提供程序也遵循特定于多种数据类型的规则。
注意
有关安装提供程序的详细信息,请参阅 设置 WMI SNMP 环境。
以下映射规则适用于下表中所述的所有数据类型:
- SYNTAX 子句的文本表示形式映射到 CIM 属性限定符 textual_convention。
- SYNTAX 子句中的命名类型定义映射到 CIM 属性限定符 object_syntax。 此映射因数据类型而异。 有关详细信息,请参阅映射说明。
- 编码 SNMPv1 和 SNMPv2C 协议帧时使用的 SNMP 类型映射到 CIM 属性限定符 编码。
- CIM 属性限定符 cimtype 包含设置基础 CIM 协议值格式的文本表示形式。
下表列出了具有控制提供程序映射行为的特定规则的数据类型。
SNMP 数据类型 | 描述 |
---|---|
基元类型 | 管理信息结构(SMI)中定义的基本数据类型之一记录 RFC 1213 和 RFC 1903。 |
文本约定 | 通过显式使用 SNMPv2C TEXTUAL-CONVENTION 宏或通过使用命名类型生成的类型定义。 文本约定为现有数据类型分配一个名称,在某些情况下,将一系列值分配给现有数据类型。 |
命名类型 | 对基元类型、文本约定或约束类型的命名引用。 |
约束类型 | 受 SMI 文档 RFC 1213 和 RFC 1903 中定义的一些子类型约束的基元类型、命名类型或文本约定。 |
基元类型
基元类型是管理信息结构(SMI)文档 RFC 1213 和 RFC 1903 中定义的基本数据类型之一。 SNMP 基元类型映射到 CIM 定义的类型。 下表列出了当 SYNTAX 子句显式引用 SNMPv1 的基元类型时发生的映射。 textual_convention、编码和 object_syntax 限定符始终与 MIB 类型相同,默认值始终 NULL。
MIB 类型 | CIM 变体类型 | cimtype 值 |
---|---|---|
整数 | VT_I4 | sint32 |
OCTETSTRING | VT_BSTR | 字符串 |
OBJECTIDENTIFIER | VT_BSTR | 字符串 |
零 | VT_NULL | 不支持 |
IpAddress | VT_BSTR | 字符串 |
计数器 | VT_I4 | uint32 |
轨距 | VT_I4 | uint32 |
TimeTicks | VT_I4 | uint32 |
不透明 | VT_BSTR | 字符串 |
NetworkAddress | VT_BSTR | 字符串 |
当 SYNTAX 子句引用 NULL(显式或通过命名类型分配)时,提供程序将忽略 OBJECT-TYPE 宏。 下表列出了当 SYNTAX 子句显式引用 SNMPv2 的基元类型时发生的映射。 textual_convention、编码和 object_syntax 限定符始终与 MIB 类型相同,默认值始终 NULL。
MIB 类型 | CIM 变体类型 | cimtype 值 |
---|---|---|
整数 | VT_I4 | sint32 |
OCTET 字符串 | VT_BSTR | 字符串 |
对象标识符 | VT_BSTR | 字符串 |
IpAddress | VT_BSTR | 字符串 |
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 | 字符串 |
命名类型
SNMP 命名类型映射到 CIM 定义的类型。 当 SYNTAX 子句引用 基元类型、文本约定或通过类型赋值派生 约束类型时,请使用这些类型来确定哪些映射过程适用。
如果通过类型分配规则的派生,则会遇到受约束的类型定义:
- 如果通过进一步派生,则遇到宏 TEXTUAL-CONVENTION中列出的文本约定之一,然后对约束类型和文本约定应用映射规则。
- 否则,如果遇到任一基元类型表中所列的基元类型之一,请为基元类型和约束类型应用映射规则。
如果遇到 TEXTUAL_CONVENTION 宏中列出的文本约定之一,请对文本约定应用映射规则。
如果遇到任一基元类型表中所列的基元类型之一,请为基元类型应用映射规则。
注意
包含不符合上述映射的属性类型的类无效。 在这种情况下,如果提供程序在执行实例检索函数时请求检索类定义,则提供程序将返回错误。
约束类型
约束类型是基元类型、命名类型或文本约定,受 SMI 文档 RFC 1213 和 RFC 1903 中定义的一些子类型约束。 发生子类型化时,需要其他 CIM 限定符来指定子类型值。 SYNTAX 子句中的命名类型定义将逐字映射到 CIM 属性限定符 object_syntax,但不包括子类型的约束。
子类型可能遵循以下任一格式:
枚举整数
CIM 属性限定符 枚举 指定枚举值。 此限定符表示为包含带符号 32 位整数值的逗号分隔列表的字符串。 下表列出了映射类型。 默认值始终 NULL。
受约束的 MIB 类型 | CIM 变体类型 | CIM 限定符 |
---|---|---|
枚举整数 | VT_BSTR |
textual_convention:enumeratedinteger 编码:INTEGER cimtype: string |
位
CIM 属性限定符 位 指定枚举值。 此限定符表示为包含带符号 32 位整数值的逗号分隔列表的字符串。 下表列出了映射类型。 默认值始终 NULL。
受约束的 MIB 类型 | CIM 变体类型 | CIM 限定符 |
---|---|---|
位 | VT_ARRAY |VT_BSTR |
textual_convention:位 编码: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 子句引用基元类型、命名类型或文本约定,该约定被子类型化为 ranged 或 fixed-value INTEGER 或 Gauge 时,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")