]> git.ipfire.org Git - thirdparty/squid.git/blob - include/cache_snmp.h
- Fixed snmp system Group; all objects are now returned.
[thirdparty/squid.git] / include / cache_snmp.h
1 #ifdef SQUID_SNMP
2 #ifndef CACHE_SNMP_H
3 #define CACHE_SNMP_H
4
5 #if SIZEOF_LONG == 8
6 #define snint int
7 #else
8 #define snint long
9 #endif
10
11 #ifndef MIN
12 #define MIN(a,b) (a<b?a:b)
13 #endif
14
15 #include "snmp.h"
16 #include "snmp_impl.h"
17 #include "asn1.h"
18 #include "snmp_api.h"
19 #if 0
20 #include "snmp_client.h"
21 #include "mib.h"
22 #endif
23 #include "snmp_vars.h"
24 #include "snmp_oidlist.h"
25
26 /* mib stuff here */
27
28 #ifndef CURRENT_MIB_VERSION
29 #define CURRENT_MIB_VERSION "-- v 1.14 1998/04/03 kostas@nlanr.net"
30 #endif
31
32 /* Base value for sysDescr */
33 #ifndef SQUID_SYS_DESCR
34 #define SQUID_SYS_DESCR "Squid Internet Object Cache"
35 #endif
36
37 /* MIB definitions
38 * We start from the SQUIDMIB as the root of the subtree
39 *
40 * we are under : iso.org.dod.internet.experimental.nsfnet.squid
41 * 1 3 6 1 3 25 17
42 */
43
44 #define SQUIDMIB 1, 3, 6, 1, 3, 25, 17 /* length is 7 */
45 #define LEN_SQUIDMIB 7
46
47 #define SYSMIB 1, 3, 6, 1, 2, 1, 1 /* basic system vars */
48 #define LEN_SYSMIB 7
49
50 /* basic groups under .squid */
51
52 #define SQ_SYS SQUIDMIB, 1 /* length is 8 */
53 #define LEN_SQ_SYS LEN_SQUIDMIB+1
54 #define SQ_CONF SQUIDMIB, 2
55 #define LEN_SQ_CONF LEN_SQUIDMIB+1
56 #define SQ_PRF SQUIDMIB, 3
57 #define LEN_SQ_PRF LEN_SQUIDMIB+1
58 #define SQ_NET SQUIDMIB, 4
59 #define LEN_SQ_NET LEN_SQUIDMIB+1
60 #define SQ_MESH SQUIDMIB, 5
61 #define LEN_SQ_MESH LEN_SQUIDMIB+1
62 #define SQ_ACC SQUIDMIB, 6
63 #define LEN_SQ_ACC LEN_SQUIDMIB+1
64
65 enum { /* basic system mib info group */
66 SYSMIB_START,
67 SYS_DESCR,
68 SYS_OBJECT_ID,
69 SYS_UPTIME,
70 SYS_CONTACT,
71 SYS_NAME,
72 SYS_LOCATION,
73 SYS_SERVICES,
74 SYSMIB_END
75 };
76
77 /* cacheSystem group */
78
79 enum {
80 SYS_START,
81 SYSVMSIZ,
82 SYSSTOR,
83 SYSCONNTBL,
84 SYSFDTBL,
85 SYS_END
86 };
87
88 /* cacheConfig group */
89
90 enum {
91 CONF_START,
92 CONF_ADMIN,
93 CONF_VERSION,
94 CONF_VERSION_ID,
95 CONF_UPTIME,
96 CONF_LOG_FAC,
97 CONF_STORAGE,
98 CONF_END
99 };
100
101 enum {
102 CONF_ST_START,
103 CONF_ST_MMAXSZ,
104 CONF_ST_MHIWM,
105 CONF_ST_MLOWM,
106 CONF_ST_SWMAXSZ,
107 CONF_ST_SWHIWM,
108 CONF_ST_SWLOWM,
109 CONF_ST_END
110 };
111
112 /* cacheMesh group */
113
114 enum {
115 MESH_START,
116 MESH_PTBL,
117 MESH_CTBL,
118 MESH_END
119 };
120
121 enum { /* cachePeerTable */
122 MESH_PTBL_START,
123 MESH_PTBL_NAME,
124 MESH_PTBL_IP,
125 MESH_PTBL_HTTP,
126 MESH_PTBL_ICP,
127 MESH_PTBL_TYPE,
128 MESH_PTBL_STATE,
129 MESH_PTBL_SENT,
130 MESH_PTBL_PACKED,
131 MESH_PTBL_FETCHES,
132 MESH_PTBL_RTT,
133 MESH_PTBL_IGN,
134 MESH_PTBL_KEEPAL_S,
135 MESH_PTBL_KEEPAL_R,
136 MESH_PTBL_END
137 };
138
139 enum { /* cacheClientTable */
140 MESH_CTBL_START,
141 MESH_CTBL_ADDR,
142 MESH_CTBL_HTREQ,
143 MESH_CTBL_HTBYTES,
144 MESH_CTBL_HTHITS,
145 MESH_CTBL_HTHITBYTES,
146 MESH_CTBL_ICPREQ,
147 MESH_CTBL_ICPBYTES,
148 MESH_CTBL_ICPHITS,
149 MESH_CTBL_ICPHITBYTES,
150 MESH_CTBL_END
151 };
152
153 /* cacheNetwork group */
154
155 enum {
156 NETDB_START,
157 NETDB_NET,
158 NETDB_PING_S,
159 NETDB_PING_R,
160 NETDB_HOPS,
161 NETDB_RTT,
162 NETDB_PINGTIME,
163 NETDB_LASTUSE,
164 NETDB_END
165 };
166
167 enum {
168 NET_IPC_START,
169 NET_IPC_ID,
170 NET_IPC_NAME,
171 NET_IPC_IP,
172 NET_IPC_STATE,
173 NET_IPC_END
174 };
175
176 enum {
177 NET_DNS_START,
178 NET_DNS_IPCACHE,
179 NET_DNS_FQDNCACHE,
180 NET_DNS_END
181 };
182
183
184 enum {
185 NET_FQDN_START,
186 NET_FQDN_ID,
187 NET_FQDN_NAME,
188 NET_FQDN_IP,
189 NET_FQDN_LASTREF,
190 NET_FQDN_EXPIRES,
191 NET_FQDN_STATE,
192 NET_FQDN_END
193 };
194
195 enum {
196 NET_START,
197 NET_NETDBTBL,
198 NET_DNS,
199 NET_NETSTAT,
200 NET_END
201 };
202
203 enum {
204 NETSTAT_START,
205 NETSTAT_TCPCONNS,
206 NETSTAT_UDPCONNS,
207 NETSTAT_INTHRPUT,
208 NETSTAT_OUTHRPUT
209 };
210
211 enum {
212 PERF_START,
213 PERF_SYS,
214 PERF_PROTO,
215 PERF_PEER,
216 PERF_END
217 };
218
219 enum {
220 PERF_SYS_START,
221 PERF_SYS_PF,
222 PERF_SYS_NUMR,
223 PERF_SYS_DEFR,
224 PERF_SYS_MEMUSAGE,
225 PERF_SYS_CPUUSAGE,
226 PERF_SYS_MAXRESSZ,
227 PERF_SYS_NUMOBJCNT,
228 PERF_SYS_CURLRUEXP,
229 PERF_SYS_CURUNLREQ,
230 PERF_SYS_CURUNUSED_FD,
231 PERF_SYS_CURRESERVED_FD,
232 PERF_SYS_END
233 };
234
235 enum {
236 PERF_PROTOSTAT_START,
237 PERF_PROTOSTAT_AGGR,
238 PERF_PROTOSTAT_MEDIAN,
239 PERF_PROTOSTAT_END
240 };
241
242 enum {
243 PERF_PROTOSTAT_AGGR_START,
244 PERF_PROTOSTAT_AGGR_HTTP_REQ,
245 PERF_PROTOSTAT_AGGR_HTTP_HITS,
246 PERF_PROTOSTAT_AGGR_HTTP_ERRORS,
247 PERF_PROTOSTAT_AGGR_HTTP_KBYTES_IN,
248 PERF_PROTOSTAT_AGGR_HTTP_KBYTES_OUT,
249 PERF_PROTOSTAT_AGGR_ICP_S,
250 PERF_PROTOSTAT_AGGR_ICP_R,
251 PERF_PROTOSTAT_AGGR_ICP_SKB,
252 PERF_PROTOSTAT_AGGR_ICP_RKB,
253 PERF_PROTOSTAT_AGGR_REQ,
254 PERF_PROTOSTAT_AGGR_ERRORS,
255 PERF_PROTOSTAT_AGGR_KBYTES_IN,
256 PERF_PROTOSTAT_AGGR_KBYTES_OUT,
257 PERF_PROTOSTAT_AGGR_CURSWAP,
258 PERF_PROTOSTAT_AGGR_END
259 };
260
261 enum {
262 PERF_MEDIAN_START,
263 PERF_MEDIAN_TIME,
264 PERF_MEDIAN_HTTP_ALL,
265 PERF_MEDIAN_HTTP_MISS,
266 PERF_MEDIAN_HTTP_NM,
267 PERF_MEDIAN_HTTP_HIT,
268 PERF_MEDIAN_ICP_QUERY,
269 PERF_MEDIAN_ICP_REPLY,
270 PERF_MEDIAN_DNS,
271 PERF_MEDIAN_END
272 };
273
274 enum {
275 SYS_FD_START,
276 SYS_FD_NUMBER,
277 SYS_FD_NREAD,
278 SYS_FD_NWRITE,
279 SYS_FD_NAME,
280 SYS_FD_END
281 };
282
283 enum {
284 SYS_CONN_START,
285 SYS_CONN_FDNUM,
286 SYS_CONN_READ,
287 SYS_CONN_WRITE,
288 SYS_CONN_ADDR,
289 SYS_CONN_NAME,
290 SYS_CONN_PORT,
291 SYS_CONN_END
292 };
293
294 /* First, we have a huge array of MIBs this agent knows about */
295
296 struct MIBListEntry {
297 oid Name[9]; /* Change as appropriate */
298 snint NameLen;
299 oid_GetFn *GetFn;
300 oid_GetNextFn *GetNextFn;
301 };
302
303 variable_list *snmp_basicFn(variable_list *, snint *);
304 variable_list *snmp_meshPtblFn(variable_list *, snint *);
305 variable_list *snmp_meshCtblFn(variable_list *, snint *);
306 variable_list *snmp_confFn(variable_list *, snint *);
307 variable_list *snmp_sysFn(variable_list *, snint *);
308 variable_list *snmp_prfSysFn(variable_list *, snint *);
309 variable_list *snmp_prfProtoFn(variable_list *, snint *);
310 variable_list *snmp_prfPeerFn(variable_list *, snint *);
311 variable_list *snmp_netdbFn(variable_list *, snint *);
312 variable_list *snmp_dnsFn(variable_list *, snint *);
313 variable_list *snmp_ipcacheFn(variable_list *, snint *);
314 variable_list *snmp_fqdncacheFn(variable_list *, snint *);
315
316 extern int snmpInitAgentAuth();
317 extern void snmpAgentParse(void *);
318 extern int snmpDefaultAuth();
319 extern int get_median_svc(int, int);
320 extern void snmpAgentParseDone(int, void *);
321 extern int meshCtblGetRowFn(oid *, oid *);
322 extern int netdbGetRowFn(oid *, oid *);
323 extern int fqdn_getMax();
324 extern int ipcache_getMax();
325 extern struct snmp_pdu *snmpAgentResponse(struct snmp_pdu *PDU);
326 extern void snmpAclCheckStart(void *);
327 extern struct snmp_session *Session;
328 extern oid_ParseFn *genericGetNextFn(oid * Src, snint SrcLen, oid ** Dest, snint * DestLen,
329 oid * MIBRoot, int MIBRootLen, oid_GetRowFn * getRowFn, int tblen, oid * MIBTail,
330 oid_ParseFn * mygetFn, int MIBTailLen, int MIB_ACTION_INDEX);
331
332 extern int oidcmp(oid * A, snint ALen, oid * B, snint BLen);
333 extern int oidncmp(oid * A, snint ALen, oid * B, snint BLen, snint CompLen);
334 extern oid *oiddup(oid * A, snint ALen);
335
336
337 /* group handler definition */
338
339 extern oid_ParseFn *basicGetFn(oid *, snint);
340 extern oid_ParseFn *basicGetNextFn(oid *, snint, oid **, snint *);
341 extern oid_ParseFn *sysGetFn(oid *, snint);
342 extern oid_ParseFn *sysGetNextFn(oid *, snint, oid **, snint *);
343 extern oid_ParseFn *sysFdGetFn(oid *, snint);
344 extern oid_ParseFn *sysFdGetNextFn(oid *, snint, oid **, snint *);
345 extern oid_ParseFn *sysConnGetFn(oid *, snint);
346 extern oid_ParseFn *sysConnGetNextFn(oid *, snint, oid **, snint *);
347 extern oid_ParseFn *confGetFn(oid *, snint);
348 extern oid_ParseFn *confGetNextFn(oid *, snint, oid **, snint *);
349 extern oid_ParseFn *confStGetNextFn(oid *, snint, oid **, snint *);
350 extern oid_ParseFn *prfSysGetFn(oid *, snint);
351 extern oid_ParseFn *prfSysGetFn(oid *, snint);
352 extern oid_ParseFn *prfSysGetNextFn(oid *, snint, oid **, snint *);
353 extern oid_ParseFn *prfProtoGetFn(oid *, snint);
354 extern oid_ParseFn *prfProtoGetNextFn(oid *, snint, oid **, snint *);
355 extern oid_ParseFn *netdbGetFn(oid *, snint);
356 extern oid_ParseFn *netdbGetNextFn(oid *, snint, oid **, snint *);
357 extern oid_ParseFn *dnsGetFn(oid *, snint);
358 extern oid_ParseFn *dnsGetNextFn(oid *, snint, oid **, snint *);
359 extern oid_ParseFn *meshGetFn(oid *, snint);
360 extern oid_ParseFn *meshPtblGetNextFn(oid *, snint, oid **, snint *);
361 extern int meshPtblGetRowFn(oid *, oid *);
362 extern int sysConnGetRowFn(oid *, oid *);
363 extern int meshCtblGetRowFn(oid *, oid *);
364 extern int netdbGetRowFn(oid *, oid *);
365 oid_ParseFn *meshCtblGetNextFn(oid *, snint, oid **, snint *);
366
367 extern int fqdn_getMax();
368 extern int ipcache_getMax();
369 extern int fd_getMax();
370 extern struct in_addr *gen_getMax();
371
372 #endif
373 #endif