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