Поделиться через


Предложение 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")