|
|
The syntax of MIB objects is modeled by the OS (Object Syntax) structure:
typedef int (*IFP) ();The syntaxes defined by the Internet-standard MIB are already implemented:typedef struct object_syntax { char *os_name; /* syntax name */
int os_type; /* syntax type */ IFP os_decode; IFP os_free; /* free data */
} *OS; #define NULLOS ((OS) 0)
Internet-standard MIB defined syntaxes
| Syntax | Structure type |
|---|---|
| INTEGER | integer |
| OctetString | struct _OctetString |
| ObjectID | struct OIDentifier |
| NULL | char |
| DisplayString | struct _OctetString |
| IpAddress | struct sockaddr_in |
| NetworkAddress | struct sockaddr_in |
| Counter | integer |
| Gauge | integer |
| TimeTicks | integer |
| ClnpAddress | struct _OctetString |
To take a syntax name and get back the structure, use the routine text2syn().
Here are the structures and routines used to implement some of these low-level MIB abstractions: Integer, OctetString, ObjectID, and IPAddress.
integer is used for the INTEGER, Counter, Gauge, and TimeTicks syntaxes. The definition is:
typedef int integer;
struct _OctetString is used for the OctetString, DisplayString, and ClnpAddress syntaxes. The definition is:
typedef struct _OctetString {
unsigned char *octet_ptr; /* list of octets */
long length; /* number of elements */
};
struct OIDentifier is used for the ObjectID syntax. The definition is:
typedef struct OIDentifier {
int oid_nelem; /* number of sub-identifiers */
unsigned int *oid_elements;
/* the (ordered) list of sub-identifiers */
} OIDentifier, *OID;
#define NULLOID ((OID) 0)
struct sockaddr_in is used for the IpAddress and NetworkAddress syntaxes. It is assumed that you are familiar with this structure. If not, consult the file /usr/include/sys/netinet/in.h.