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, el proveedor 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.

Las siguientes reglas de asignación se aplican a todos los tipos de datos descritos en la tabla siguiente:

  • 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 se asigna al calificador de propiedad CIM object_syntax. Esta asignación difiere en función del tipo de datos. Para obtener más información, consulte las descripciones de asignación.
  • El tipo SNMP utilizado al codificar marcos de protocolo SNMPv1 y SNMPv2C se asignan a la codificación del calificador de la propiedad CIM.
  • El cimtype calificador de propiedad CIM contiene la representación textual que da formato al valor del protocolo CIM subyacente.

En la tabla siguiente 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 a través del uso explícito de la macro TEXTUAL-CONVENTION de SNMPv2C o generada 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 restringida por algún mecanismo de subtipado definido en los documentos RFC 1213 y RFC 1903 de SMI.

Tipo primitivo

El tipo primitivo es uno de los tipos de datos básicos definidos en la estructura de información de administración (SMI) documentos 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 se produce cuando la cláusula SYNTAX hace referencia explícitamente a un tipo primitivo para SNMPv1. Los calificadores de textual_convention, codificación y object_syntax son siempre los mismos que el tipo MIB y el valor predeterminado siempre es NULL.

Tipo DE 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 a través de una asignación de tipo con nombre. En la tabla siguiente se muestra la asignación que se produce cuando la cláusula SYNTAX hace referencia explícitamente a un tipo primitivo para SNMPv2. Los calificadores de textual_convention, codificación y object_syntax son siempre los mismos que el tipo MIB y el valor predeterminado siempre es NULL.

Tipo DE MIB Tipo de variante CIM valor cimtype
INTEGER VT_I4 sint32
CADENA DE OCTET VT_BSTR string
IDENTIFICADOR DE OBJETO VT_BSTR string
IpAddress VT_BSTR string
Counter32 VT_I4 uint32
Medidor32 VT_I4 uint32
Unsigned32 VT_I4 uint32
Entero32 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, una convención textual o un tipo restringido a través de una derivación de asignación de tipos, use los tipos para determinar qué procedimientos de asignación se aplican.

  • Si, a través de la derivación de las reglas de asignación de tipos, se encuentra una definición de tipo restringida:

    • Y si, a través de 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 TEXTUAL_CONVENTION Macro, aplique las reglas de asignación para las convenciones de texto.

  • Si encuentra uno de los tipos primitivos enumerados en cualquier tabla de tipos primitivos, aplique las reglas de asignación para los 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 el proveedor 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, un tipo con nombre o una convención textual restringida por algún mecanismo de subtipado definido en los documentos RFC 1213 y RFC 1903 de SMI. Cuando se produce la subtipada, 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, pero no incluidas las restricciones del subtipo.

Los subtipos pueden seguir cualquiera de los siguientes 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
codificación: INTEGER
cimtype: string
  • BITS

    Los bits 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
codificación: 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á subtipo como cadena OCTET de longitud variable o opaca, 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 siguiente formato 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á subtipo como una cadena OCTET de longitud fija o 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á subtipo como integer o de valor fijo, el calificador de propiedad CIM variable_value especifica los valores fijos y intervalos asociados a la definición de tipo. Este calificador se implementa como una cadena en el siguiente formato donde los valores de intervalo y longitud fija 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 el ejemplo siguiente se describe un subtipo INTEGER enumerado.

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

Este ejemplo se asigna a:

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

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

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

El ejemplo de código siguiente se asigna a:

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

En el ejemplo de código siguiente 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:

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

En el ejemplo siguiente se describe un subtipo de longitud fija.

IPXADDRESS := OCTET STRING (SIZE (6))

Este ejemplo se asigna a:

fixed_length(6)

En el ejemplo siguiente se describe un subtipo de intervalo.

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

Este ejemplo se asigna a:

variable_value("10..20,8")