Cláusula SYNTAX

La macro OBJECT-TYPE contiene una cláusula SYNTAX que define los datos y el tipo del objeto MIB. Aunque el proveedor SNMP observa reglas generales para las cláusulas SYNTAX de asignación, este también sigue las reglas específicas de varios tipos de datos.

Nota:

Para obtener más información sobre cómo instalar el proveedor, vea Configuración del entorno SNMP de WMI.

Estas reglas de asignación se aplican a todos los tipos de datos descritos en la tabla que aparece después:

  • La representación textual de la cláusula SYNTAX se asigna al calificador de propiedad CIM textual_convention.
  • La definición de tipo con nombre de la cláusula SYNTAX asigna al calificador de propiedad CIM object_syntax. Esta asignación difiere según el tipo de datos. Para obtener más información, vea las descripciones de asignación.
  • El tipo SNMP que se usa al codificar marcos de protocolo SNMPv1 y SNMPv2C se asigna al calificador de propiedad CIM encoding.
  • El calificador de propiedad CIM cimtype contiene la representación textual que da formato al valor del protocolo CIM subyacente.

En esta tabla se enumeran los tipos de datos que tienen reglas específicas que rigen el comportamiento de asignación de proveedores.

Tipo de datos SNMP Descripción
Tipo primitivo Uno de los tipos de datos básicos definidos en la estructura de información de administración (SMI) documenta RFC 1213 y RFC 1903.
Convención textual Definición de tipo generada mediante el uso explícito de la macro TEXTUAL-CONVENTION de SNMPv2C o mediante el uso de un tipo con nombre. Una convención textual asigna un nombre y, en algunos casos, un intervalo de valores a un tipo de datos existente.
Tipo con nombre Referencia con nombre a un tipo primitivo, convención textual o tipo restringido.
Tipo restringido Tipo primitivo, tipo con nombre o convención textual restringidos por algún mecanismo de subtipado definido en los documentos de SMI RFC 1213 y RFC 1903.

Tipo primitivo

El tipo primitivo es no de los tipos de datos básicos definidos en los documentos de estructura de información de administración (SMI) RFC 1213 y RFC 1903. Los tipos primitivos SNMP se asignan a tipos definidos por CIM. En la tabla siguiente se muestra la asignación que tiene lugar cuando la cláusula SYNTAX hace referencia explícitamente a un tipo primitivo para SNMPv1. Los calificadores textual_convention, encoding y object_syntax siempre son los mismos que el tipo MIB y el valor predeterminado siempre es NULL.

Tipo MIB Tipo de variante CIM Valor cimtype
INTEGER VT_I4 sint32
OCTETSTRING VT_BSTR string
OBJECTIDENTIFIER VT_BSTR string
NULL VT_NULL No compatible
IpAddress VT_BSTR string
Contador VT_I4 uint32
Indicador VT_I4 uint32
TimeTicks VT_I4 uint32
Opaca VT_BSTR string
NetworkAddress VT_BSTR string

El proveedor omite la macro OBJECT-TYPE cuando la cláusula SYNTAX hace referencia a NULL, ya sea explícitamente o mediante una asignación de tipo con nombre. En la tabla siguiente se muestra la asignación que tiene lugar cuando la cláusula SYNTAX hace referencia explícitamente a un tipo primitivo para SNMPv2. Los calificadores textual_convention, encoding y object_syntax siempre son los mismos que el tipo MIB y el valor predeterminado siempre es NULL.

Tipo MIB Tipo de variante CIM Valor cimtype
INTEGER VT_I4 sint32
OCTET STRING VT_BSTR string
OBJECT IDENTIFIER VT_BSTR string
IpAddress VT_BSTR string
Counter32 VT_I4 uint32
Gauge32 VT_I4 uint32
Unsigned32 VT_I4 uint32
Integer32 VT_I4 sint32
Counter64 VT_BSTR uint64
TimeTicks VT_I4 uint32
Opaca VT_BSTR string

Tipo con nombre

Los tipos con nombre SNMP se asignan a tipos definidos por CIM. Cuando la cláusula SYNTAX hace referencia a un tipo primitivo, convención textual o tipo restringido mediante una derivación de asignación de tipos, use dichos tipos para determinar qué procedimientos de asignación se aplican.

  • Si, mediante la derivación de las reglas de asignación de tipos, se encuentra una definición de tipo restringida, tiene estas opciones:

    • Si, mediante una derivación adicional, encuentra una de las convenciones textuales enumeradas en la macro TEXTUAL-CONVENTION, aplique las reglas de asignación para los tipos restringidos y las convenciones textuales.
    • De lo contrario, si encuentra uno de los tipos primitivos enumerados en cualquiera de las tablas de tipos primitivos, aplique las reglas de asignación para tipos primitivos y tipos restringidos.
  • Si encuentra una de las convenciones textuales enumeradas en la macro TEXTUAL_CONVENTION, aplique las reglas de asignación para las convenciones de texto.

  • Si encuentra uno de los tipos primitivos enumerados en cualquiera de las tablas de tipos primitivos, aplique las reglas de asignación para tipos primitivos.

Nota:

Las clases que contienen tipos de propiedad que no se ajustan a la asignación descrita anteriormente no son válidas. En este caso, el proveedor devuelve un error si y cuando este solicita la recuperación de una definición de clase mientras se ejecuta una función de recuperación de instancia.

Tipo restringido

Un tipo restringido es un tipo primitivo, tipo con nombre o convención textual restringidos por algún mecanismo de subtipado definido en los documentos de SMI RFC 1213 y RFC 1903. Cuando se este subtipado, se requieren calificadores CIM adicionales para especificar los valores de subtipo. La definición de tipo con nombre de la cláusula SYNTAX asigna textualmente al calificador de propiedad CIM object_syntax hasta las restricciones del subtipo, pero sin incluirlas.

Los subtipos pueden seguir cualquiera de estos formatos:

  • INTEGER enumerado

    La enumeración del calificador de propiedad CIM especifica los valores enumerados. Este calificador se representa como una cadena que contiene una lista separada por comas de valores enteros de 32 bits con signo. En la tabla siguiente se enumeran los tipos de asignación. El valor predeterminado siempre es NULL.

Tipo de MIB restringido Tipo de variante CIM Calificadores CIM
INTEGER enumerado VT_BSTR textual_convention: enumeratedinteger
encoding: INTEGER
cimtype: string
  • BITS

    La enumeración de calificador de propiedad CIM especifican los valores enumerados. Este calificador se representa como una cadena que contiene una lista separada por comas de valores enteros de 32 bits con signo. En la tabla siguiente se enumeran los tipos de asignación. El valor predeterminado siempre es NULL.

Tipo de MIB restringido Tipo de variante CIM Calificadores CIM
BITS VT_ARRAY | VT_BSTR textual_convention: bits
encoding: OCTETSTRING
cimtype: string
  • Longitud variable

    Cuando la cláusula SYNTAX hace referencia a un tipo primitivo, un tipo con nombre o una convención textual que está subtipada como OCTET STRING de longitud variable u opaco, el calificador de la propiedad CIM variable_length especifica los valores mínimos, máximos y de longitud fija asociados a la definición de tipo. Este calificador se implementa como una cadena en el formato siguiente donde los valores de longitud variable se representan como enteros de 32 bits sin signo.

    (((0.9) .. (0.9)) | (0.9))(, (((0.9) .. (0.9)) | (0.9)))*
    
  • Longitud fija

    Cuando la cláusula SYNTAX hace referencia a un tipo primitivo, un tipo con nombre o una convención textual que está subtipada como una OCTET STRING de longitud fija u opaca, el calificador de propiedad CIM fixed_length especifica el valor de longitud fija. Este calificador se representa como un valor entero de 32 bits sin signo.

  • Intervalo

    Cuando la cláusula SYNTAX hace referencia a un tipo primitivo, un tipo con nombre o una convención textual que está subtipada como un INTEGER de valor fijo o con intervalo, el calificador de propiedad CIM variable_value especifica los valores fijos y los intervalos asociados a la definición de tipo. Este calificador se implementa como una cadena en el formato siguiente donde los valores de longitud fijos y con intervalo se representan como enteros de 32 bits sin signo.

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

Código de ejemplo

En este ejemplo se describe un subtipo INTEGER enumerado.

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

Este ejemplo se asigna a lo siguiente:

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

En este ejemplo de código se describe un subtipo BITS.

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

Este ejemplo de código se asigna a lo siguiente:

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

En este ejemplo de código se describe un subtipo de longitud variable.

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 ejemplo se asigna a lo siguiente:

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

En este ejemplo se describe un subtipo de longitud fija.

IPXADDRESS := OCTET STRING (SIZE (6))

Este ejemplo se asigna a lo siguiente:

fixed_length(6)

En este ejemplo se describe un subtipo de intervalo.

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

Este ejemplo se asigna a lo siguiente:

variable_value("10..20,8")