]> git.ipfire.org Git - thirdparty/squid.git/blob - include/cache_snmp.h
add Id keyword
[thirdparty/squid.git] / include / cache_snmp.h
1 /*
2 * $Id: cache_snmp.h,v 1.16 1998/09/23 17:19:58 wessels Exp $
3 */
4
5 #ifdef SQUID_SNMP
6 #ifndef CACHE_SNMP_H
7 #define CACHE_SNMP_H
8
9 #if SIZEOF_LONG == 8
10 #define snint int
11 #else
12 #define snint long
13 #endif
14
15 #ifndef MIN
16 #define MIN(a,b) (a<b?a:b)
17 #endif
18
19 #include "snmp.h"
20 #include "snmp_impl.h"
21 #include "asn1.h"
22 #include "snmp_api.h"
23 #if 0
24 #include "snmp_client.h"
25 #include "mib.h"
26 #endif
27 #include "snmp_vars.h"
28 #include "snmp_oidlist.h"
29
30 /* mib stuff here */
31
32 #ifndef CURRENT_MIB_VERSION
33 #define CURRENT_MIB_VERSION "-- v 1.14 1998/04/03 kostas@nlanr.net"
34 #endif
35
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"
39 #endif
40
41 /* MIB definitions
42 * We start from the SQUIDMIB as the root of the subtree
43 *
44 * we are under : iso.org.dod.internet.experimental.nsfnet.squid
45 * 1 3 6 1 3 25 17
46 */
47
48 #define SQUIDMIB 1, 3, 6, 1, 3, 25, 17 /* length is 7 */
49 #define LEN_SQUIDMIB 7
50
51 #define SYSMIB 1, 3, 6, 1, 2, 1, 1 /* basic system vars */
52 #define LEN_SYSMIB 7
53
54 #define SQUID_OBJ_ID 1,3,6,1,4,1,25,17 /* Object Identifier */
55 #define LEN_SQUID_OBJ_ID 8
56
57 /* basic groups under .squid */
58
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
71
72 enum { /* basic system mib info group */
73 SYSMIB_START,
74 SYS_DESCR,
75 SYS_OBJECT_ID,
76 SYS_UPTIME,
77 SYS_CONTACT,
78 SYS_NAME,
79 SYS_LOCATION,
80 SYS_SERVICES,
81 SYSMIB_END
82 };
83
84 /* cacheSystem group */
85
86 enum {
87 SYS_START,
88 SYSVMSIZ,
89 SYSSTOR,
90 SYSCONNTBL,
91 SYSFDTBL,
92 SYS_END
93 };
94
95 /* cacheConfig group */
96
97 enum {
98 CONF_START,
99 CONF_ADMIN,
100 CONF_VERSION,
101 CONF_VERSION_ID,
102 CONF_UPTIME,
103 CONF_LOG_FAC,
104 CONF_STORAGE,
105 CONF_END
106 };
107
108 enum {
109 CONF_ST_START,
110 CONF_ST_MMAXSZ,
111 CONF_ST_MHIWM,
112 CONF_ST_MLOWM,
113 CONF_ST_SWMAXSZ,
114 CONF_ST_SWHIWM,
115 CONF_ST_SWLOWM,
116 CONF_ST_END
117 };
118
119 /* cacheMesh group */
120
121 enum {
122 MESH_START,
123 MESH_PTBL,
124 MESH_CTBL,
125 MESH_END
126 };
127
128 enum { /* cachePeerTable */
129 MESH_PTBL_START,
130 MESH_PTBL_NAME,
131 MESH_PTBL_IP,
132 MESH_PTBL_HTTP,
133 MESH_PTBL_ICP,
134 MESH_PTBL_TYPE,
135 MESH_PTBL_STATE,
136 MESH_PTBL_SENT,
137 MESH_PTBL_PACKED,
138 MESH_PTBL_FETCHES,
139 MESH_PTBL_RTT,
140 MESH_PTBL_IGN,
141 MESH_PTBL_KEEPAL_S,
142 MESH_PTBL_KEEPAL_R,
143 MESH_PTBL_END
144 };
145
146 enum { /* cacheClientTable */
147 MESH_CTBL_START,
148 MESH_CTBL_ADDR,
149 MESH_CTBL_HTREQ,
150 MESH_CTBL_HTBYTES,
151 MESH_CTBL_HTHITS,
152 MESH_CTBL_HTHITBYTES,
153 MESH_CTBL_ICPREQ,
154 MESH_CTBL_ICPBYTES,
155 MESH_CTBL_ICPHITS,
156 MESH_CTBL_ICPHITBYTES,
157 MESH_CTBL_END
158 };
159
160 /* cacheNetwork group */
161
162 enum {
163 NETDB_START,
164 NETDB_NET,
165 NETDB_PING_S,
166 NETDB_PING_R,
167 NETDB_HOPS,
168 NETDB_RTT,
169 NETDB_PINGTIME,
170 NETDB_LASTUSE,
171 NETDB_END
172 };
173
174 enum {
175 NET_IPC_START,
176 NET_IPC_ID,
177 NET_IPC_NAME,
178 NET_IPC_IP,
179 NET_IPC_STATE,
180 NET_IPC_END
181 };
182
183 enum {
184 NET_DNS_START,
185 NET_DNS_IPCACHE,
186 NET_DNS_FQDNCACHE,
187 NET_DNS_END
188 };
189
190
191 enum {
192 NET_FQDN_START,
193 NET_FQDN_ID,
194 NET_FQDN_NAME,
195 NET_FQDN_IP,
196 NET_FQDN_LASTREF,
197 NET_FQDN_EXPIRES,
198 NET_FQDN_STATE,
199 NET_FQDN_END
200 };
201
202 enum {
203 NET_START,
204 NET_NETDBTBL,
205 NET_DNS,
206 NET_NETSTAT,
207 NET_END
208 };
209
210 enum {
211 NETSTAT_START,
212 NETSTAT_TCPCONNS,
213 NETSTAT_UDPCONNS,
214 NETSTAT_INTHRPUT,
215 NETSTAT_OUTHRPUT
216 };
217
218 enum {
219 PERF_START,
220 PERF_SYS,
221 PERF_PROTO,
222 PERF_PEER,
223 PERF_END
224 };
225
226 enum {
227 PERF_SYS_START,
228 PERF_SYS_PF,
229 PERF_SYS_NUMR,
230 PERF_SYS_DEFR,
231 PERF_SYS_MEMUSAGE,
232 PERF_SYS_CPUUSAGE,
233 PERF_SYS_MAXRESSZ,
234 PERF_SYS_NUMOBJCNT,
235 PERF_SYS_CURLRUEXP,
236 PERF_SYS_CURUNLREQ,
237 PERF_SYS_CURUNUSED_FD,
238 PERF_SYS_CURRESERVED_FD,
239 PERF_SYS_END
240 };
241
242 enum {
243 PERF_PROTOSTAT_START,
244 PERF_PROTOSTAT_AGGR,
245 PERF_PROTOSTAT_MEDIAN,
246 PERF_PROTOSTAT_END
247 };
248
249 enum {
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
266 };
267
268 enum {
269 PERF_MEDIAN_START,
270 PERF_MEDIAN_TIME,
271 PERF_MEDIAN_HTTP_ALL,
272 PERF_MEDIAN_HTTP_MISS,
273 PERF_MEDIAN_HTTP_NM,
274 PERF_MEDIAN_HTTP_HIT,
275 PERF_MEDIAN_ICP_QUERY,
276 PERF_MEDIAN_ICP_REPLY,
277 PERF_MEDIAN_DNS,
278 PERF_MEDIAN_END
279 };
280
281 enum {
282 SYS_FD_START,
283 SYS_FD_NUMBER,
284 SYS_FD_NREAD,
285 SYS_FD_NWRITE,
286 SYS_FD_NAME,
287 SYS_FD_END
288 };
289
290 enum {
291 SYS_CONN_START,
292 SYS_CONN_FDNUM,
293 SYS_CONN_READ,
294 SYS_CONN_WRITE,
295 SYS_CONN_ADDR,
296 SYS_CONN_NAME,
297 SYS_CONN_PORT,
298 SYS_CONN_END
299 };
300
301 /* First, we have a huge array of MIBs this agent knows about */
302
303 struct MIBListEntry {
304 oid Name[9]; /* Change as appropriate */
305 snint NameLen;
306 oid_GetFn *GetFn;
307 oid_GetNextFn *GetNextFn;
308 };
309
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 *);
322
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);
338
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);
342
343
344 /* group handler definition */
345
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 *);
373
374 extern int fqdn_getMax();
375 extern int ipcache_getMax();
376 extern int fd_getMax();
377 extern struct in_addr *gen_getMax();
378
379 #endif
380 #endif