Clausola SYNTAX
La macro OBJECT-TYPE contiene una clausola SYNTAX che definisce i dati e il tipo per l'oggetto MIB. Mentre il provider SNMP osserva le regole generali per le clausole SYNTAX 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 SYNTAX viene mappata al qualificatore di proprietà CIM textual_convention.
- La definizione del tipo denominato nella clausola SYNTAX esegue il mapping al qualificatore di proprietà CIM object_syntax. Questo mapping varia a seconda del tipo di dati. Per altre informazioni, vedere le descrizioni dei mapping.
- Il tipo SNMP usato per la codifica dei fotogrammi del protocollo SNMPv1 e SNMPv2C viene mappato al qualificatore di proprietà CIM codifica.
- Il qualificatore di proprietà CIM cimtype 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 di 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) documenta RFC 1213 e RFC 1903. |
convenzione testuale | Definizione del tipo generata tramite l'uso esplicito di SNMPv2C TEXTUAL-CONVENTION macro 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, a una convenzione testuale o a un tipo vincolato. |
tipo vincolato | Tipo primitivo, tipo denominato o convenzione testuale vincolata da un meccanismo di sottotipizzazione definito nei documenti SMI RFC 1213 e RFC 1903. |
Tipo primitivo
Il tipo primitivo è uno dei tipi di dati di base definiti nei documenti SMI (Structure of Management Information) RFC 1213 e RFC 1903. I tipi primitivi SNMP eseguono il mapping ai tipi definiti da CIM. La tabella seguente elenca il mapping che si verifica quando la clausola SYNTAX fa riferimento in modo esplicito a un tipo primitivo per SNMPv1. I qualificatori textual_convention, codificae object_syntax sono sempre uguali al tipo MIB e il valore predefinito è sempre NULL.
Tipo MIB | Tipo variant CIM | valore cimtype |
---|---|---|
NUMERO INTERO | VT_I4 | sint32 |
OCTETSTRING | VT_BSTR | stringa |
OBJECTIDENTIFIER | VT_BSTR | stringa |
NULLO | VT_NULL | Non supportato |
IpAddress | VT_BSTR | stringa |
Contatore | VT_I4 | uint32 |
Misuratore | VT_I4 | uint32 |
TimeTicks | VT_I4 | uint32 |
Opaco | VT_BSTR | stringa |
NetworkAddress | VT_BSTR | stringa |
Il provider ignora la macro OBJECT-TYPE quando la clausola SYNTAX 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 SYNTAX fa riferimento in modo esplicito a un tipo primitivo per SNMPv2. I qualificatori textual_convention, codificae object_syntax sono sempre uguali al tipo MIB e il valore predefinito è sempre NULL.
Tipo MIB | Tipo variant CIM | valore cimtype |
---|---|---|
NUMERO INTERO | VT_I4 | sint32 |
OCTET STRING | VT_BSTR | stringa |
IDENTIFICATORE OGGETTO | VT_BSTR | stringa |
IpAddress | VT_BSTR | stringa |
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 | stringa |
Tipo denominato
I tipi denominati SNMP eseguono il mapping ai tipi definiti da CIM. Quando la clausola SYNTAX fa riferimento a un tipo primitivo , convenzione testualeo tipo vincolato tramite una derivazione dell'assegnazione di tipi, utilizzare i tipi per determinare quali procedure di mapping si applicano.
Se, tramite la derivazione delle regole di assegnazione dei tipi, viene visualizzata una definizione di tipo vincolato:
- Se, tramite ulteriori derivazioni, si verifica una delle convenzioni testuali elencate in TEXTUAL-CONVENTION Macro, applicare le regole di mapping per i tipi vincolati e le convenzioni testuali.
- In caso contrario, se si verifica uno dei tipi primitivi elencati in una 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 in una tabella dei tipi primitivi, applicare le regole di mapping per i tipi primitivi.
Nota
Le classi contenenti tipi di proprietà non 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, un tipo denominato o una convenzione testuale vincolata da un meccanismo di sottotipizzazione definito nei documenti SMI RFC 1213 e RFC 1903. Quando si verifica una sottotipazione, sono necessari qualificatori CIM aggiuntivi per specificare i valori del sottotipo. La definizione di tipo denominato nella clausola SYNTAX 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
Il qualificatore di proprietà CIM 'enumerazione specifica i valori enumerati. Questo qualificatore è rappresentato come stringa contenente un elenco delimitato da virgole di valori interi con segno a 32 bit. Nella tabella seguente sono elencati i tipi di mapping. Il valore predefinito è sempre NULL.
Tipo MIB vincolato | Tipo variant CIM | Qualificatori CIM |
---|---|---|
Integer enumerato | VT_BSTR |
textual_convention: enumeratedinteger codifica: INTEGER cimtype: string |
BIT
Il qualificatore di proprietà CIM bit specifica i valori enumerati. Questo qualificatore è rappresentato come stringa contenente un elenco delimitato da virgole di valori interi con segno a 32 bit. Nella tabella seguente sono elencati i tipi di mapping. Il valore predefinito è sempre NULL.
Tipo MIB vincolato | Tipo variant CIM | Qualificatori CIM |
---|---|---|
BIT | VT_ARRAY | VT_BSTR |
textual_convention: bit codifica: OCTETSTRING cimtype: string |
Lunghezza variabile
Quando la clausola SYNTAX fa riferimento a un tipo primitivo, a un tipo denominato o a una 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 a lunghezza variabile sono rappresentati come interi senza segno a 32 bit.
(((0.9) .. (0.9)) | (0.9))(, (((0.9) .. (0.9)) | (0.9)))*
Lunghezza fissa
Quando la clausola SYNTAX fa riferimento a un tipo primitivo, a un tipo denominato o a una convenzione testuale sottotipata come STRINGA OTTET a lunghezza fissa o opaco, il qualificatore di proprietà CIM fixed_length specifica il valore a lunghezza fissa. Questo qualificatore è rappresentato come un valore intero senza segno a 32 bit.
Gamma
Quando la clausola SYNTAX fa riferimento a un tipo primitivo, a un tipo denominato o a una convenzione testuale sottotipata come integer o a valore fisso o a 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 sono 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)
}
In questo esempio viene eseguito 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)
}
Nell'esempio di codice seguente viene eseguito 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))
In questo esempio viene eseguito 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))
In questo esempio viene eseguito il mapping a:
fixed_length(6)
Nell'esempio seguente viene descritto un sottotipo di intervallo.
Status := INTEGER (10..20|8)
In questo esempio viene eseguito il mapping a:
variable_value("10..20,8")