#define SQ_MESH SQUIDMIB, 5 /* cacheMesh group { squid 5 } */
#define LEN_SQ_MESH LEN_SQUIDMIB+1
-/*
+/**
* cacheSystem group { squid 1 }
*/
-
enum {
- SYS_START,
- SYSVMSIZ, /* cacheSysVMsize */
- SYSSTOR, /* cacheSysStorage */
- SYS_UPTIME,/* cacheUptime */
+ SYS_START = 0,
+ SYSVMSIZ = 1, /**< cacheSysVMsize */
+ SYSSTOR = 2, /**< cacheSysStorage */
+ SYS_UPTIME = 3, /**< cacheUptime */
SYS_END
};
#define LEN_SYS LEN_SQ_SYS + 1
#define LEN_SYS_INST LEN_SQ_SYS + 2
-/*
+/**
* cacheConfig group { squid 2 }
*/
-
enum {
- CONF_START,
- CONF_ADMIN, /* cacheAdmin */
- CONF_VERSION, /* cacheSoftware */
- CONF_VERSION_ID, /* cacheVersionId */
- CONF_LOG_FAC, /* cacheLoggingFacility */
- CONF_STORAGE, /* cacheStorageConfig group */
- CONF_UNIQNAME, /* cacheUniqName */
+ CONF_START = 0,
+ CONF_ADMIN = 1, /**< cacheAdmin */
+ CONF_VERSION = 2, /**< cacheSoftware */
+ CONF_VERSION_ID = 3, /**< cacheVersionId */
+ CONF_LOG_FAC = 4, /**< cacheLoggingFacility */
+ CONF_STORAGE = 5, /**< cacheStorageConfig group */
+ CONF_UNIQNAME = 6, /**< cacheUniqName */
CONF_END
};
#define LEN_CONF_INST LEN_SQ_CONF + 2
-/*
+/**
* cacheStorageConfig group { cacheConfig 5 }
*/
enum {
- CONF_ST_START,
- CONF_ST_MMAXSZ, /* cacheMemMaxSize */
- CONF_ST_SWMAXSZ, /* cacheSwapMaxSize */
- CONF_ST_SWHIWM, /* cacheSwapHighWM */
- CONF_ST_SWLOWM, /* cacheSwapLowWM */
+ CONF_ST_START = 0,
+ CONF_ST_MMAXSZ = 1, /* cacheMemMaxSize */
+ CONF_ST_SWMAXSZ = 2, /* cacheSwapMaxSize */
+ CONF_ST_SWHIWM = 3, /* cacheSwapHighWM */
+ CONF_ST_SWLOWM = 4, /* cacheSwapLowWM */
CONF_ST_END
};
*/
enum {
- PERF_START,
- PERF_SYS, /* cacheSysPerf */
- PERF_PROTO, /* cacheProtoStats */
+ PERF_START = 0,
+ PERF_SYS = 1, /* cacheSysPerf */
+ PERF_PROTO = 2, /* cacheProtoStats */
PERF_END
};
/* cacheSysPerf */
enum {
- PERF_SYS_START,
- PERF_SYS_PF, /* cacheSysPageFaults */
- PERF_SYS_NUMR, /* cacheSysNumReads */
- PERF_SYS_MEMUSAGE, /* cacheMemUsage */
- PERF_SYS_CPUTIME, /* cacheCpuTime */
- PERF_SYS_CPUUSAGE, /* cacheCpuUsage */
- PERF_SYS_MAXRESSZ, /* cacheMaxResSize */
- PERF_SYS_NUMOBJCNT, /* cacheNumObjCount */
- PERF_SYS_CURLRUEXP, /* cacheCurrentLRUExpiration */
- PERF_SYS_CURUNLREQ, /* cacheCurrentUnlinkRequests */
- PERF_SYS_CURUNUSED_FD, /* cacheCurrentUnusedFDescrCnt */
- PERF_SYS_CURRESERVED_FD, /* cacheCurrentResFileDescrCnt */
- PERF_SYS_CURUSED_FD, /* cacheCurrentFileDescrCnt */
- PERF_SYS_CURMAX_FD, /* cacheCurrentFileDescrMax */
+ PERF_SYS_START = 0,
+ PERF_SYS_PF = 1, /* cacheSysPageFaults */
+ PERF_SYS_NUMR = 2, /* cacheSysNumReads */
+ PERF_SYS_MEMUSAGE = 3, /* cacheMemUsage */
+ PERF_SYS_CPUTIME = 4, /* cacheCpuTime */
+ PERF_SYS_CPUUSAGE = 5, /* cacheCpuUsage */
+ PERF_SYS_MAXRESSZ = 6, /* cacheMaxResSize */
+ PERF_SYS_NUMOBJCNT = 7, /* cacheNumObjCount */
+ PERF_SYS_CURLRUEXP = 8, /* cacheCurrentLRUExpiration */
+ PERF_SYS_CURUNLREQ = 9, /* cacheCurrentUnlinkRequests */
+ PERF_SYS_CURUNUSED_FD = 10, /* cacheCurrentUnusedFDescrCnt */
+ PERF_SYS_CURRESERVED_FD = 11, /* cacheCurrentResFileDescrCnt */
+ PERF_SYS_CURUSED_FD = 12, /* cacheCurrentFileDescrCnt */
+ PERF_SYS_CURMAX_FD = 13, /* cacheCurrentFileDescrMax */
PERF_SYS_END
};
/* cacheProtoStats */
enum {
PERF_PROTOSTAT_START,
- PERF_PROTOSTAT_AGGR, /* cacheProtoAggregateStats */
- PERF_PROTOSTAT_MEDIAN, /* cacheMedianSvcTable */
+ PERF_PROTOSTAT_AGGR = 1, /* cacheProtoAggregateStats */
+ PERF_PROTOSTAT_MEDIAN = 2, /* cacheMedianSvcTable */
PERF_PROTOSTAT_END
};
/* cacheProtoAggregateStats */
enum {
- PERF_PROTOSTAT_AGGR_START,
- PERF_PROTOSTAT_AGGR_HTTP_REQ, /* cacheProtoClientHttpRequests */
- PERF_PROTOSTAT_AGGR_HTTP_HITS, /* cacheHttpHits */
- PERF_PROTOSTAT_AGGR_HTTP_ERRORS, /* cacheHttpErrors */
- PERF_PROTOSTAT_AGGR_HTTP_KBYTES_IN, /* cacheHttpInKb */
- PERF_PROTOSTAT_AGGR_HTTP_KBYTES_OUT, /* cacheHttpOutKb */
- PERF_PROTOSTAT_AGGR_ICP_S, /* cacheIcpPktsSent */
- PERF_PROTOSTAT_AGGR_ICP_R, /* cacheIcpPktsRecv */
- PERF_PROTOSTAT_AGGR_ICP_SKB, /* cacheIcpKbSent */
- PERF_PROTOSTAT_AGGR_ICP_RKB, /* cacheIcpKbRecv */
- PERF_PROTOSTAT_AGGR_REQ, /* cacheServerRequests */
- PERF_PROTOSTAT_AGGR_ERRORS, /* cacheServerErrors */
- PERF_PROTOSTAT_AGGR_KBYTES_IN, /* cacheServerInKb */
- PERF_PROTOSTAT_AGGR_KBYTES_OUT, /* cacheServerOutKb */
- PERF_PROTOSTAT_AGGR_CURSWAP, /* cacheCurrentSwapSize */
- PERF_PROTOSTAT_AGGR_CLIENTS, /* cacheClients */
+ PERF_PROTOSTAT_AGGR_START = 0,
+ PERF_PROTOSTAT_AGGR_HTTP_REQ = 1, /* cacheProtoClientHttpRequests */
+ PERF_PROTOSTAT_AGGR_HTTP_HITS = 2, /* cacheHttpHits */
+ PERF_PROTOSTAT_AGGR_HTTP_ERRORS = 3, /* cacheHttpErrors */
+ PERF_PROTOSTAT_AGGR_HTTP_KBYTES_IN = 4, /* cacheHttpInKb */
+ PERF_PROTOSTAT_AGGR_HTTP_KBYTES_OUT = 5, /* cacheHttpOutKb */
+ PERF_PROTOSTAT_AGGR_ICP_S = 6, /* cacheIcpPktsSent */
+ PERF_PROTOSTAT_AGGR_ICP_R = 7, /* cacheIcpPktsRecv */
+ PERF_PROTOSTAT_AGGR_ICP_SKB = 8, /* cacheIcpKbSent */
+ PERF_PROTOSTAT_AGGR_ICP_RKB = 9, /* cacheIcpKbRecv */
+ PERF_PROTOSTAT_AGGR_REQ = 10, /* cacheServerRequests */
+ PERF_PROTOSTAT_AGGR_ERRORS = 11, /* cacheServerErrors */
+ PERF_PROTOSTAT_AGGR_KBYTES_IN = 12, /* cacheServerInKb */
+ PERF_PROTOSTAT_AGGR_KBYTES_OUT = 13, /* cacheServerOutKb */
+ PERF_PROTOSTAT_AGGR_CURSWAP = 14, /* cacheCurrentSwapSize */
+ PERF_PROTOSTAT_AGGR_CLIENTS = 15, /* cacheClients */
PERF_PROTOSTAT_AGGR_END
};
-
-/* CacheMedianSvcEntry */
+/* cacheMedianSvcEntry */
enum {
- PERF_MEDIAN_START,
- PERF_MEDIAN_TIME, /* cacheMedianTime */
- PERF_MEDIAN_HTTP_ALL, /* cacheHttpAllSvcTime */
- PERF_MEDIAN_HTTP_MISS, /* cacheHttpMissSvcTime */
- PERF_MEDIAN_HTTP_NM, /* cacheHttpNmSvcTime */
- PERF_MEDIAN_HTTP_HIT, /* cacheHttpHitSvcTime */
- PERF_MEDIAN_ICP_QUERY, /* cacheIcpQuerySvcTime */
- PERF_MEDIAN_ICP_REPLY, /* cacheIcpReplySvcTime */
- PERF_MEDIAN_DNS, /* cacheDnsSvcTime */
- PERF_MEDIAN_RHR, /* cacheRequestHitRatio */
- PERF_MEDIAN_BHR, /* cacheRequestByteRatio */
- PERF_MEDIAN_HTTP_NH, /* cacheHttpNhSvcTime */
+ PERF_MEDIAN_START = 0,
+ PERF_MEDIAN_TIME = 1, /* cacheMedianTime */
+ PERF_MEDIAN_HTTP_ALL = 2, /* cacheHttpAllSvcTime */
+ PERF_MEDIAN_HTTP_MISS = 3, /* cacheHttpMissSvcTime */
+ PERF_MEDIAN_HTTP_NM = 4, /* cacheHttpNmSvcTime */
+ PERF_MEDIAN_HTTP_HIT = 5, /* cacheHttpHitSvcTime */
+ PERF_MEDIAN_ICP_QUERY = 6, /* cacheIcpQuerySvcTime */
+ PERF_MEDIAN_ICP_REPLY = 7, /* cacheIcpReplySvcTime */
+ PERF_MEDIAN_DNS = 8, /* cacheDnsSvcTime */
+ PERF_MEDIAN_RHR = 9, /* cacheRequestHitRatio */
+ PERF_MEDIAN_BHR = 10, /* cacheRequestByteRatio */
+ PERF_MEDIAN_HTTP_NH = 11, /* cacheHttpNhSvcTime */
PERF_MEDIAN_END
};
-
-
-
/*
* cacheNetwork group { squid 4 }
*/
-
enum {
- NET_START,
- NET_IP_CACHE, /* cacheIpCache */
- NET_FQDN_CACHE, /* cacheFqdnCache */
- NET_DNS_CACHE, /* cacheDns */
+ NET_START = 0,
+ NET_IP_CACHE = 1, /* cacheIpCache */
+ NET_FQDN_CACHE = 2, /* cacheFqdnCache */
+ NET_DNS_CACHE = 3, /* cacheDns */
NET_END
};
/* cacheIpCache */
enum {
- IP_START,
- IP_ENT, /* cacheIpEntrie */
- IP_REQ, /* cacheIpRequests */
- IP_HITS, /* acheIpHits */
- IP_PENDHIT, /* cacheIpPendingHits */
- IP_NEGHIT, /* cacheIpNegativeHit */
- IP_MISS, /* cacheIpMisses */
- IP_GHBN, /* cacheBlockingGetHostByName */
- IP_LOC, /* cacheAttemptReleaseLckEntries */
+ IP_START = 0,
+ IP_ENT = 1, /* cacheIpEntrie */
+ IP_REQ = 2, /* cacheIpRequests */
+ IP_HITS = 3, /* acheIpHits */
+ IP_PENDHIT = 4, /* cacheIpPendingHits */
+ IP_NEGHIT = 5, /* cacheIpNegativeHit */
+ IP_MISS = 6, /* cacheIpMisses */
+ IP_GHBN = 7, /* cacheBlockingGetHostByName */
+ IP_LOC = 8, /* cacheAttemptReleaseLckEntries */
IP_END
};
/* cacheFqdnCache */
enum {
- FQDN_START,
- FQDN_ENT, /* cacheFqdnEntries */
- FQDN_REQ, /* cacheFqdnRequests */
- FQDN_HITS, /* cacheFqdnHits */
- FQDN_PENDHIT, /* cacheFqdnPendingHits */
- FQDN_NEGHIT, /* cacheFqdnNegativeHits */
- FQDN_MISS, /* cacheFqdnMisses */
- FQDN_GHBN, /* cacheBlockingGetHostByAddr */
+ FQDN_START = 0,
+ FQDN_ENT = 1, /* cacheFqdnEntries */
+ FQDN_REQ = 2, /* cacheFqdnRequests */
+ FQDN_HITS = 3, /* cacheFqdnHits */
+ FQDN_PENDHIT = 4, /* cacheFqdnPendingHits */
+ FQDN_NEGHIT = 5, /* cacheFqdnNegativeHits */
+ FQDN_MISS = 6, /* cacheFqdnMisses */
+ FQDN_GHBN = 7, /* cacheBlockingGetHostByAddr */
FQDN_END
};
-
/* cacheDNS */
enum {
- DNS_START,
- DNS_REQ, /* cacheDnsRequests */
- DNS_REP, /* cacheDnsReplies */
- DNS_SERVERS, /* cacheDnsNumberServers */
+ DNS_START = 0,
+ DNS_REQ = 1, /* cacheDnsRequests */
+ DNS_REP = 2, /* cacheDnsReplies */
+ DNS_SERVERS = 3, /* cacheDnsNumberServers */
DNS_END
};
-
-
-
/*
* cacheMesh group { squid 5 }
*/
enum {
- MESH_START,
- MESH_PTBL, /* cachePeerTable */
- MESH_CTBL, /* cacheClientTable */
+ MESH_START = 0,
+ MESH_PTBL = 1, /* cachePeerTable */
+ MESH_CTBL = 2, /* cacheClientTable */
MESH_END
};
-/* cachePeerEntry */
+/* cachePeerTable CachePeerEntry */
enum {
- MESH_PTBL_START,
- MESH_PTBL_INDEX, /* cachePeerIndex */
- MESH_PTBL_NAME, /* cachePeerName */
- MESH_PTBL_ADDR_TYPE, /* cachePeerAddressType */
- MESH_PTBL_ADDR, /* cachePeerAddress */
- MESH_PTBL_HTTP, /* cachePortHttp */
- MESH_PTBL_ICP, /* cachePeerPortIcp */
- MESH_PTBL_TYPE, /* cachePeerType */
- MESH_PTBL_STATE, /* cachePeerStat */
- MESH_PTBL_SENT, /* cachePeerPingsSent */
- MESH_PTBL_PACKED, /* cachePeerPingsAcked */
- MESH_PTBL_FETCHES, /* cachePeerFetches */
- MESH_PTBL_RTT, /* cachePeerRtt */
- MESH_PTBL_IGN, /* cachePeerIgnored */
- MESH_PTBL_KEEPAL_S, /* cachePeerKeepAlSent */
- MESH_PTBL_KEEPAL_R, /* cachePeerKeepAlRecv */
+ MESH_PTBL_START = 0,
+ MESH_PTBL_INDEX = 1, /* cachePeerIndex */
+ MESH_PTBL_NAME = 2, /* cachePeerName */
+ MESH_PTBL_ADDR_TYPE = 3, /* cachePeerAddressType */
+ MESH_PTBL_ADDR = 4, /* cachePeerAddress */
+ MESH_PTBL_HTTP = 5, /* cachePortHttp */
+ MESH_PTBL_ICP = 6, /* cachePeerPortIcp */
+ MESH_PTBL_TYPE = 7, /* cachePeerType */
+ MESH_PTBL_STATE = 8, /* cachePeerStat */
+ MESH_PTBL_SENT = 9, /* cachePeerPingsSent */
+ MESH_PTBL_PACKED = 10, /* cachePeerPingsAcked */
+ MESH_PTBL_FETCHES = 11, /* cachePeerFetches */
+ MESH_PTBL_RTT = 12, /* cachePeerRtt */
+ MESH_PTBL_IGN = 13, /* cachePeerIgnored */
+ MESH_PTBL_KEEPAL_S = 14, /* cachePeerKeepAlSent */
+ MESH_PTBL_KEEPAL_R = 15, /* cachePeerKeepAlRecv */
MESH_PTBL_END
};
/* cacheClientEntry */
enum {
- MESH_CTBL_START,
- MESH_CTBL_ADDR_TYPE, /* cacheClientAddressType */
- MESH_CTBL_ADDR, /* cacheClientAddress */
- MESH_CTBL_HTREQ, /* cacheClientHttpRequests */
- MESH_CTBL_HTBYTES, /* cacheClientHttpKb */
- MESH_CTBL_HTHITS, /* cacheClientHttpHits */
- MESH_CTBL_HTHITBYTES, /* cacheClientHTTPHitKb */
- MESH_CTBL_ICPREQ, /* cacheClientIcpRequests */
- MESH_CTBL_ICPBYTES, /* cacheClientIcpKb */
- MESH_CTBL_ICPHITS, /* cacheClientIcpHits */
- MESH_CTBL_ICPHITBYTES,/* cacheClientIcpHitKb */
+ MESH_CTBL_START = 0,
+ MESH_CTBL_ADDR_TYPE = 1, /* cacheClientAddressType */
+ MESH_CTBL_ADDR = 2, /* cacheClientAddress */
+ MESH_CTBL_HTREQ = 3, /* cacheClientHttpRequests */
+ MESH_CTBL_HTBYTES = 4, /* cacheClientHttpKb */
+ MESH_CTBL_HTHITS = 5, /* cacheClientHttpHits */
+ MESH_CTBL_HTHITBYTES = 6, /* cacheClientHTTPHitKb */
+ MESH_CTBL_ICPREQ = 7, /* cacheClientIcpRequests */
+ MESH_CTBL_ICPBYTES = 8, /* cacheClientIcpKb */
+ MESH_CTBL_ICPHITS = 9, /* cacheClientIcpHits */
+ MESH_CTBL_ICPHITBYTES = 10, /* cacheClientIcpHitKb */
MESH_CTBL_END
};
-
-
#endif /* SQUID_SNMP */
#endif /* SQUID_CACHE_SNMP_H */
mib_tree_entry *mib_tree_head;
mib_tree_entry *mib_tree_last;
+static mib_tree_entry * snmpAddNodeStr(const char *base_str, int o, oid_ParseFn * parsefunction, instance_Fn * instancefunction);
static mib_tree_entry *snmpAddNode(oid * name, int len, oid_ParseFn * parsefunction, instance_Fn * instancefunction, int children,...);
static oid *snmpCreateOid(int length,...);
+mib_tree_entry * snmpLookupNodeStr(mib_tree_entry *entry, const char *str);
+int snmpCreateOidFromStr(const char *str, oid **name, int *nl);
SQUIDCEXTERN void (*snmplib_debug_hook) (int, char *);
static oid *static_Inst(oid * name, snint * len, mib_tree_entry * current, oid_ParseFn ** Fn);
static oid *time_Inst(oid * name, snint * len, mib_tree_entry * current, oid_ParseFn ** Fn);
snmplib_debug_hook = snmpSnmplibDebug;
- mib_tree_head = snmpAddNode(snmpCreateOid(1, 1),
- 1, NULL, NULL, 1,
- snmpAddNode(snmpCreateOid(2, 1, 3),
- 2, NULL, NULL, 1,
- snmpAddNode(snmpCreateOid(3, 1, 3, 6),
- 3, NULL, NULL, 1,
- snmpAddNode(snmpCreateOid(4, 1, 3, 6, 1),
- 4, NULL, NULL, 1,
- snmpAddNode(snmpCreateOid(5, 1, 3, 6, 1, 4),
- 5, NULL, NULL, 1,
- snmpAddNode(snmpCreateOid(6, 1, 3, 6, 1, 4, 1),
- 6, NULL, NULL, 1,
- snmpAddNode(snmpCreateOid(7, 1, 3, 6, 1, 4, 1, 3495),
- 7, NULL, NULL, 1,
- snmpAddNode(snmpCreateOid(LEN_SQUIDMIB, SQUIDMIB),
- 8, NULL, NULL, 5,
- snmpAddNode(snmpCreateOid(LEN_SQ_SYS, SQ_SYS),
- LEN_SQ_SYS, NULL, NULL, 3,
- snmpAddNode(snmpCreateOid(LEN_SYS, SQ_SYS, SYSVMSIZ),
- LEN_SYS, snmp_sysFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SYS, SQ_SYS, SYSSTOR),
- LEN_SYS, snmp_sysFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SYS, SQ_SYS, SYS_UPTIME),
- LEN_SYS, snmp_sysFn, static_Inst, 0)),
- snmpAddNode(snmpCreateOid(LEN_SQ_CONF, SQ_CONF),
- LEN_SQ_CONF, NULL, NULL, 6,
- snmpAddNode(snmpCreateOid(LEN_SYS, SQ_CONF, CONF_ADMIN),
- LEN_SYS, snmp_confFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SYS, SQ_CONF, CONF_VERSION),
- LEN_SYS, snmp_confFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SYS, SQ_CONF, CONF_VERSION_ID),
- LEN_SYS, snmp_confFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SYS, SQ_CONF, CONF_LOG_FAC),
- LEN_SYS, snmp_confFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SYS, SQ_CONF, CONF_STORAGE),
- LEN_SYS, NULL, NULL, 4,
- snmpAddNode(snmpCreateOid(LEN_CONF_ST, SQ_CONF, CONF_STORAGE, CONF_ST_MMAXSZ),
- LEN_CONF_ST, snmp_confFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_CONF_ST, SQ_CONF, CONF_STORAGE, CONF_ST_SWMAXSZ),
- LEN_CONF_ST, snmp_confFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_CONF_ST, SQ_CONF, CONF_STORAGE, CONF_ST_SWHIWM),
- LEN_CONF_ST, snmp_confFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_CONF_ST, SQ_CONF, CONF_STORAGE, CONF_ST_SWLOWM),
- LEN_CONF_ST, snmp_confFn, static_Inst, 0)),
- snmpAddNode(snmpCreateOid(LEN_SYS, SQ_CONF, CONF_UNIQNAME),
- LEN_SYS, snmp_confFn, static_Inst, 0)),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF, SQ_PRF),
- LEN_SQ_PRF, NULL, NULL, 2,
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 1, SQ_PRF, PERF_SYS),
- LEN_SQ_PRF + 1, NULL, NULL, 13,
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, PERF_SYS_PF),
- LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, PERF_SYS_NUMR),
- LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, PERF_SYS_MEMUSAGE),
- LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, PERF_SYS_CPUTIME),
- LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, PERF_SYS_CPUUSAGE),
- LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, PERF_SYS_MAXRESSZ),
- LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, PERF_SYS_NUMOBJCNT),
- LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, PERF_SYS_CURLRUEXP),
- LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, PERF_SYS_CURUNLREQ),
- LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, PERF_SYS_CURUNUSED_FD),
- LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, PERF_SYS_CURRESERVED_FD),
- LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, PERF_SYS_CURUSED_FD),
- LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, PERF_SYS_CURMAX_FD),
- LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0)),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 1, SQ_PRF, PERF_PROTO),
- LEN_SQ_PRF + 1, NULL, NULL, 2,
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR),
- LEN_SQ_PRF + 2, NULL, NULL, 15,
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_HTTP_REQ),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_HTTP_HITS),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_HTTP_ERRORS),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_HTTP_KBYTES_IN),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_HTTP_KBYTES_OUT),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_ICP_S),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_ICP_R),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_ICP_SKB),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_ICP_RKB),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_REQ),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_ERRORS),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_KBYTES_IN),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_KBYTES_OUT),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_CURSWAP),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_AGGR, PERF_PROTOSTAT_AGGR_CLIENTS),
- LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0)),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_PROTO, 2),
- LEN_SQ_PRF + 2, NULL, NULL, 1,
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_MEDIAN, 1),
- LEN_SQ_PRF + 3, NULL, NULL, 11,
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_MEDIAN, 1, PERF_MEDIAN_TIME),
- LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_MEDIAN, 1, PERF_MEDIAN_HTTP_ALL),
- LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_MEDIAN, 1, PERF_MEDIAN_HTTP_MISS),
- LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_MEDIAN, 1, PERF_MEDIAN_HTTP_NM),
- LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_MEDIAN, 1, PERF_MEDIAN_HTTP_HIT),
- LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_MEDIAN, 1, PERF_MEDIAN_ICP_QUERY),
- LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_MEDIAN, 1, PERF_MEDIAN_ICP_REPLY),
- LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_MEDIAN, 1, PERF_MEDIAN_DNS),
- LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_MEDIAN, 1, PERF_MEDIAN_RHR),
- LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_MEDIAN, 1, PERF_MEDIAN_BHR),
- LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, PERF_PROTOSTAT_MEDIAN, 1, PERF_MEDIAN_HTTP_NH),
- LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0))))),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET, SQ_NET),
- LEN_SQ_NET, NULL, NULL, 3,
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 1, SQ_NET, NET_IP_CACHE),
- LEN_SQ_NET + 1, NULL, NULL, 8,
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_ENT),
- LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_REQ),
- LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_HITS),
- LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_PENDHIT),
- LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_NEGHIT),
- LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_MISS),
- LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_GHBN),
- LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_LOC),
- LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0)),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 1, SQ_NET, NET_FQDN_CACHE),
- LEN_SQ_NET + 1, NULL, NULL, 7,
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_FQDN_CACHE, FQDN_ENT),
- LEN_SQ_NET + 2, snmp_netFqdnFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_FQDN_CACHE, FQDN_REQ),
- LEN_SQ_NET + 2, snmp_netFqdnFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_FQDN_CACHE, FQDN_HITS),
- LEN_SQ_NET + 2, snmp_netFqdnFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_FQDN_CACHE, FQDN_PENDHIT),
- LEN_SQ_NET + 2, snmp_netFqdnFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_FQDN_CACHE, FQDN_NEGHIT),
- LEN_SQ_NET + 2, snmp_netFqdnFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_FQDN_CACHE, FQDN_MISS),
- LEN_SQ_NET + 2, snmp_netFqdnFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_FQDN_CACHE, FQDN_GHBN),
- LEN_SQ_NET + 2, snmp_netFqdnFn, static_Inst, 0)),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 1, SQ_NET, NET_DNS_CACHE),
- LEN_SQ_NET + 1, NULL, NULL, 3,
-#if USE_DNSSERVERS
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_DNS_CACHE, DNS_REQ),
- LEN_SQ_NET + 2, snmp_netDnsFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_DNS_CACHE, DNS_REP),
- LEN_SQ_NET + 2, snmp_netDnsFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_DNS_CACHE, DNS_SERVERS),
- LEN_SQ_NET + 2, snmp_netDnsFn, static_Inst, 0))),
+ /*
+ * This following bit of evil is to get the final node in the "squid" mib
+ * without having a "search" function. A search function should be written
+ * to make this and the other code much less evil.
+ */
+ mib_tree_head = snmpAddNode(snmpCreateOid(1, 1), 1, NULL, NULL, 0);
+
+ assert(mib_tree_head);
+ debugs(49, 5, "snmpInit: root is " << mib_tree_head);
+ snmpAddNodeStr("1", 3, NULL, NULL);
+
+ snmpAddNodeStr("1.3", 6, NULL, NULL);
+
+ snmpAddNodeStr("1.3.6", 1, NULL, NULL);
+ snmpAddNodeStr("1.3.6.1", 4, NULL, NULL);
+ snmpAddNodeStr("1.3.6.1.4", 1, NULL, NULL);
+ snmpAddNodeStr("1.3.6.1.4.1", 3495, NULL, NULL);
+ mib_tree_entry *m2 = snmpAddNodeStr("1.3.6.1.4.1.3495", 1, NULL, NULL);
+
+ mib_tree_entry *n = snmpLookupNodeStr(NULL, "1.3.6.1.4.1.3495.1");
+ assert(m2 == n);
+
+ /* SQ_SYS - 1.3.6.1.4.1.3495.1.1 */
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1", 1, NULL, NULL);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.1", SYSVMSIZ, snmp_sysFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.1", SYSSTOR, snmp_sysFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.1", SYS_UPTIME, snmp_sysFn, static_Inst);
+
+ /* SQ_CONF - 1.3.6.1.4.1.3495.1.2 */
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1", 2, NULL, NULL);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.2", CONF_ADMIN, snmp_confFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.2", CONF_VERSION, snmp_confFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.2", CONF_VERSION_ID, snmp_confFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.2", CONF_LOG_FAC, snmp_confFn, static_Inst);
+
+ /* SQ_CONF + CONF_STORAGE - 1.3.6.1.4.1.3495.1.5 */
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.2", CONF_STORAGE, NULL, NULL);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.2.5", CONF_ST_MMAXSZ, snmp_confFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.2.5", CONF_ST_SWMAXSZ, snmp_confFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.2.5", CONF_ST_SWHIWM, snmp_confFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.2.5", CONF_ST_SWLOWM, snmp_confFn, static_Inst);
+
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.2", CONF_UNIQNAME, snmp_confFn, static_Inst);
+
+ /* SQ_PRF - 1.3.6.1.4.1.3495.1.3 */
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1", 3, NULL, NULL); /* SQ_PRF */
+
+ /* PERF_SYS - 1.3.6.1.4.1.3495.1.3.1 */
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3", PERF_SYS, NULL, NULL);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.1", PERF_SYS_PF, snmp_prfSysFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.1", PERF_SYS_NUMR, snmp_prfSysFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.1", PERF_SYS_MEMUSAGE, snmp_prfSysFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.1", PERF_SYS_CPUTIME, snmp_prfSysFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.1", PERF_SYS_CPUUSAGE, snmp_prfSysFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.1", PERF_SYS_MAXRESSZ, snmp_prfSysFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.1", PERF_SYS_NUMOBJCNT, snmp_prfSysFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.1", PERF_SYS_CURLRUEXP, snmp_prfSysFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.1", PERF_SYS_CURUNLREQ, snmp_prfSysFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.1", PERF_SYS_CURUNUSED_FD, snmp_prfSysFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.1", PERF_SYS_CURRESERVED_FD, snmp_prfSysFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.1", PERF_SYS_CURUSED_FD, snmp_prfSysFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.1", PERF_SYS_CURMAX_FD, snmp_prfSysFn, static_Inst);
+
+ /* PERF_PROTO - 1.3.6.1.4.1.3495.1.3.2 */
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3", PERF_PROTO, NULL, NULL);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2", PERF_PROTOSTAT_AGGR, NULL, NULL);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_HTTP_REQ, snmp_prfProtoFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_HTTP_HITS, snmp_prfProtoFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_HTTP_ERRORS, snmp_prfProtoFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_HTTP_KBYTES_IN, snmp_prfProtoFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_HTTP_KBYTES_OUT, snmp_prfProtoFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_ICP_S, snmp_prfProtoFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_ICP_R, snmp_prfProtoFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_ICP_SKB, snmp_prfProtoFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_ICP_RKB, snmp_prfProtoFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_REQ, snmp_prfProtoFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_ERRORS, snmp_prfProtoFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_KBYTES_IN, snmp_prfProtoFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_KBYTES_OUT, snmp_prfProtoFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_CURSWAP, snmp_prfProtoFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.1", PERF_PROTOSTAT_AGGR_CLIENTS, snmp_prfProtoFn, static_Inst);
+
+ /* Note this is time-series rather than 'static' */
+ /* cacheMedianSvcTable */
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2", PERF_PROTOSTAT_MEDIAN, NULL, NULL);
+
+ /* cacheMedianSvcEntry */
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.2", 1, NULL, NULL);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.2.1", PERF_MEDIAN_TIME, snmp_prfProtoFn, time_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.2.1", PERF_MEDIAN_HTTP_ALL, snmp_prfProtoFn, time_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.2.1", PERF_MEDIAN_HTTP_MISS, snmp_prfProtoFn, time_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.2.1", PERF_MEDIAN_HTTP_NM, snmp_prfProtoFn, time_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.2.1", PERF_MEDIAN_HTTP_HIT, snmp_prfProtoFn, time_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.2.1", PERF_MEDIAN_ICP_QUERY, snmp_prfProtoFn, time_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.2.1", PERF_MEDIAN_ICP_REPLY, snmp_prfProtoFn, time_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.2.1", PERF_MEDIAN_DNS, snmp_prfProtoFn, time_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.2.1", PERF_MEDIAN_RHR, snmp_prfProtoFn, time_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.2.1", PERF_MEDIAN_BHR, snmp_prfProtoFn, time_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.3.2.2.1", PERF_MEDIAN_HTTP_NH, snmp_prfProtoFn, time_Inst);
+
+ /* SQ_NET - 1.3.6.1.4.1.3495.1.4 */
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1", 4, NULL, NULL);
+
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4", NET_IP_CACHE, NULL, NULL);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.1", IP_ENT, snmp_netIpFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.1", IP_REQ, snmp_netIpFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.1", IP_HITS, snmp_netIpFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.1", IP_PENDHIT, snmp_netIpFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.1", IP_NEGHIT, snmp_netIpFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.1", IP_MISS, snmp_netIpFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.1", IP_GHBN, snmp_netIpFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.1", IP_LOC, snmp_netIpFn, static_Inst);
+
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4", NET_FQDN_CACHE, NULL, NULL);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.2", FQDN_ENT, snmp_netFqdnFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.2", FQDN_REQ, snmp_netFqdnFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.2", FQDN_HITS, snmp_netFqdnFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.2", FQDN_PENDHIT, snmp_netFqdnFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.2", FQDN_NEGHIT, snmp_netFqdnFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.2", FQDN_MISS, snmp_netFqdnFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.2", FQDN_GHBN, snmp_netFqdnFn, static_Inst);
+
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4", NET_DNS_CACHE, NULL, NULL);
+ #if USE_DNSSERVERS
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.3", DNS_REQ, snmp_netDnsFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.3", DNS_REP, snmp_netDnsFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.3", DNS_SERVERS, snmp_netDnsFn, static_Inst);
#else
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_DNS_CACHE, DNS_REQ),
- LEN_SQ_NET + 2, snmp_netIdnsFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_DNS_CACHE, DNS_REP),
- LEN_SQ_NET + 2, snmp_netIdnsFn, static_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_DNS_CACHE, DNS_SERVERS),
- LEN_SQ_NET + 2, snmp_netIdnsFn, static_Inst, 0))),
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.3", DNS_REQ, snmp_netIdnsFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.3", DNS_REP, snmp_netIdnsFn, static_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.4.3", DNS_SERVERS, snmp_netIdnsFn, static_Inst);
#endif
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH, SQ_MESH),
- LEN_SQ_MESH, NULL, NULL, 2,
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 1, SQ_MESH, MESH_PTBL),
- LEN_SQ_MESH + 1, NULL, NULL, 1,
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 2, SQ_MESH, 1, 1),
- LEN_SQ_MESH + 2, NULL, NULL, 15,
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_INDEX),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_NAME),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_ADDR_TYPE),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_ADDR),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_HTTP),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_ICP),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_TYPE),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_STATE),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_SENT),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_PACKED),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_FETCHES),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_RTT),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_IGN),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_KEEPAL_S),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_PTBL, 1, MESH_PTBL_KEEPAL_R),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0))),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 1, SQ_MESH, MESH_CTBL),
- LEN_SQ_MESH + 1, NULL, NULL, 1,
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 2, SQ_MESH, MESH_CTBL, 1),
- LEN_SQ_MESH + 2, NULL, NULL, 10,
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_CTBL, 1, MESH_CTBL_ADDR_TYPE),
- LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_CTBL, 1, MESH_CTBL_ADDR),
- LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_CTBL, 1, MESH_CTBL_HTREQ),
- LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_CTBL, 1, MESH_CTBL_HTBYTES),
- LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_CTBL, 1, MESH_CTBL_HTHITS),
- LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_CTBL, 1, MESH_CTBL_HTHITBYTES),
- LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_CTBL, 1, MESH_CTBL_ICPREQ),
- LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_CTBL, 1, MESH_CTBL_ICPBYTES),
- LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_CTBL, 1, MESH_CTBL_ICPHITS),
- LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0),
- (mib_tree_last = snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, MESH_CTBL, 1, MESH_CTBL_ICPHITBYTES),
- LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0)))))
- )
- )
- )
- )
- )
- )
- )
- );
+
+ /* SQ_MESH - 1.3.6.1.4.1.3495.1.5 */
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1", 5, NULL, NULL);
+
+ /* cachePeerTable - 1.3.6.1.4.1.3495.1.5.1 */
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5", MESH_PTBL, NULL, NULL);
+
+ /* CachePeerEntry - 1.3.6.1.4.1.3495.1.5.1.1 */
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1", 1, NULL, NULL);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_INDEX, snmp_meshPtblFn, peer_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_NAME, snmp_meshPtblFn, peer_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_ADDR_TYPE, snmp_meshPtblFn, peer_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_ADDR, snmp_meshPtblFn, peer_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_HTTP, snmp_meshPtblFn, peer_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_ICP, snmp_meshPtblFn, peer_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_TYPE, snmp_meshPtblFn, peer_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_STATE, snmp_meshPtblFn, peer_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_SENT, snmp_meshPtblFn, peer_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_PACKED, snmp_meshPtblFn, peer_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_FETCHES, snmp_meshPtblFn, peer_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_RTT, snmp_meshPtblFn, peer_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_IGN, snmp_meshPtblFn, peer_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_KEEPAL_S, snmp_meshPtblFn, peer_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.1.1", MESH_PTBL_KEEPAL_R, snmp_meshPtblFn, peer_Inst);
+
+ /* cacheClientTable - 1.3.6.1.4.1.3495.1.5.2 */
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5", MESH_CTBL, NULL, NULL);
+
+ /* cacheClientEntry - 1.3.6.1.4.1.3495.1.5.2.1 */
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.2", 1, NULL, NULL);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.2.1", MESH_CTBL_ADDR_TYPE, snmp_meshCtblFn, client_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.2.1", MESH_CTBL_ADDR, snmp_meshCtblFn, client_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.2.1", MESH_CTBL_HTREQ, snmp_meshCtblFn, client_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.2.1", MESH_CTBL_HTBYTES, snmp_meshCtblFn, client_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.2.1", MESH_CTBL_HTHITS, snmp_meshCtblFn, client_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.2.1", MESH_CTBL_HTHITBYTES, snmp_meshCtblFn, client_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.2.1", MESH_CTBL_ICPREQ, snmp_meshCtblFn, client_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.2.1", MESH_CTBL_ICPBYTES, snmp_meshCtblFn, client_Inst);
+ snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.2.1", MESH_CTBL_ICPHITS, snmp_meshCtblFn, client_Inst);
+ mib_tree_last = snmpAddNodeStr("1.3.6.1.4.1.3495.1.5.2.1", MESH_CTBL_ICPHITBYTES, snmp_meshCtblFn, client_Inst);
debugs(49, 9, "snmpInit: Completed SNMP mib tree structure");
}
*/
static struct snmp_pdu *
-
snmpAgentResponse(struct snmp_pdu *PDU) {
struct snmp_pdu *Answer = NULL;
peer *peers = Config.peers;
if (peers == NULL) {
+ debugs(49, 6, "snmp peer_Inst: No Peers.");
current = current->parent->parent->parent->leaves[1];
while ((current) && (!current->parsefunction))
current = current->leaves[0];
instance = client_Inst(current->name, len, current, Fn);
} else if (*len <= current->len) {
+ debugs(49, 6, "snmp peer_Inst: *len <= current->len ???");
instance = (oid *)xmalloc(sizeof(name) * ( *len + 1));
xmemcpy(instance, name, (sizeof(name) * *len));
instance[*len] = 1 ;
*len += 1;
} else {
int no = name[current->len] ;
- int i ; // Note: This works because the Confifg.peers
- // keep its index acording to its position.
+ int i;
+ // Note: This works because the Config.peers keeps its index according to its position.
for ( i=0 ; peers && (i < no) ; peers = peers->next , i++ ) ;
if (peers) {
+ debugs(49, 6, "snmp peer_Inst: Encode peer #" << i);
instance = (oid *)xmalloc(sizeof(name) * (current->len + 1 ));
xmemcpy(instance, name, (sizeof(name) * current->len ));
instance[current->len] = no + 1 ; // i.e. the next index on cache_peeer table.
} else {
+ debugs(49, 6, "snmp peer_Inst: We have " << i << " peers. Can't find #" << no);
return (instance);
}
}
count++;
}
- /* Exactly the sibling on rigth */
+ /* Exactly the sibling on right */
if (count < current->children) {
next = current->leaves[count];
} else {
return (next);
}
+void
+snmpAddNodeChild(mib_tree_entry *entry, mib_tree_entry *child)
+{
+ debugs(49, 5, "snmpAddNodeChild: assigning " << child << " to parent " << entry);
+ entry->leaves = (mib_tree_entry **)xrealloc(entry->leaves, sizeof(mib_tree_entry *) * (entry->children + 1));
+ entry->leaves[entry->children] = child;
+ entry->leaves[entry->children]->parent = entry;
+ entry->children++;
+}
+
+mib_tree_entry *
+snmpLookupNodeStr(mib_tree_entry *root, const char *str)
+{
+ oid *name;
+ int namelen;
+ mib_tree_entry *e;
+
+ if (root)
+ e = root;
+ else
+ e = mib_tree_head;
+
+ if (! snmpCreateOidFromStr(str, &name, &namelen))
+ return NULL;
+
+ /* I wish there were some kind of sensible existing tree traversal
+ * routine to use. I'll worry about that later */
+ if (namelen <= 1) {
+ xfree(name);
+ return e; /* XXX it should only be this? */
+ }
+
+ int i, r = 1;
+ while(r <= namelen) {
+
+ /* Find the child node which matches this */
+ for (i = 0; i < e->children && e->leaves[i]->name[r] != name[r]; i++) ; // seek-loop
+
+ /* Are we pointing to that node? */
+ if (i >= e->children)
+ break;
+ assert(e->leaves[i]->name[r] == name[r]);
+
+ /* Skip to that node! */
+ e = e->leaves[i];
+ r++;
+ }
+
+ xfree(name);
+ return e;
+}
+
+int
+snmpCreateOidFromStr(const char *str, oid **name, int *nl)
+{
+ char const *delim = ".";
+ char *p;
+
+ *name = NULL;
+ *nl = 0;
+ char *s = xstrdup(str);
+
+ /* Parse the OID string into oid bits */
+ while( (p = strsep(&s, delim)) != NULL) {
+ *name = (oid*)xrealloc(*name, sizeof(oid) * ((*nl) + 1));
+ (*name)[*nl] = atoi(p);
+ (*nl)++;
+ }
+
+ xfree(s);
+ return 1;
+}
+
+/*
+ * Create an entry. Return a pointer to the newly created node, or NULL
+ * on failure.
+ */
+static mib_tree_entry *
+snmpAddNodeStr(const char *base_str, int o, oid_ParseFn * parsefunction, instance_Fn * instancefunction)
+{
+ mib_tree_entry *m, *b;
+ oid *n;
+ int nl;
+ char s[1024];
+
+ /* Find base node */
+ b = snmpLookupNodeStr(mib_tree_head, base_str);
+ if (! b)
+ return NULL;
+ debugs(49, 5, "snmpAddNodeStr: " << base_str << ": -> " << b);
+
+ /* Create OID string for new entry */
+ snprintf(s, 1024, "%s.%d", base_str, o);
+ if (! snmpCreateOidFromStr(s, &n, &nl))
+ return NULL;
+
+ /* Create a node */
+ m = snmpAddNode(n, nl, parsefunction, instancefunction, 0);
+
+ /* Link it into the existing tree */
+ snmpAddNodeChild(b, m);
+
+ /* Return the node */
+ return m;
+}
+
+
/*
* Adds a node to the MIB tree structure and adds the appropriate children
*/
entry->parsefunction = parsefunction;
entry->instancefunction = instancefunction;
entry->children = children;
+ entry->leaves = NULL;
if (children > 0) {
entry->leaves = (mib_tree_entry **)xmalloc(sizeof(mib_tree_entry *) * children);