12 #define MIN(a,b) (a<b?a:b)
16 #include "snmp_impl.h"
20 #include "snmp_client.h"
23 #include "snmp_vars.h"
24 #include "snmp_oidlist.h"
28 #ifndef CURRENT_MIB_VERSION
29 #define CURRENT_MIB_VERSION "-- v 1.14 1998/04/03 kostas@nlanr.net"
33 * We start from the SQUIDMIB as the root of the subtree
35 * we are under : iso.org.dod.internet.experimental.nsfnet.squid
39 #define SQUIDMIB 1, 3, 6, 1, 3, 25, 17 /* length is 7 */
40 #define LEN_SQUIDMIB 7
42 #define SYSMIB 1, 3, 6, 1, 2, 1, 1 /* basic system vars */
45 /* basic groups under .squid */
47 #define SQ_SYS SQUIDMIB, 1 /* length is 8 */
48 #define LEN_SQ_SYS LEN_SQUIDMIB+1
49 #define SQ_CONF SQUIDMIB, 2
50 #define LEN_SQ_CONF LEN_SQUIDMIB+1
51 #define SQ_PRF SQUIDMIB, 3
52 #define LEN_SQ_PRF LEN_SQUIDMIB+1
53 #define SQ_NET SQUIDMIB, 4
54 #define LEN_SQ_NET LEN_SQUIDMIB+1
55 #define SQ_MESH SQUIDMIB, 5
56 #define LEN_SQ_MESH LEN_SQUIDMIB+1
57 #define SQ_ACC SQUIDMIB, 6
58 #define LEN_SQ_ACC LEN_SQUIDMIB+1
60 enum { /* basic system mib info group */
73 /* cacheSystem group */
84 /* cacheConfig group */
108 /* cacheMesh group */
117 enum { /* cachePeerTable */
135 enum { /* cacheClientTable */
141 MESH_CTBL_HTHITBYTES
,
145 MESH_CTBL_ICPHITBYTES
,
149 /* cacheNetwork group */
226 PERF_SYS_CURUNUSED_FD
,
227 PERF_SYS_CURRESERVED_FD
,
232 PERF_PROTOSTAT_START
,
234 PERF_PROTOSTAT_MEDIAN
,
239 PERF_PROTOSTAT_AGGR_START
,
240 PERF_PROTOSTAT_AGGR_HTTP_REQ
,
241 PERF_PROTOSTAT_AGGR_HTTP_HITS
,
242 PERF_PROTOSTAT_AGGR_HTTP_ERRORS
,
243 PERF_PROTOSTAT_AGGR_HTTP_KBYTES_IN
,
244 PERF_PROTOSTAT_AGGR_HTTP_KBYTES_OUT
,
245 PERF_PROTOSTAT_AGGR_ICP_S
,
246 PERF_PROTOSTAT_AGGR_ICP_R
,
247 PERF_PROTOSTAT_AGGR_ICP_SKB
,
248 PERF_PROTOSTAT_AGGR_ICP_RKB
,
249 PERF_PROTOSTAT_AGGR_REQ
,
250 PERF_PROTOSTAT_AGGR_ERRORS
,
251 PERF_PROTOSTAT_AGGR_KBYTES_IN
,
252 PERF_PROTOSTAT_AGGR_KBYTES_OUT
,
253 PERF_PROTOSTAT_AGGR_CURSWAP
,
254 PERF_PROTOSTAT_AGGR_END
260 PERF_MEDIAN_HTTP_ALL
,
261 PERF_MEDIAN_HTTP_MISS
,
263 PERF_MEDIAN_HTTP_HIT
,
264 PERF_MEDIAN_ICP_QUERY
,
265 PERF_MEDIAN_ICP_REPLY
,
290 /* First, we have a huge array of MIBs this agent knows about */
292 struct MIBListEntry
{
293 oid Name
[9]; /* Change as appropriate */
296 oid_GetNextFn
*GetNextFn
;
299 variable_list
*snmp_basicFn(variable_list
*, snint
*);
300 variable_list
*snmp_meshPtblFn(variable_list
*, snint
*);
301 variable_list
*snmp_meshCtblFn(variable_list
*, snint
*);
302 variable_list
*snmp_confFn(variable_list
*, snint
*);
303 variable_list
*snmp_sysFn(variable_list
*, snint
*);
304 variable_list
*snmp_prfSysFn(variable_list
*, snint
*);
305 variable_list
*snmp_prfProtoFn(variable_list
*, snint
*);
306 variable_list
*snmp_prfPeerFn(variable_list
*, snint
*);
307 variable_list
*snmp_netdbFn(variable_list
*, snint
*);
308 variable_list
*snmp_dnsFn(variable_list
*, snint
*);
309 variable_list
*snmp_ipcacheFn(variable_list
*, snint
*);
310 variable_list
*snmp_fqdncacheFn(variable_list
*, snint
*);
312 extern int snmpInitAgentAuth();
313 extern void snmpAgentParse(void *);
314 extern int snmpDefaultAuth();
315 extern int get_median_svc(int, int);
316 extern void snmpAgentParseDone(int, void *);
317 extern int meshCtblGetRowFn(oid
*, oid
*);
318 extern int netdbGetRowFn(oid
*, oid
*);
319 extern int fqdn_getMax();
320 extern int ipcache_getMax();
321 extern struct snmp_pdu
*snmpAgentResponse(struct snmp_pdu
*PDU
);
322 extern void snmpAclCheckStart(void *);
323 extern struct snmp_session
*Session
;
324 extern oid_ParseFn
*genericGetNextFn(oid
* Src
, snint SrcLen
, oid
** Dest
, snint
* DestLen
,
325 oid
* MIBRoot
, int MIBRootLen
, oid_GetRowFn
* getRowFn
, int tblen
, oid
* MIBTail
,
326 oid_ParseFn
* mygetFn
, int MIBTailLen
, int MIB_ACTION_INDEX
);
328 extern int oidcmp(oid
* A
, snint ALen
, oid
* B
, snint BLen
);
329 extern int oidncmp(oid
* A
, snint ALen
, oid
* B
, snint BLen
, snint CompLen
);
330 extern oid
*oiddup(oid
* A
, snint ALen
);
333 /* group handler definition */
335 extern oid_ParseFn
*basicGetFn(oid
*, snint
);
336 extern oid_ParseFn
*basicGetNextFn(oid
*, snint
, oid
**, snint
*);
337 extern oid_ParseFn
*sysGetFn(oid
*, snint
);
338 extern oid_ParseFn
*sysGetNextFn(oid
*, snint
, oid
**, snint
*);
339 extern oid_ParseFn
*sysFdGetFn(oid
*, snint
);
340 extern oid_ParseFn
*sysFdGetNextFn(oid
*, snint
, oid
**, snint
*);
341 extern oid_ParseFn
*sysConnGetFn(oid
*, snint
);
342 extern oid_ParseFn
*sysConnGetNextFn(oid
*, snint
, oid
**, snint
*);
343 extern oid_ParseFn
*confGetFn(oid
*, snint
);
344 extern oid_ParseFn
*confGetNextFn(oid
*, snint
, oid
**, snint
*);
345 extern oid_ParseFn
*confStGetNextFn(oid
*, snint
, oid
**, snint
*);
346 extern oid_ParseFn
*prfSysGetFn(oid
*, snint
);
347 extern oid_ParseFn
*prfSysGetFn(oid
*, snint
);
348 extern oid_ParseFn
*prfSysGetNextFn(oid
*, snint
, oid
**, snint
*);
349 extern oid_ParseFn
*prfProtoGetFn(oid
*, snint
);
350 extern oid_ParseFn
*prfProtoGetNextFn(oid
*, snint
, oid
**, snint
*);
351 extern oid_ParseFn
*netdbGetFn(oid
*, snint
);
352 extern oid_ParseFn
*netdbGetNextFn(oid
*, snint
, oid
**, snint
*);
353 extern oid_ParseFn
*dnsGetFn(oid
*, snint
);
354 extern oid_ParseFn
*dnsGetNextFn(oid
*, snint
, oid
**, snint
*);
355 extern oid_ParseFn
*meshGetFn(oid
*, snint
);
356 extern oid_ParseFn
*meshPtblGetNextFn(oid
*, snint
, oid
**, snint
*);
357 extern int meshPtblGetRowFn(oid
*, oid
*);
358 extern int sysConnGetRowFn(oid
*, oid
*);
359 extern int meshCtblGetRowFn(oid
*, oid
*);
360 extern int netdbGetRowFn(oid
*, oid
*);
361 oid_ParseFn
*meshCtblGetNextFn(oid
*, snint
, oid
**, snint
*);
363 extern int fqdn_getMax();
364 extern int ipcache_getMax();
365 extern int fd_getMax();
366 extern struct in_addr
*gen_getMax();