]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Author: Adrian Chadd <adri@squid-cache.org>
authorAmos Jeffries <squid3@treenet.co.nz>
Sun, 20 Dec 2009 08:54:51 +0000 (21:54 +1300)
committerAmos Jeffries <squid3@treenet.co.nz>
Sun, 20 Dec 2009 08:54:51 +0000 (21:54 +1300)
Polish SNMP tree generator.

Alters the OID tree creation such that OID are easier for code developers
to manage.

Ported from Squid-2 patch (only applied to Lusca) by Amos Jeffries.

include/cache_snmp.h
src/mib.txt
src/snmp_core.cc

index 545a39c4148384f4a200a3f0885461f2a46e328c..058164549c39ffb4d9914fdc1760982337aa2e86 100644 (file)
 #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
 };
 
@@ -88,15 +86,15 @@ enum {
 #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
 };
 
@@ -108,184 +106,173 @@ enum {
  */
 
 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 */
index d928f63cf3095ae468cb421f95cf04b36c5b4f86..81b5ebd3d120c9413dff7561c4e27d8dfe7823a2 100644 (file)
@@ -287,6 +287,7 @@ squid MODULE-IDENTITY
                DESCRIPTION
                        " Highest file descriptors in use "
         ::= { cacheSysPerf 13 }
+
        --
        -- cacheProtoStats
        --
@@ -690,7 +691,7 @@ squid MODULE-IDENTITY
                 MAX-ACCESS read-only
                 STATUS current
                DESCRIPTION
-                       " Number of external dnsserver requests "
+                       " Number of external DNS server requests "
         ::= { cacheDns 1 }
 
        cacheDnsReplies OBJECT-TYPE
@@ -698,7 +699,7 @@ squid MODULE-IDENTITY
                 MAX-ACCESS read-only
                 STATUS current
                DESCRIPTION
-                       " Number of external dnsserver replies "
+                       " Number of external DNS server replies "
         ::= { cacheDns 2 }
 
        cacheDnsNumberServers OBJECT-TYPE
@@ -706,7 +707,7 @@ squid MODULE-IDENTITY
                 MAX-ACCESS read-only
                 STATUS current
                DESCRIPTION
-                       " Number of external dnsserver processes "
+                       " Number of external DNS server processes "
         ::= { cacheDns 3 }
        
 --
@@ -732,7 +733,7 @@ squid MODULE-IDENTITY
        ::= { cachePeerTable 1 }
 
        CachePeerEntry ::= SEQUENCE {
-         cachePeerIndex        CachePeerIndex, 
+         cachePeerIndex        CachePeerTableIndex, 
          cachePeerName         DisplayString,
          cachePeerAddressType  InetAddressType,
          cachePeerAddress      InetAddress,
@@ -757,7 +758,7 @@ squid MODULE-IDENTITY
                                the appropriate port number for the connection."
                        SYNTAX       Integer32 (1..65535)
        
-       CachePeerIndex ::= TEXTUAL-CONVENTION
+       CachePeerTableIndex ::= TEXTUAL-CONVENTION
              DISPLAY-HINT "d"
              STATUS       current
              DESCRIPTION
@@ -772,7 +773,6 @@ squid MODULE-IDENTITY
              SYNTAX       Integer32 (1..2147483647)
 
 
-
        cachePeerIndex OBJECT-TYPE
                SYNTAX CachePeerIndex
                MAX-ACCESS read-only
index 7bbdf893dfdeb4c49ca89d14fff4df4729f96e60..3f140057a1c16039da089922dcfe86a9b2ea12a9 100644 (file)
@@ -58,8 +58,11 @@ struct _mib_tree_entry {
 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);
@@ -93,263 +96,178 @@ snmpInit(void)
 
     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");
 }
@@ -576,7 +494,6 @@ snmpConstructReponse(snmp_request_t * rq)
  */
 
 static struct snmp_pdu *
-
 snmpAgentResponse(struct snmp_pdu *PDU) {
 
     struct snmp_pdu *Answer = NULL;
@@ -831,27 +748,31 @@ peer_Inst(oid * name, snint * len, mib_tree_entry * current, oid_ParseFn ** Fn)
     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);
         }
     }
@@ -943,7 +864,7 @@ snmpTreeSiblingEntry(oid entry, snint len, mib_tree_entry * current)
         count++;
     }
 
-    /* Exactly the sibling on rigth */
+    /* Exactly the sibling on right */
     if (count < current->children) {
         next = current->leaves[count];
     } else {
@@ -973,6 +894,113 @@ snmpTreeEntry(oid entry, snint len, mib_tree_entry * current)
     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
  */
@@ -994,6 +1022,7 @@ snmpAddNode(oid * name, int len, oid_ParseFn * parsefunction, instance_Fn * inst
     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);