2 * $Id: cache_snmp.h,v 1.16 1998/09/23 17:19:58 wessels Exp $
16 #define MIN(a,b) (a<b?a:b)
20 #include "snmp_impl.h"
24 #include "snmp_client.h"
27 #include "snmp_vars.h"
28 #include "snmp_oidlist.h"
32 #ifndef CURRENT_MIB_VERSION
33 #define CURRENT_MIB_VERSION "-- v 1.14 1998/04/03 kostas@nlanr.net"
36 /* Base value for sysDescr, this will need to be changed */
37 #ifndef SQUID_SYS_DESCR
38 #define SQUID_SYS_DESCR "Squid Internet Object Cache"
42 * We start from the SQUIDMIB as the root of the subtree
44 * we are under : iso.org.dod.internet.experimental.nsfnet.squid
48 #define SQUIDMIB 1, 3, 6, 1, 3, 25, 17 /* length is 7 */
49 #define LEN_SQUIDMIB 7
51 #define SYSMIB 1, 3, 6, 1, 2, 1, 1 /* basic system vars */
54 #define SQUID_OBJ_ID 1,3,6,1,4,1,25,17 /* Object Identifier */
55 #define LEN_SQUID_OBJ_ID 8
57 /* basic groups under .squid */
59 #define SQ_SYS SQUIDMIB, 1 /* length is 8 */
60 #define LEN_SQ_SYS LEN_SQUIDMIB+1
61 #define SQ_CONF SQUIDMIB, 2
62 #define LEN_SQ_CONF LEN_SQUIDMIB+1
63 #define SQ_PRF SQUIDMIB, 3
64 #define LEN_SQ_PRF LEN_SQUIDMIB+1
65 #define SQ_NET SQUIDMIB, 4
66 #define LEN_SQ_NET LEN_SQUIDMIB+1
67 #define SQ_MESH SQUIDMIB, 5
68 #define LEN_SQ_MESH LEN_SQUIDMIB+1
69 #define SQ_ACC SQUIDMIB, 6
70 #define LEN_SQ_ACC LEN_SQUIDMIB+1
72 enum { /* basic system mib info group */
84 /* cacheSystem group */
95 /* cacheConfig group */
119 /* cacheMesh group */
128 enum { /* cachePeerTable */
146 enum { /* cacheClientTable */
152 MESH_CTBL_HTHITBYTES
,
156 MESH_CTBL_ICPHITBYTES
,
160 /* cacheNetwork group */
237 PERF_SYS_CURUNUSED_FD
,
238 PERF_SYS_CURRESERVED_FD
,
243 PERF_PROTOSTAT_START
,
245 PERF_PROTOSTAT_MEDIAN
,
250 PERF_PROTOSTAT_AGGR_START
,
251 PERF_PROTOSTAT_AGGR_HTTP_REQ
,
252 PERF_PROTOSTAT_AGGR_HTTP_HITS
,
253 PERF_PROTOSTAT_AGGR_HTTP_ERRORS
,
254 PERF_PROTOSTAT_AGGR_HTTP_KBYTES_IN
,
255 PERF_PROTOSTAT_AGGR_HTTP_KBYTES_OUT
,
256 PERF_PROTOSTAT_AGGR_ICP_S
,
257 PERF_PROTOSTAT_AGGR_ICP_R
,
258 PERF_PROTOSTAT_AGGR_ICP_SKB
,
259 PERF_PROTOSTAT_AGGR_ICP_RKB
,
260 PERF_PROTOSTAT_AGGR_REQ
,
261 PERF_PROTOSTAT_AGGR_ERRORS
,
262 PERF_PROTOSTAT_AGGR_KBYTES_IN
,
263 PERF_PROTOSTAT_AGGR_KBYTES_OUT
,
264 PERF_PROTOSTAT_AGGR_CURSWAP
,
265 PERF_PROTOSTAT_AGGR_END
271 PERF_MEDIAN_HTTP_ALL
,
272 PERF_MEDIAN_HTTP_MISS
,
274 PERF_MEDIAN_HTTP_HIT
,
275 PERF_MEDIAN_ICP_QUERY
,
276 PERF_MEDIAN_ICP_REPLY
,
301 /* First, we have a huge array of MIBs this agent knows about */
303 struct MIBListEntry
{
304 oid Name
[9]; /* Change as appropriate */
307 oid_GetNextFn
*GetNextFn
;
310 variable_list
*snmp_basicFn(variable_list
*, snint
*);
311 variable_list
*snmp_meshPtblFn(variable_list
*, snint
*);
312 variable_list
*snmp_meshCtblFn(variable_list
*, snint
*);
313 variable_list
*snmp_confFn(variable_list
*, snint
*);
314 variable_list
*snmp_sysFn(variable_list
*, snint
*);
315 variable_list
*snmp_prfSysFn(variable_list
*, snint
*);
316 variable_list
*snmp_prfProtoFn(variable_list
*, snint
*);
317 variable_list
*snmp_prfPeerFn(variable_list
*, snint
*);
318 variable_list
*snmp_netdbFn(variable_list
*, snint
*);
319 variable_list
*snmp_dnsFn(variable_list
*, snint
*);
320 variable_list
*snmp_ipcacheFn(variable_list
*, snint
*);
321 variable_list
*snmp_fqdncacheFn(variable_list
*, snint
*);
323 extern int snmpInitAgentAuth();
324 extern void snmpAgentParse(void *);
325 extern int snmpDefaultAuth();
326 extern int get_median_svc(int, int);
327 extern void snmpAgentParseDone(int, void *);
328 extern int meshCtblGetRowFn(oid
*, oid
*);
329 extern int netdbGetRowFn(oid
*, oid
*);
330 extern int fqdn_getMax();
331 extern int ipcache_getMax();
332 extern struct snmp_pdu
*snmpAgentResponse(struct snmp_pdu
*PDU
);
333 extern void snmpAclCheckStart(void *);
334 extern struct snmp_session
*Session
;
335 extern oid_ParseFn
*genericGetNextFn(oid
* Src
, snint SrcLen
, oid
** Dest
, snint
* DestLen
,
336 oid
* MIBRoot
, int MIBRootLen
, oid_GetRowFn
* getRowFn
, int tblen
, oid
* MIBTail
,
337 oid_ParseFn
* mygetFn
, int MIBTailLen
, int MIB_ACTION_INDEX
);
339 extern int oidcmp(oid
* A
, snint ALen
, oid
* B
, snint BLen
);
340 extern int oidncmp(oid
* A
, snint ALen
, oid
* B
, snint BLen
, snint CompLen
);
341 extern oid
*oiddup(oid
* A
, snint ALen
);
344 /* group handler definition */
346 extern oid_ParseFn
*basicGetFn(oid
*, snint
);
347 extern oid_ParseFn
*basicGetNextFn(oid
*, snint
, oid
**, snint
*);
348 extern oid_ParseFn
*sysGetFn(oid
*, snint
);
349 extern oid_ParseFn
*sysGetNextFn(oid
*, snint
, oid
**, snint
*);
350 extern oid_ParseFn
*sysFdGetFn(oid
*, snint
);
351 extern oid_ParseFn
*sysFdGetNextFn(oid
*, snint
, oid
**, snint
*);
352 extern oid_ParseFn
*sysConnGetFn(oid
*, snint
);
353 extern oid_ParseFn
*sysConnGetNextFn(oid
*, snint
, oid
**, snint
*);
354 extern oid_ParseFn
*confGetFn(oid
*, snint
);
355 extern oid_ParseFn
*confGetNextFn(oid
*, snint
, oid
**, snint
*);
356 extern oid_ParseFn
*confStGetNextFn(oid
*, snint
, oid
**, snint
*);
357 extern oid_ParseFn
*prfSysGetFn(oid
*, snint
);
358 extern oid_ParseFn
*prfSysGetFn(oid
*, snint
);
359 extern oid_ParseFn
*prfSysGetNextFn(oid
*, snint
, oid
**, snint
*);
360 extern oid_ParseFn
*prfProtoGetFn(oid
*, snint
);
361 extern oid_ParseFn
*prfProtoGetNextFn(oid
*, snint
, oid
**, snint
*);
362 extern oid_ParseFn
*netdbGetFn(oid
*, snint
);
363 extern oid_ParseFn
*netdbGetNextFn(oid
*, snint
, oid
**, snint
*);
364 extern oid_ParseFn
*dnsGetFn(oid
*, snint
);
365 extern oid_ParseFn
*dnsGetNextFn(oid
*, snint
, oid
**, snint
*);
366 extern oid_ParseFn
*meshGetFn(oid
*, snint
);
367 extern oid_ParseFn
*meshPtblGetNextFn(oid
*, snint
, oid
**, snint
*);
368 extern int meshPtblGetRowFn(oid
*, oid
*);
369 extern int sysConnGetRowFn(oid
*, oid
*);
370 extern int meshCtblGetRowFn(oid
*, oid
*);
371 extern int netdbGetRowFn(oid
*, oid
*);
372 oid_ParseFn
*meshCtblGetNextFn(oid
*, snint
, oid
**, snint
*);
374 extern int fqdn_getMax();
375 extern int ipcache_getMax();
376 extern int fd_getMax();
377 extern struct in_addr
*gen_getMax();