Cláusula SYNTAX
A macro OBJECT-TYPE contém uma cláusula SYNTAX que define os dados e o tipo para o objeto MIB. Enquanto o provedor SNMP observa regras gerais para mapear cláusulas SYNTAX, o provedor também segue regras específicas para vários tipos de dados.
Observação
Para obter mais informações sobre como instalar o provedor, consulte Configurando o ambiente SNMP WMI.
As seguintes regras de mapeamento aplicam-se a todos os tipos de dados descritos na tabela abaixo:
- A representação textual da cláusula SYNTAX mapeia para o qualificador de propriedade CIM textual_convention.
- A definição de tipo nomeado na cláusula SYNTAX mapeia para o qualificador de propriedade CIM object_syntax. Esse mapeamento difere dependendo do tipo de dados. Para obter mais informações, consulte as descrições do 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 cimtype 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 de Estrutura de Informações de Gerenciamento (SMI) RFC 1213 e RFC 1903. |
Convenção textual | Definição de tipo gerada através do uso explícito do SNMPv2C TEXTUAL-CONVENTION macro ou gerada através 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 restringido 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 pelo 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 de codificação textual_convention, e object_syntax são sempre os mesmos que o tipo MIB e o valor padrão é sempre NULL.
Tipo MIB | Tipo de variante CIM | valor cimtype |
---|---|---|
INTEIRO | VT_I4 | sint32 |
OCTETSTRING | VT_BSTR | string |
OBJECTIDENTIFIER | VT_BSTR | string |
NULO | VT_NULL | Não suportado |
Endereço IP | VT_BSTR | string |
Contador | VT_I4 | uint32 |
Calibre | VT_I4 | uint32 |
TimeTicks | VT_I4 | uint32 |
Opaco | VT_BSTR | string |
Endereço de rede | VT_BSTR | string |
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 de codificação textual_convention, e object_syntax são sempre os mesmos que o tipo MIB e o valor padrão é sempre NULL.
Tipo MIB | Tipo de variante CIM | valor cimtype |
---|---|---|
INTEIRO | VT_I4 | sint32 |
CORDA DE OCTETO | VT_BSTR | string |
IDENTIFICADOR DE OBJETO | VT_BSTR | string |
Endereço IP | VT_BSTR | string |
Contador32 | VT_I4 | uint32 |
Gauge32 | VT_I4 | uint32 |
Não assinado32 | VT_I4 | uint32 |
Inteiro32 | VT_I4 | sint32 |
Contador64 | VT_BSTR | uint64 |
TimeTicks | VT_I4 | uint32 |
Opaco | VT_BSTR | string |
Tipo nomeado
Os tipos nomeados SNMP são mapeados para tipos definidos pelo CIM. Quando a cláusula SYNTAX se refere a um tipo primitivo , convenção textualou tipo restrito através 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 restrito:
- E se, por meio de derivação adicional, você encontrar uma das convenções textuais listadas em 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 tipos primitivos, aplique as regras de mapeamento para tipos primitivos e tipos restritos.
Se você encontrar uma das convenções textuais listadas em TEXTUAL_CONVENTION Macro, aplique as regras de mapeamento para convenções textuais.
Se você encontrar um dos tipos primitivos listados em qualquer tabela de tipos primitivos, aplique as regras de mapeamento para tipos primitivos.
Observação
As 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 retorna 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 restringido por algum mecanismo de subtipagem definido nos documentos SMI RFC 1213 e RFC 1903. Quando ocorre subtipagem, qualificadores CIM adicionais são necessários para especificar os valores de subtipo. A definição de tipo nomeado na cláusula SYNTAX mapeia literalmente 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:
Inteiro enumerado
O qualificador de propriedade CIM enumeração especifica os valores enumerados. Este qualificador é representado como uma cadeia de caracteres que contém uma lista separada por vírgulas de valores inteiros de 32 bits assinados. A tabela a seguir lista os tipos de mapeamento. O valor padrão é sempre NULL.
Tipo MIB restrito | Tipo de variante CIM | Qualificadores CIM |
---|---|---|
Inteiro enumerado | VT_BSTR |
textual_convention: enumeratedinteger codificação: INTEGER cimtype: string |
BITS
O qualificador de propriedade CIM bits especifica os valores enumerados. Este qualificador é representado como uma cadeia de caracteres que contém uma lista separada por vírgulas de valores inteiros de 32 bits assinados. A tabela a seguir lista os tipos de mapeamento. O valor padrão é sempre NULL.
Tipo MIB restrito | Tipo de variante CIM | Qualificadores CIM |
---|---|---|
BITS | VT_ARRAY | VT_BSTR |
textual_convention: bits codificação: OCTETSTRING cimtype: string |
Comprimento variável
Quando a cláusula SYNTAX se refere a um tipo primitivo, tipo nomeado ou convenção textual que é subtipada como uma OCTET STRING de comprimento variável ou Opaque, o qualificador de propriedade CIM variable_length especifica os valores mínimo, máximo e de comprimento fixo associados à definição de tipo. Este qualificador é implementado como uma cadeia de caracteres no seguinte formato, onde os valores de comprimento variável são representados como inteiros de 32 bits não assinados.
(((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 é subtipada como uma OCTET STRING de comprimento fixo ou Opaque, o qualificador de propriedade CIM fixed_length especifica o valor de comprimento fixo. Este qualificador é representado como um valor inteiro de 32 bits não assinado.
Gama
Quando a cláusula SYNTAX se refere a um tipo primitivo, tipo nomeado ou convenção textual que é subtipado como um INTEGER ou Gauge de valor variável ou fixo, o qualificador de propriedade CIM variable_value especifica os valores ranged e fixos associados à definição de tipo. Este qualificador é implementado como uma cadeia de caracteres no seguinte formato, onde o intervalo e os valores de comprimento fixo são representados como inteiros de 32 bits não assinados.
(((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")