Clausola SINTASSI

La macro OBJECT-TYPE contiene una clausola SINTASSI che definisce i dati e il tipo per l'oggetto MIB. Mentre il provider SNMP osserva regole generali per le clausole SINTASSI di mapping, il provider segue anche regole specifiche per diversi tipi di dati.

Nota

Per altre informazioni sull'installazione del provider, vedere Configurazione dell'ambiente SNMP WMI.

Le regole di mapping seguenti si applicano a tutti i tipi di dati descritti nella tabella seguente:

  • La rappresentazione testuale della clausola SINTASSI viene mappata al qualificatore di proprietà CIM textual_convention.
  • La definizione di tipo denominata nella clausola SINTASSI viene mappata al qualificatore di proprietà CIM object_syntax. Questo mapping varia a seconda del tipo di dati. Per altre informazioni, vedere le descrizioni del mapping.
  • Il tipo SNMP usato durante la codifica dei frame di protocollo SNMPv1 e SNMPv2C esegue il mapping alla codifica del qualificatore di proprietà CIM.
  • Il qualificatore di proprietà CIM contiene la rappresentazione testuale che formatta il valore del protocollo CIM sottostante.

Nella tabella seguente sono elencati i tipi di dati con regole specifiche che regolano il comportamento del mapping del provider.

Tipo di dati SNMP Descrizione
Tipo primitivo Uno dei tipi di dati di base definiti nella struttura delle informazioni di gestione (SMI) documenti RFC 1213 e RFC 1903.
Convenzione testuale Definizione dei tipi generata tramite l'uso esplicito della macro SNMPv2C TEXTUAL-CONVENTION o generata tramite l'uso di un tipo denominato. Una convenzione testuale assegna un nome e, in alcuni casi, un intervallo di valori a un tipo di dati esistente.
Tipo denominato Riferimento denominato a un tipo primitivo, convenzione testuale o tipo vincolato.
Tipo vincolato Tipo primitivo, denominato tipo o convenzione testuale vincolata da un meccanismo di digitazione secondario definito nei documenti SMI RFC 1213 e RFC 1903.

Tipo primitivo

Il tipo primitivo è uno dei tipi di dati di base definiti nella struttura delle informazioni di gestione (SMI) documenti RFC 1213 e RFC 1903. I tipi primitivi SNMP mappano ai tipi definiti da CIM. La tabella seguente elenca il mapping che si verifica quando la clausola SINTASSI fa riferimento in modo esplicito a un tipo primitivo per SNMPv1. I qualificatori textual_convention, codifica e object_syntax sono sempre uguali al tipo MIB e il valore predefinito è sempre NULL.

Tipo MIB Tipo di variante CIM valore cimtype
INTEGER VT_I4 sint32
OCTETSTRING VT_BSTR string
OBJECTIDENTIFIER VT_BSTR string
NULL VT_NULL Non supportato
IpAddress VT_BSTR string
Contatore VT_I4 uint32
Misuratore VT_I4 uint32
TimeTicks VT_I4 uint32
Opaco VT_BSTR string
NetworkAddress VT_BSTR string

Il provider ignora la macro OBJECT-TYPE quando la clausola SINTASSI fa riferimento a NULL, in modo esplicito o tramite un'assegnazione di tipo denominata. La tabella seguente elenca il mapping che si verifica quando la clausola SINTASSI fa riferimento in modo esplicito a un tipo primitivo per SNMPv2. I qualificatori textual_convention, codifica e object_syntax sono sempre uguali al tipo MIB e il valore predefinito è sempre NULL.

Tipo MIB Tipo di variante CIM valore cimtype
INTEGER VT_I4 sint32
OCTET STRING VT_BSTR string
IDENTIFICATORE OGGETTO VT_BSTR string
IpAddress VT_BSTR string
Contatore32 VT_I4 uint32
Misuratore32 VT_I4 uint32
Unsigned32 VT_I4 uint32
Integer32 VT_I4 sint32
Contatore64 VT_BSTR uint64
TimeTicks VT_I4 uint32
Opaco VT_BSTR string

Tipo denominato

I tipi denominati SNMP mappano ai tipi definiti da CIM. Quando la clausola SINTASSI fa riferimento a un tipo primitivo, a una convenzione testuale o a un tipo vincolato tramite una derivazione dell'assegnazione di tipi, usare tali tipi per determinare quali procedure di mapping si applicano.

  • Se, tramite derivazione delle regole di assegnazione dei tipi, viene visualizzata una definizione di tipo vincolata:

    • E se, attraverso ulteriori derivazioni, si verifica una delle convenzioni testuali elencate nella macro TEXTUAL-CONVENTION, applicare le regole di mapping per i tipi vincolati e le convenzioni testuali.
    • In caso contrario, se si verifica uno dei tipi primitivi elencati nella tabella dei tipi primitivi, applicare le regole di mapping per i tipi primitivi e i tipi vincolati.
  • Se si verifica una delle convenzioni testuali elencate in TEXTUAL_CONVENTION Macro, applicare le regole di mapping per le convenzioni testuali.

  • Se si verifica uno dei tipi primitivi elencati nella tabella dei tipi primitivi, applicare le regole di mapping per i tipi primitivi.

Nota

Le classi contenenti tipi di proprietà che non sono conformi al mapping descritto in precedenza non sono valide. In questo caso, il provider restituisce un errore se e quando il provider richiede il recupero di una definizione di classe durante l'esecuzione di una funzione di recupero di un'istanza.

Tipo vincolato

Un tipo vincolato è un tipo primitivo, denominato tipo o convenzione testuale vincolata da un meccanismo di digitazione secondario definito nei documenti SMI RFC 1213 e RFC 1903. Quando si verifica la digitazione secondaria, sono necessari altri qualificatori CIM per specificare i valori del sottotipo. La definizione di tipo denominato nella clausola SINTASSI esegue il mapping verbatim al qualificatore di proprietà CIM object_syntax fino a, ma non include i vincoli del sottotipo.

I sottotipi possono seguire uno dei formati seguenti:

  • INTEGER enumerato

    L'enumerazione del qualificatore di proprietà CIM specifica i valori enumerati. Questo qualificatore viene rappresentato come stringa contenente un elenco delimitato da virgole di valori integer a 32 bit firmati. Nella tabella seguente sono elencati i tipi di mapping. Il valore predefinito è sempre NULL.

Tipo MIB vincolato Tipo di variante CIM Qualificatori CIM
INTEGER enumerato VT_BSTR textual_convention: enumeratedinteger
codifica: INTEGER
cimtype: stringa
  • BITS

    I bit del qualificatore di proprietà CIM specificano i valori enumerati . Questo qualificatore viene rappresentato come stringa contenente un elenco delimitato da virgole di valori integer a 32 bit firmati. Nella tabella seguente sono elencati i tipi di mapping. Il valore predefinito è sempre NULL.

Tipo MIB vincolato Tipo di variante CIM Qualificatori CIM
BITS VT_ARRAY | VT_BSTR textual_convention: bit
codifica: OCTETSTRING
cimtype: stringa
  • A lunghezza variabile

    Quando la clausola SINTASSI fa riferimento a un tipo primitivo, denominato tipo o convenzione testuale sottotipata come stringa OCTET a lunghezza variabile o opaco, il qualificatore di proprietà CIM variable_length specifica i valori minimo, massimo e a lunghezza fissa associati alla definizione del tipo. Questo qualificatore viene implementato come stringa nel formato seguente in cui i valori di lunghezza variabile vengono rappresentati come interi a 32 bit senza segno.

    (((0.9) .. (0.9)) | (0.9))(, (((0.9) .. (0.9)) | (0.9)))*
    
  • A lunghezza fissa

    Quando la clausola SINTASSI fa riferimento a un tipo primitivo, denominato tipo o convenzione testuale sottotipata come stringa ottet a lunghezza fissa o opaco, il qualificatore di proprietà CIM fixed_length specifica il valore di lunghezza fissa. Questo qualificatore viene rappresentato come valore intero senza segno a 32 bit.

  • Intervallo

    Quando la clausola SINTASSI fa riferimento a un tipo primitivo, denominato tipo o convenzione testuale sottotipata come intero o valore fisso, il qualificatore di proprietà CIM variable_value specifica i valori compresi nell'intervallo e fissi associati alla definizione del tipo. Questo qualificatore viene implementato come stringa nel formato seguente in cui i valori di intervallo e lunghezza fissa vengono rappresentati come interi senza segno a 32 bit.

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

Codice di esempio

Nell'esempio seguente viene descritto un sottotipo INTEGER enumerato.

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

Questo esempio esegue il mapping a:

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

Nell'esempio di codice seguente viene descritto un sottotipo BITS.

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

L'esempio di codice seguente esegue il mapping a:

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

Nell'esempio di codice seguente viene descritto un sottotipo a lunghezza variabile.

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

Questo esempio esegue il mapping a:

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

Nell'esempio seguente viene descritto un sottotipo a lunghezza fissa.

IPXADDRESS := OCTET STRING (SIZE (6))

Questo esempio esegue il mapping a:

fixed_length(6)

Nell'esempio seguente viene descritto un sottotipo di intervallo.

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

Questo esempio esegue il mapping a:

variable_value("10..20,8")