Compartilhar via


Cláusula SYNTAX

A macro OBJECT-TYPE contém uma cláusula SYNTAX que define os dados e o tipo do objeto MIB. Embora o Provedor SNMP observe regras gerais para mapear cláusulas SYNTAX, o provedor também segue regras específicas para vários tipos de dados.

Nota

Para obter mais informações sobre como instalar o provedor, consulte Configurando o ambiente do WMI SNMP.

As seguintes regras de mapeamento se aplicam a todos os tipos de dados descritos na tabela abaixo:

  • A representação textual da cláusula SYNTAX é mapeada para o qualificador de propriedade CIM textual_convention.
  • A definição de tipo nomeado na cláusula SYNTAX é mapeada para o qualificador de propriedade CIM object_syntax. Esse mapeamento é diferente dependendo do tipo de dados. Para obter mais informações, consulte as descrições de mapeamento.
  • O tipo SNMP usado ao codificar quadros de protocolo SNMPv1 e SNMPv2C é mapeado para o qualificador de propriedade CIM codificação.
  • O qualificador de propriedade CIM de tipo contém a representação textual que formata o valor do protocolo CIM subjacente.

A tabela a seguir lista os tipos de dados que têm regras específicas que regem o comportamento de mapeamento do provedor.

Tipo de dados SNMP Descrição
tipo primitivo Um dos tipos de dados básicos definidos nos documentos SMI (Estrutura de Informações de Gerenciamento) RFC 1213 e RFC 1903.
convenção textual Definição de tipo gerada por meio do uso explícito da macro TEXTUAL-CONVENTION SNMPv2C ou gerada por meio do uso de um tipo nomeado. Uma convenção textual atribui um nome e, em alguns casos, um intervalo de valores a um tipo de dados existente.
tipo nomeado Referência nomeada a um tipo primitivo, convenção textual ou tipo restrito.
tipo restrito Tipo primitivo, tipo nomeado ou convenção textual que foi restringida por algum mecanismo de subtipagem definido nos documentos SMI RFC 1213 e RFC 1903.

Tipo primitivo

O tipo primitivo é um dos tipos de dados básicos definidos nos documentos de Estrutura de Informações de Gerenciamento (SMI) RFC 1213 e RFC 1903. Os tipos primitivos SNMP são mapeados para tipos definidos por CIM. A tabela a seguir lista o mapeamento que ocorre quando a cláusula SYNTAX se refere explicitamente a um tipo primitivo para SNMPv1. Os qualificadores textual_convention, codificaçãoe object_syntax são sempre iguais ao tipo MIB e o valor padrão é sempre NULL.

Tipo de MIB Tipo de variante CIM valor cimtype
INTEIRO VT_I4 sint32
OCTETSTRING VT_BSTR cadeia de caracteres
OBJECTIDENTIFIER VT_BSTR cadeia de caracteres
ZERO VT_NULL Sem suporte
IpAddress VT_BSTR cadeia de caracteres
Balcão VT_I4 uint32
Medida VT_I4 uint32
TimeTicks VT_I4 uint32
Opaco VT_BSTR cadeia de caracteres
NetworkAddress VT_BSTR cadeia de caracteres

O provedor ignora a macro OBJECT-TYPE quando a cláusula SYNTAX se refere a NULL, explicitamente ou por meio de uma atribuição de tipo nomeado. A tabela a seguir lista o mapeamento que ocorre quando a cláusula SYNTAX se refere explicitamente a um tipo primitivo para SNMPv2. Os qualificadores textual_convention, codificaçãoe object_syntax são sempre iguais ao tipo MIB e o valor padrão é sempre NULL.

Tipo de MIB Tipo de variante CIM valor cimtype
INTEIRO VT_I4 sint32
CADEIA DE CARACTERES OCTET VT_BSTR cadeia de caracteres
IDENTIFICADOR DE OBJETO VT_BSTR cadeia de caracteres
IpAddress VT_BSTR cadeia de caracteres
Contador32 VT_I4 uint32
Medidor32 VT_I4 uint32
Sem sinal32 VT_I4 uint32
Inteiro32 VT_I4 sint32
Contador64 VT_BSTR uint64
TimeTicks VT_I4 uint32
Opaco VT_BSTR cadeia de caracteres

Tipo nomeado

Tipos nomeados SNMP são mapeados para tipos definidos por CIM. Quando a cláusula SYNTAX se refere a um tipo primitivo , de convenção textual ou tipo restrito por meio de uma derivação de atribuição de tipo, use esses tipos para determinar quais procedimentos de mapeamento se aplicam.

  • Se, por meio da derivação das regras de atribuição de tipo, você encontrar uma definição de tipo restrita:

    • E se, por meio de derivação adicional, você encontrar uma das convenções textuais listadas no TEXTUAL-CONVENTION Macro, aplique as regras de mapeamento para tipos restritos e convenções textuais.
    • Caso contrário, se você encontrar um dos tipos primitivos listados em qualquer tabela de tipo primitivo, aplique as regras de mapeamento para tipos primitivos e tipos restritos.
  • Se você encontrar uma das convenções textuais listadas no TEXTUAL_CONVENTION Macro, aplique as regras de mapeamento para convenções textuais.

  • Se você encontrar um dos tipos primitivos listados em qualquer tabela de tipo primitivo, aplique as regras de mapeamento para tipos primitivos.

Nota

Classes que contêm tipos de propriedade que não estão em conformidade com o mapeamento descrito acima não são válidas. Nesse caso, o provedor retornará um erro se e quando o provedor solicitar a recuperação de uma definição de classe durante a execução de uma função de recuperação de instância.

Tipo restrito

Um tipo restrito é um tipo primitivo, tipo nomeado ou convenção textual que foi restringida por algum mecanismo de subtipagem definido nos documentos SMI RFC 1213 e RFC 1903. Quando ocorre subtipagem, qualificadores de CIM adicionais são necessários para especificar os valores de subtipo. A definição de tipo nomeado na cláusula SYNTAX mapeia verbatim para o qualificador de propriedade CIM object_syntax até, mas não incluindo as restrições do subtipo.

Os subtipos podem seguir qualquer um dos seguintes formatos:

  • INTEGER enumerado

    O qualificador de propriedade CIM enumeração especifica os valores enumerados. Esse qualificador é representado como uma cadeia de caracteres que contém uma lista separada por vírgulas de valores inteiros assinados de 32 bits. A tabela a seguir lista os tipos de mapeamento. O valor padrão é sempre NULL.

Tipo de MIB restrito Tipo de variante CIM Qualificadores de CIM
INTEGER enumerado VT_BSTR textual_convention: enumeratedinteger
de codificação: INTEGER
de tipo cimtype: cadeia de caracteres
  • BITS

    O qualificador de propriedade CIM bits especifica os valores enumerados. Esse qualificador é representado como uma cadeia de caracteres que contém uma lista separada por vírgulas de valores inteiros assinados de 32 bits. A tabela a seguir lista os tipos de mapeamento. O valor padrão é sempre NULL.

Tipo de MIB restrito Tipo de variante CIM Qualificadores de CIM
BITS VT_ARRAY | VT_BSTR textual_convention: bits
de codificação: OCTETSTRING
de tipo cimtype: cadeia de caracteres
  • Comprimento da variável

    Quando a cláusula SYNTAX se refere a um tipo primitivo, tipo nomeado ou convenção textual que é subtipo como um OCTET STRING de comprimento variável ou opaco, o qualificador de propriedade CIM variable_length especifica os valores mínimos, máximos e de comprimento fixo associados à definição de tipo. Esse qualificador é implementado como uma cadeia de caracteres no formato a seguir, em que os valores de comprimento variável são representados como inteiros sem sinal de 32 bits.

    (((0.9) .. (0.9)) | (0.9))(, (((0.9) .. (0.9)) | (0.9)))*
    
  • Comprimento fixo

    Quando a cláusula SYNTAX se refere a um tipo primitivo, tipo nomeado ou convenção textual que é subtipo como um OCTET STRING de comprimento fixo ou Opaco, o qualificador de propriedade CIM fixed_length especifica o valor de comprimento fixo. Esse qualificador é representado como um valor inteiro de 32 bits sem sinal.

  • Gama

    Quando a cláusula SYNTAX se refere a um tipo primitivo, tipo nomeado ou convenção textual que é subtipo como um INTEGER ou Medidor de valor fixo ou intervalo, o qualificador de propriedade CIM variable_value especifica os valores de intervalo e fixo associados à definição de tipo. Esse qualificador é implementado como uma cadeia de caracteres no formato a seguir, em que os valores de intervalo e de comprimento fixo são representados como inteiros sem sinal de 32 bits.

    (((0.9)..(0.9))|(0.9))(,(((0.9)..(0.9))|(0.9)))*
    

Código de exemplo

O exemplo a seguir descreve um subtipo INTEGER enumerado.

Status := INTEGER {
up(1),
down(2),
testing(3)
}

Este exemplo mapeia para:

enumeration("up(1),down(2),testing(3)")

O exemplo de código a seguir descreve um subtipo BITS.

Status := BITS {
up(1),
down(2), 
testing(3)
}

O exemplo de código a seguir mapeia para:

bits("up(1),down(2),testing(3)")

O exemplo de código a seguir descreve um subtipo de comprimento variável.

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))

Este exemplo mapeia para:

display_hint("*1x:/1x:"),
encoding("OCTETSTRING"),
textual_convention("OCTETSTRING"),
variable_length ("1,4..85")

O exemplo a seguir descreve um subtipo de comprimento fixo.

IPXADDRESS := OCTET STRING (SIZE (6))

Este exemplo mapeia para:

fixed_length(6)

O exemplo a seguir descreve um subtipo de intervalo.

Status := INTEGER (10..20|8)

Este exemplo mapeia para:

variable_value("10..20,8")