Partager via


Clause SYNTAX

La macro OBJECT-TYPE contient une clause SYNTAX qui définit les données et le type de l’objet Mio. Bien que le fournisseur SNMP observe des règles générales pour le mappage des clauses SYNTAX, le fournisseur suit également des règles spécifiques à plusieurs types de données.

Notes

Pour plus d’informations sur l’installation du fournisseur, consultez Configuration de l’environnement SNMP WMI.

Les règles de mappage suivantes s’appliquent à tous les types de données décrits dans le tableau ci-dessous :

  • La représentation textuelle de la clause SYNTAX est mappée au qualificateur de propriété CIM textual_convention.
  • La définition de type nommé dans la clause SYNTAX est mappée au qualificateur de propriété CIM object_syntax. Ce mappage diffère selon le type de données. Pour plus d'informations, voir les descriptions de mappage.
  • Le type SNMP utilisé lors de l’encodage des trames de protocole SNMPv1 et SNMPv2C est mappé au codage du qualificateur de propriété CIM.
  • Le qualificateur de propriété CIM cimtype contient la représentation textuelle qui met en forme la valeur de protocole CIM sous-jacente.

Le tableau suivant répertorie les types de données qui ont des règles spécifiques régissant le comportement de mappage du fournisseur.

Type de données SNMP Description
Type primitif L’un des types de données de base définis dans les documents de la structure de l'information de gestion (SMI) RFC 1213 et RFC 1903.
Convention textuelle Définition de type générée via l’utilisation explicite de la macro SNMPv2C TEXTUAL-CONVENTION ou générée à l’aide d’un type nommé. Une convention textuelle attribue un nom et, dans certains cas, une plage de valeurs à un type de données existant.
Type nommé Référence nommée à un type primitif, à une convention textuelle ou à un type contraint.
Type contraint Type primitif, type nommé ou convention textuelle qui a été limité par un mécanisme de sous-typage défini dans les documents SMI RFC 1213 et RFC 1903.

Type primitif

Le type primitif est l’un des types de données de base définis dans les documents de la structure de l'information de gestion (SMI) RFC 1213 et RFC 1903. Les types primitifs SNMP sont mappés à des types définis par CIM. Le tableau suivant répertorie le mappage qui se produit lorsque la clause SYNTAX fait explicitement référence à un type primitif pour SNMPv1. La convention_textuelle, l’encodage et les qualificateurs de syntaxe_objet sont toujours identiques au type Mio et la valeur par défaut est toujours NULL.

Type Mio Type de variante CIM valeur cimtype
INTEGER VT_I4 sint32
OCTETSTRING VT_BSTR string
OBJECTIDENTIFIER VT_BSTR string
NULL VT_NULL Non prise en charge
IpAddress VT_BSTR string
Compteur VT_I4 uint32
Jauge VT_I4 uint32
TimeTicks VT_I4 uint32
Opaque VT_BSTR string
NetworkAddress VT_BSTR string

Le fournisseur ignore la macro OBJECT-TYPE lorsque la clause SYNTAX fait référence à NULL, explicitement ou par le biais d’une attribution de type nommé. Le tableau suivant répertorie le mappage qui se produit lorsque la clause SYNTAX fait explicitement référence à un type primitif pour SNMPv2. La convention_textuelle, l’encodage et les qualificateurs de syntaxe_objet sont toujours identiques au type Mio et la valeur par défaut est toujours NULL.

Type Mio Type de variante CIM valeur cimtype
INTEGER VT_I4 sint32
CHAÎNE D’OCTETS VT_BSTR string
IDENTIFICATEUR D'OBJET 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
Opaque VT_BSTR string

Type nommé

Les types nommés SNMP sont mappés aux types définis par CIM. Lorsque la clause SYNTAX fait référence à un type primitif, à une convention textuelle ou à un type contraint par le biais d’une dérivation d’affectation de type, utilisez ces différents types pour déterminer les procédures de mappage qui s’appliquent.

  • Si, par dérivation des règles d’affectation de type, vous rencontrez une définition de type contraint :

    • Et si, par le biais d’une dérivation plus poussée, vous rencontrez l’une des conventions textuelles répertoriées dans la Macro TEXTUAL-CONVENTION, alors appliquez les règles de mappage pour les types contraints et les conventions textuelles.
    • Sinon, si vous rencontrez l’un des types primitifs répertoriés dans l’une ou l’autre table de type primitif, appliquez les règles de mappage pour les types primitifs et les types contraints.
  • Si vous rencontrez l’une des conventions textuelles répertoriées dans Macro CONVENTION_TEXTUELLE, appliquez les règles de mappage pour les conventions textuelles.

  • Si vous rencontrez l’un des types primitifs répertoriés dans l’une ou l’autre table de type primitif, appliquez les règles de mappage pour les types primitifs.

Notes

Les classes contenant des types de propriétés qui ne sont pas conformes au mappage décrit ci-dessus ne sont pas valides. Dans ce cas, le fournisseur retourne une erreur si et quand il demande la récupération d’une définition de classe lors de l’exécution d’une fonction de récupération.

Type contraint

Un type contraint est un type primitif, un type nommé ou une convention textuelle qui a été limité par un mécanisme de sous-typage défini dans les documents SMI RFC 1213 et RFC 1903. En cas de sous-typage, des qualificateurs CIM supplémentaires sont nécessaires pour spécifier les valeurs de sous-type. La définition de type nommé dans la clause SYNTAXE mappe textuellement au qualificateur de propriété CIM object_syntax jusqu’à, mais sans inclure les contraintes du sous-type.

Les sous-types peuvent suivre l’un des formats suivants :

  • ENTIER énuméré

    L’énumération du qualificateur de propriété CIM spécifie les valeurs énumérées. Ce qualificateur est représenté sous la forme d’une chaîne contenant une liste séparée par des virgules de valeurs entières 32 bits signées. Le tableau suivant répertorie les types de mappage. La valeur par défaut est toujours NULLE.

Type Mio contraint Type de variante CIM Qualificateurs CIM
ENTIER énuméré VT_BSTR convention_textuelle : enumeratedinteger
encodage : ENTIER
cimtype: chaîne
  • BITS

    Les bits de qualification des propriétés CIM spécifient les valeurs énumérées. Ce qualificateur est représenté sous la forme d’une chaîne contenant une liste séparée par des virgules de valeurs entières 32 bits signées. Le tableau suivant répertorie les types de mappage. La valeur par défaut est toujours NULLE.

Type Mio contraint Type de variante CIM Qualificateurs CIM
BITS VT_ARRAY | VT_BSTR convention_textuelle : bits
encodage: OCTETSTRING
cimtype: chaîne
  • Longueur variable

    Lorsque la clause SYNTAXE fait référence à un type primitif, un type nommé ou une convention textuelle qui est sous-typé en tant que chaîne octet de longueur variable ou opaque, le qualificateur de propriété CIM variable_length spécifie les valeurs minimales, maximales et de longueur fixe associées à la définition de type. Ce qualificateur est implémenté sous forme de chaîne au format suivant, où les valeurs de longueur variable sont représentées sous forme d’entiers 32 bits non signés.

    (((0.9) .. (0.9)) | (0.9))(, (((0.9) .. (0.9)) | (0.9)))*
    
  • Longueur fixe

    Lorsque la clause SYNTAXE fait référence à un type primitif, un type nommé ou une convention textuelle qui est sous-typé en tant que type OCTET STRING ou Opaque de longueur fixe, le qualificateur de propriété CIM fixed_length spécifie la valeur de longueur fixe. Ce qualificateur est représenté sous la forme d’une valeur entière 32 bits non signée.

  • Plage

    Lorsque la clause SYNTAXE fait référence à un type primitif, un type nommé ou une convention textuelle qui est sous-typé en tant qu’ENTIER ou jauge à valeur fixe ou étendue, le qualificateur de propriété CIM variable_value spécifie les valeurs étendues et fixes associées à la définition de type. Ce qualificateur est implémenté sous la forme d’une chaîne au format suivant, où les valeurs de plage et de longueur fixe sont représentées sous forme d’entiers 32 bits non signés.

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

Exemple de code

L’exemple suivant décrit un sous-type ENTIER énuméré.

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

Cet exemple mappe à :

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

L’exemple de code suivant décrit un sous-type BITS.

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

L’exemple de code suivant est mappé à :

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

L’exemple de code suivant décrit un sous-type de longueur 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))

Cet exemple mappe à :

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

L’exemple suivant décrit un sous-type de longueur fixe.

IPXADDRESS := OCTET STRING (SIZE (6))

Cet exemple mappe à :

fixed_length(6)

L’exemple suivant décrit un sous-type de plage.

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

Cet exemple mappe à :

variable_value("10..20,8")