10#ifndef _NB_SNMP_TABLE_H
11#define _NB_SNMP_TABLE_H
82void GetOid(
const char *tOid,
int *oid);
88#define SNMP_SET_WRONG_TYPE (-2)
89#define SNMP_SET_FAIL (-1)
90#define SNMP_SET_OK (0)
93#define MAX_COMMUNITY_SIZE (80)
117 puint8_t pError_Index;
118 puint8_t pError_Value;
128#define ASN_typeObjID ASN_OBJECT_ID
129#define ASN_typeString ASN_OCTET_STR
130#define ASN_typeEnumVal ASN_INTEGER
131#define ASN_typeINTEGER ASN_INTEGER
132#define ASN_typeNetAddr ASN_OCTET_STR
133#define ASN_typeCounter SMI_COUNTER32
134#define ASN_typeGauge SMI_GAUGE32
135#define ASN_typeTimeTic SMI_UNSIGNED32
136#define ASN_typeCounter64 SMI_COUNTER64
137#define ASN_typeUnsigned SMI_UNSIGNED32
138#define ASN_typeUInteger SMI_UNSIGNED32
139#define ASN_typeInteger32 SMI_INTEGER
140#define ASN_typeIpAddr SMI_IPADDRESS
141#define ASN_typeTimeTicks SMI_TIMETICKS
208typedef void(GetOIDFunction)(SNMP_Request &req,
void *data_el,
int subid);
229typedef int(PutOIDFunction)(SNMP_Request &req, BOOL second_pass,
void *pdata,
int subid);
272 void PopulatelookUpObj(
const char *oid,
int typ,
void *pData, GetOIDFunction *pf, uint32_t commmask);
276 static void GetpIFunction(SNMP_Request &req,
void *data_el,
int subid);
277 static void GetuIFunction(SNMP_Request &req,
void *data_el,
int subid);
278 static void GetCCFunction(SNMP_Request &req,
void *data_el,
int subid);
279 static void GetOTFunction(SNMP_Request &req,
void *data_el,
int subid);
280 static void GetIFunction(SNMP_Request &req,
void *data_el,
int subid);
281 static void GetulFunction(SNMP_Request &req,
void *data_el,
int subid);
282 static void GetullFunction(SNMP_Request &req,
void *data_el,
int subid);
283 static void GetMadrFunction(SNMP_Request &req,
void *data_el,
int subid);
296 PopulatelookUpObj(oid, typ, (
void *)pf, GetpIFunction, commmask);
302 PopulatelookUpObj(oid, typ, (
void *)pf, GetuIFunction, commmask);
306 PopulatelookUpObj(oid, typ, (
void *)pf, GetCCFunction, commmask);
310 PopulatelookUpObj(oid, typ, (
void *)pf, GetOTFunction, commmask);
314 PopulatelookUpObj(oid, typ, (
void *)pf, GetIFunction, commmask);
318 PopulatelookUpObj(oid, typ, (
void *)pf, GetulFunction, commmask);
322 PopulatelookUpObj(oid, typ, (
void *)pf, GetullFunction, commmask);
326 PopulatelookUpObj(oid, typ, (
void *)pf, GetMadrFunction, commmask);
357 static int PutpIFunction(SNMP_Request &req, BOOL second_pass,
void *pdata,
int subid);
358 static int PutuIFunction(SNMP_Request &req, BOOL second_pass,
void *pdata,
int subid);
359 static int PutCCFunction(SNMP_Request &req, BOOL second_pass,
void *pdata,
int subid);
360 static int PutOTFunction(SNMP_Request &req, BOOL second_pass,
void *pdata,
int subid);
361 static int PutIFunction(SNMP_Request &req, BOOL second_pass,
void *pdata,
int subid);
362 static int PutulFunction(SNMP_Request &req, BOOL second_pass,
void *pdata,
int subid);
363 static int PutullFunction(SNMP_Request &req, BOOL second_pass,
void *pdata,
int subid);
364 static int PutMadrFunction(SNMP_Request &req, BOOL second_pass,
void *pdata,
int subid);
367 void PopulatelookUpObj(
const char *oid,
int typ,
void *pData, PutOIDFunction *pf, uint32_t commmask);
379 PopulatelookUpObj(oid, typ, (
void *)pf, PutpIFunction, commmask);
385 PopulatelookUpObj(oid, typ, (
void *)pf, PutuIFunction, commmask);
389 PopulatelookUpObj(oid, typ, (
void *)pf, PutCCFunction, commmask);
393 PopulatelookUpObj(oid, typ, (
void *)pf, PutOTFunction, commmask);
397 PopulatelookUpObj(oid, typ, (
void *)pf, PutIFunction, commmask);
401 PopulatelookUpObj(oid, typ, (
void *)pf, PutulFunction, commmask);
405 PopulatelookUpObj(oid, typ, (
void *)pf, PutullFunction, commmask);
409 PopulatelookUpObj(oid, typ, (
void *)pf, PutMadrFunction, commmask);
422void InitializeMibs();
444#define SNMPREADFUNC(w, x, y, z, q) static SNMPReadObject W##w(x, y, z, q);
471#define SNMPWRITEFUNC(w, x, y, z, q) static SNMPWriteObject R##w(x, y, z, q);
491void AddToIndex(
int asn_type, snmp_typeInteger32 val,
int &len,
int *oidadd);
494void AddToIndex(
int asn_type, snmp_typeObjID val,
int &len,
int *oidadd);
495void AddToIndex(
int asn_type, snmp_typeString val,
int &len,
int *oidadd);
496void AddToIndex(
int asn_type, snmp_typeEnumVal val,
int &len,
int *oidadd);
497void AddToIndex(
int asn_type, snmp_typeINTEGER val,
int &len,
int *oidadd);
499void AddToIndex(
int asn_type, snmp_typeCounter val,
int &len,
int *oidadd);
500void AddToIndex(
int asn_type, snmp_typeGauge val,
int &len,
int *oidadd);
501void AddToIndex(
int asn_type, snmp_typeTimeTic val,
int &len,
int *oidadd);
502void AddToIndex(
int asn_type, snmp_typeCounter64 val,
int &len,
int *oidadd);
503void AddToIndex(
int asn_type, snmp_typeUnsigned val,
int &len,
int *oidadd);
504void AddToIndex(
int asn_type, snmp_typeUInteger val,
int &len,
int *oidadd);
506void AddToIndex(
int asn_type, snmp_typeTimeTicks val,
int &len,
int *oidadd);
Used to store and manipulate IPv4 addresses in dual stack mode.
Definition nettypes.h:225
Used to hold and manipulate IPv4 and IPv6 addresses in dual stack mode.
Definition ipv6_addr.h:41
Used to store and manipulate MAC addresses.
Definition nettypes.h:69
Registers a scalar read callback with the SNMP agent.
Definition snmp_table.h:269
SNMPReadObject(const char *oid, int typ, GetpIFunc *pf, uint32_t commmask)
Register a read callback for one SNMP scalar.
Definition snmp_table.h:294
Registers a scalar write callback with the SNMP agent.
Definition snmp_table.h:353
SNMPWriteObject(const char *oid, int typ, PutpIFunc *pf, uint32_t commmask)
Register a write callback for one SNMP scalar.
Definition snmp_table.h:377
class MACADR MACADR
Used to store and manipulate MAC addresses.
const char * GetCCFunc()
Returns a C string.
Definition snmp_table.h:159
int PutIFuncTab(int, int, void *)
Table variant of PutIFunc.
Definition snmp_table.h:195
int PutullFunc(unsigned long long, int)
Writes unsigned long long.
Definition snmp_table.h:182
int PutuIFuncTab(unsigned int, int, void *)
Table variant of PutuIFunc.
Definition snmp_table.h:196
int PutpIFuncTab(int *, int, void *)
Table variant of PutpIFunc.
Definition snmp_table.h:192
int PutCCFuncTab(const char *, int, void *)
Table variant of PutCCFunc.
Definition snmp_table.h:193
unsigned long GetulFunc()
Returns unsigned long.
Definition snmp_table.h:163
MACADR GetMadrFunc()
Returns a MAC address.
Definition snmp_table.h:165
int PutpIFunc(int *, int)
Writes pointer-to-int.
Definition snmp_table.h:176
int PutIFunc(int, int)
Writes signed int.
Definition snmp_table.h:179
void GetOTFunc(uint8_t *&pData, int &len)
Returns a raw octet buffer and its length.
Definition snmp_table.h:160
int PutuIFunc(unsigned int, int)
Writes unsigned int.
Definition snmp_table.h:180
int PutulFuncTab(unsigned long, int, void *)
Table variant of PutulFunc.
Definition snmp_table.h:197
int GetIFunc()
Returns signed int.
Definition snmp_table.h:161
int PutCCFunc(const char *, int)
Writes a C string.
Definition snmp_table.h:177
int PutOTFunc(const unsigned char *, int, int)
Writes an octet string (buffer, length, bTest).
Definition snmp_table.h:178
int PutMadrFunc(MACADR, int)
Writes a MAC address.
Definition snmp_table.h:183
int PutullFuncTab(unsigned long long, int, void *)
Table variant of PutullFunc.
Definition snmp_table.h:198
unsigned int GetuIFunc()
Returns unsigned int.
Definition snmp_table.h:162
unsigned long long GetullFunc()
Returns unsigned long long.
Definition snmp_table.h:164
int PutMadrFuncTab(MACADR, int, void *)
Table variant of PutMadrFunc.
Definition snmp_table.h:199
int PutulFunc(unsigned long, int)
Writes unsigned long.
Definition snmp_table.h:181
int * GetpIFunc()
Returns pointer-to-int (OID values).
Definition snmp_table.h:158
int PutOTFuncTab(const unsigned char *, int, int, void *)
Table variant of PutOTFunc.
Definition snmp_table.h:194
void AddToIndex(int asn_type, snmp_typeInteger32 val, int &len, int *oidadd)
Append a value to the OID index being constructed for a table row.
void AddSnmpEntry(int subid, const char *root, int add_len, int *suffix, TableElementFunc *pf, void *pData, uint32_t comm_mask)
Register a read entry for one column of an SNMP table row.
void SnmpRemoveTableElement(const char *root, void *data_el)
Remove a previously registered table element from the SNMP agent.
void AddSnmpWriteEntry(int asn_type, const char *root, int add_len, int *suffix, PutIFuncTab *pf, void *pData, uint32_t comm_mask)
Register a write callback for a single cell of an SNMP table.
void TableElementFunc(SNMP_Request &req, void *data_el, int subid)
Signature of a table-element read callback.
Definition snmp_table.h:520
IPADDR4 snmp_typeIpAddr4
IPv4 address.
Definition snmp_table.h:71
unsigned long snmp_typeTimeTic
TimeTicks (legacy spelling, hundredths of a second).
Definition snmp_table.h:66
unsigned long long snmp_typeCounter64
Counter64.
Definition snmp_table.h:67
unsigned long snmp_typeTimeTicks
TimeTicks in hundredths of a second.
Definition snmp_table.h:73
unsigned int snmp_typeCounter
Counter32 — monotonically increasing count.
Definition snmp_table.h:64
int snmp_typeInteger32
Signed 32-bit integer.
Definition snmp_table.h:70
unsigned int snmp_typeUnsigned
Unsigned32.
Definition snmp_table.h:68
const char * snmp_typeString
Octet string (C string).
Definition snmp_table.h:60
#define MAX_COMMUNITY_SIZE
Maximum length of an SNMP community string in bytes.
Definition snmp_table.h:93
int snmp_typeGauge
Gauge32 — instantaneous value that may rise or fall.
Definition snmp_table.h:65
unsigned int snmp_typeUInteger
Unsigned integer (alias of Unsigned32).
Definition snmp_table.h:69
int * snmp_typeObjID
Object identifier (OID).
Definition snmp_table.h:59
int snmp_typeEnumVal
Enumerated integer value.
Definition snmp_table.h:61
MACADR snmp_typeNetAddr
MAC / network-layer address.
Definition snmp_table.h:63
IPADDR snmp_typeIpAddr
IP address (IPv4/IPv6-aware).
Definition snmp_table.h:72
int snmp_typeINTEGER
Generic INTEGER.
Definition snmp_table.h:62
Internal read-side lookup record linking an OID to its dispatcher.
Definition snmp_table.h:215
Internal write-side lookup record linking an OID to its dispatcher.
Definition snmp_table.h:236