Предложение SYNTAX
Макрос OBJECT-TYPE содержит предложение SYNTAX, которое определяет данные и тип для объекта MIB. Хотя поставщик SNMP соблюдает общие правила сопоставления предложений SYNTAX, поставщик также следует правилам, характерным для нескольких типов данных.
Примечание
Дополнительные сведения об установке поставщика см. в разделе Настройка среды SNMP WMI.
Следующие правила сопоставления применяются ко всем типам данных, описанным в таблице ниже.
- Текстовое представление предложения SYNTAX сопоставляется с квалификатором свойств CIM textual_convention.
- Определение именованного типа в предложении SYNTAX сопоставляется с квалификатором свойств CIM object_syntax. Это сопоставление зависит от типа данных. Дополнительные сведения см. в описании сопоставления.
- Тип SNMP, используемый при кодировании кадров протокола SNMPv1 и SNMPv2C, сопоставляется с кодировкой квалификатора свойств 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 | строка |
NULL | VT_NULL | Не поддерживается |
IPAddress | VT_BSTR | строка |
Счетчик | VT_I4 | uint32 |
Датчик | VT_I4 | uint32 |
TimeTicks | VT_I4 | uint32 |
Непрозрачный | VT_BSTR | строка |
NetworkAddress | VT_BSTR | строка |
Поставщик игнорирует макрос OBJECT-TYPE, когда предложение SYNTAX ссылается на NULL явным образом или с помощью назначения именованного типа. В следующей таблице перечислены сопоставления, которые возникают, когда предложение SYNTAX явно ссылается на примитивный тип для SNMPv2. Квалификаторы textual_convention, кодировки и object_syntax всегда совпадают с типом MIB, а значение по умолчанию всегда равно NULL.
Тип MIB | Тип варианта CIM | значение cimtype |
---|---|---|
ЦЕЛОЕ ЧИСЛО | VT_I4 | sint32 |
СТРОКА OCTET | VT_BSTR | строка |
ИДЕНТИФИКАТОР ОБЪЕКТА | VT_BSTR | строка |
IPAddress | VT_BSTR | строка |
Счетчик32 | VT_I4 | uint32 |
Датчик32 | VT_I4 | uint32 |
Unsigned32 | VT_I4 | uint32 |
Integer32 | VT_I4 | sint32 |
Счетчик64 | 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 до, но не включает ограничения подтипа.
Подтипы могут соответствовать любому из следующих форматов:
Перечисление INTEGER
Перечисление квалификатора свойств CIM задает перечисленные значения. Этот квалификатор представлен в виде строки, содержащей разделенный запятыми список 32-разрядных целочисленных значений со знаком. В следующей таблице перечислены типы сопоставления. Значение по умолчанию всегда равно NULL.
Ограниченный тип MIB | Тип варианта CIM | Квалификаторы CIM |
---|---|---|
Перечисление INTEGER | VT_BSTR |
textual_convention: enumeratedinteger кодировка: INTEGER cimtype: string |
BITS
Биты квалификатора свойства CIM указывают перечисленные значения. Этот квалификатор представлен в виде строки, содержащей разделенный запятыми список 32-разрядных целочисленных значений со знаком. В следующей таблице перечислены типы сопоставления. Значение по умолчанию всегда равно NULL.
Ограниченный тип MIB | Тип варианта CIM | Квалификаторы CIM |
---|---|---|
BITS | 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 фиксированной длины или непрозрачный тип, квалификатор свойства CIM fixed_length задает значение фиксированной длины. Этот квалификатор представлен в виде 32-разрядного целочисленного значения без знака.
Диапазон
Если предложение SYNTAX ссылается на примитивный тип, именованный тип или текстовое соглашение, которое подтипируется как диапазон или фиксированное значение 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")