snmp_agent.cc
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9/* DEBUG: section 49 SNMP Interface */
10
11#include "squid.h"
12#include "cache_snmp.h"
13#include "CachePeer.h"
14#include "globals.h"
15#include "mem/Meter.h"
16#include "mem/Stats.h"
17#include "mem_node.h"
18#include "neighbors.h"
19#include "snmp_agent.h"
20#include "snmp_core.h"
21#include "SquidConfig.h"
22#include "SquidMath.h"
23#include "stat.h"
24#include "StatCounters.h"
25#include "StatHist.h"
26#include "Store.h"
27#include "tools.h"
28#include "util.h"
29
30/************************************************************************
31
32 SQUID MIB Implementation
33
34 ************************************************************************/
35
36/*
37 * cacheSystem group
38 */
39
42{
43 variable_list *Answer = nullptr;
44 MemBuf tmp;
45 debugs(49, 5, "snmp_sysFn: Processing request:" << snmpDebugOid(Var->name, Var->name_length, tmp));
46 *ErrP = SNMP_ERR_NOERROR;
47
48 switch (Var->name[LEN_SQ_SYS]) {
49
50 case SYSVMSIZ:
51 Answer = snmp_var_new_integer(Var->name, Var->name_length,
54 break;
55
56 case SYSSTOR:
57 Answer = snmp_var_new_integer(Var->name, Var->name_length,
58 Store::Root().currentSize() >> 10,
60 break;
61
62 case SYS_UPTIME:
63 Answer = snmp_var_new_integer(Var->name, Var->name_length,
64 (int)(tvSubDsec(squid_start, current_time) * 100),
66 break;
67
68 default:
69 *ErrP = SNMP_ERR_NOSUCHNAME;
70 break;
71 }
72
73 return Answer;
74}
75
76/*
77 * cacheConfig group
78 */
81{
82 variable_list *Answer = nullptr;
83 const char *cp = nullptr;
84 debugs(49, 5, "snmp_confFn: Processing request with magic " << Var->name[8] << "!");
85 *ErrP = SNMP_ERR_NOERROR;
86
87 switch (Var->name[LEN_SQ_CONF]) {
88
89 case CONF_ADMIN:
90 Answer = snmp_var_new(Var->name, Var->name_length);
91 Answer->type = ASN_OCTET_STR;
92 Answer->val_len = strlen(Config.adminEmail);
93 Answer->val.string = (u_char *) xstrdup(Config.adminEmail);
94 break;
95
96 case CONF_VERSION:
97 Answer = snmp_var_new(Var->name, Var->name_length);
98 Answer->type = ASN_OCTET_STR;
99 Answer->val_len = strlen(APP_SHORTNAME);
100 Answer->val.string = (u_char *) xstrdup(APP_SHORTNAME);
101 break;
102
103 case CONF_VERSION_ID:
104 Answer = snmp_var_new(Var->name, Var->name_length);
105 Answer->type = ASN_OCTET_STR;
106 Answer->val_len = strlen(VERSION);
107 Answer->val.string = (u_char *) xstrdup(VERSION);
108 break;
109
110 case CONF_STORAGE:
111
112 switch (Var->name[LEN_SQ_CONF + 1]) {
113
114 case CONF_ST_MMAXSZ:
115 Answer = snmp_var_new_integer(Var->name, Var->name_length,
116 (snint) (Config.memMaxSize >> 20),
118 break;
119
120 case CONF_ST_SWMAXSZ:
121 Answer = snmp_var_new_integer(Var->name, Var->name_length,
122 (snint) (Store::Root().maxSize() >> 20),
124 break;
125
126 case CONF_ST_SWHIWM:
127 Answer = snmp_var_new_integer(Var->name, Var->name_length,
130 break;
131
132 case CONF_ST_SWLOWM:
133 Answer = snmp_var_new_integer(Var->name, Var->name_length,
136 break;
137
138 default:
139 *ErrP = SNMP_ERR_NOSUCHNAME;
140 break;
141 }
142
143 break;
144
145 case CONF_LOG_FAC:
146 Answer = snmp_var_new(Var->name, Var->name_length);
147
148 if (!(cp = Debug::debugOptions))
149 cp = "None";
150
151 Answer->type = ASN_OCTET_STR;
152
153 Answer->val_len = strlen(cp);
154
155 Answer->val.string = (u_char *) xstrdup(cp);
156
157 break;
158
159 case CONF_UNIQNAME:
160 Answer = snmp_var_new(Var->name, Var->name_length);
161
162 cp = uniqueHostname();
163
164 Answer->type = ASN_OCTET_STR;
165
166 Answer->val_len = strlen(cp);
167
168 Answer->val.string = (u_char *) xstrdup(cp);
169
170 break;
171
172 default:
173 *ErrP = SNMP_ERR_NOSUCHNAME;
174
175 break;
176 }
177
178 return Answer;
179}
180
181/*
182 * cacheMesh group
183 * - cachePeerTable
184 */
187{
188 variable_list *Answer = nullptr;
189
190 Ip::Address laddr;
191 char *cp = nullptr;
192 CachePeer *p = nullptr;
193 int cnt = 0;
194 debugs(49, 5, "snmp_meshPtblFn: peer " << Var->name[LEN_SQ_MESH + 3] << " requested!");
195 *ErrP = SNMP_ERR_NOERROR;
196
197 u_int index = Var->name[LEN_SQ_MESH + 3] ;
198 for (p = Config.peers; p != nullptr; p = p->next, ++cnt) {
199 if (p->index == index) {
200 laddr = p->in_addr ;
201 break;
202 }
203 }
204
205 if (p == nullptr) {
206 *ErrP = SNMP_ERR_NOSUCHNAME;
207 return nullptr;
208 }
209
210 switch (Var->name[LEN_SQ_MESH + 2]) {
211 case MESH_PTBL_INDEX: { // XXX: Should be visible?
212 Answer = snmp_var_new_integer(Var->name, Var->name_length,
213 (snint)p->index, SMI_INTEGER);
214 }
215 break;
216
217 case MESH_PTBL_NAME:
218 cp = p->host;
219 Answer = snmp_var_new(Var->name, Var->name_length);
220 Answer->type = ASN_OCTET_STR;
221 Answer->val_len = strlen(cp);
222 Answer->val.string = (u_char *) xstrdup(cp);
223
224 break;
225
226 case MESH_PTBL_ADDR_TYPE: {
227 int ival;
229 Answer = snmp_var_new_integer(Var->name, Var->name_length,
230 ival, SMI_INTEGER);
231 }
232 break;
233 case MESH_PTBL_ADDR: {
234 Answer = snmp_var_new(Var->name, Var->name_length);
235 // InetAddress doesn't have its own ASN.1 type,
236 // like IpAddr does (SMI_IPADDRESS)
237 // See: rfc4001.txt
238 Answer->type = ASN_OCTET_STR;
239 char host[MAX_IPSTRLEN];
240 laddr.toStr(host,MAX_IPSTRLEN);
241 Answer->val_len = strlen(host);
242 Answer->val.string = (u_char *) xstrdup(host);
243 }
244 break;
245
246 case MESH_PTBL_HTTP:
247 Answer = snmp_var_new_integer(Var->name, Var->name_length,
248 (snint) p->http_port,
250 break;
251
252 case MESH_PTBL_ICP:
253 Answer = snmp_var_new_integer(Var->name, Var->name_length,
254 (snint) p->icp.port,
256 break;
257
258 case MESH_PTBL_TYPE:
259 Answer = snmp_var_new_integer(Var->name, Var->name_length,
260 (snint) p->type,
262 break;
263
264 case MESH_PTBL_STATE:
265 Answer = snmp_var_new_integer(Var->name, Var->name_length,
266 (snint) neighborUp(p),
268 break;
269
270 case MESH_PTBL_SENT:
271 Answer = snmp_var_new_integer(Var->name, Var->name_length,
272 p->stats.pings_sent,
274 break;
275
276 case MESH_PTBL_PACKED:
277 Answer = snmp_var_new_integer(Var->name, Var->name_length,
280 break;
281
283 Answer = snmp_var_new_integer(Var->name, Var->name_length,
284 p->stats.fetches,
286 break;
287
288 case MESH_PTBL_RTT:
289 Answer = snmp_var_new_integer(Var->name, Var->name_length,
290 p->stats.rtt,
292 break;
293
294 case MESH_PTBL_IGN:
295 Answer = snmp_var_new_integer(Var->name, Var->name_length,
298 break;
299
301 Answer = snmp_var_new_integer(Var->name, Var->name_length,
304 break;
305
307 Answer = snmp_var_new_integer(Var->name, Var->name_length,
310 break;
311
312 default:
313 *ErrP = SNMP_ERR_NOSUCHNAME;
314 break;
315 }
316
317 return Answer;
318}
319
322{
323 variable_list *Answer = nullptr;
324
325 static struct rusage rusage;
326 debugs(49, 5, "snmp_prfSysFn: Processing request with magic " << Var->name[LEN_SQ_PRF + 1] << "!");
327 *ErrP = SNMP_ERR_NOERROR;
328
329 switch (Var->name[LEN_SQ_PRF + 1]) {
330
331 case PERF_SYS_PF:
333 Answer = snmp_var_new_integer(Var->name, Var->name_length,
336 break;
337
338 case PERF_SYS_NUMR:
339 Answer = snmp_var_new_integer(Var->name, Var->name_length,
342 break;
343
344 case PERF_SYS_MEMUSAGE: {
347 Answer = snmp_var_new_integer(Var->name, Var->name_length,
348 (snint) stats.meter->alloc.currentLevel() >> 10,
350 }
351 break;
352
353 case PERF_SYS_CPUTIME:
355 Answer = snmp_var_new_integer(Var->name, Var->name_length,
358 break;
359
362 Answer = snmp_var_new_integer(Var->name, Var->name_length,
365 break;
366
369 Answer = snmp_var_new_integer(Var->name, Var->name_length,
372 break;
373
375 /* No global LRU info anymore */
376 Answer = snmp_var_new_integer(Var->name, Var->name_length,
377 0,
379 break;
380
382 Answer = snmp_var_new_integer(Var->name, Var->name_length,
385 break;
386
388 Answer = snmp_var_new_integer(Var->name, Var->name_length,
391 break;
392
394 Answer = snmp_var_new_integer(Var->name, Var->name_length,
397 break;
398
400 Answer = snmp_var_new_integer(Var->name, Var->name_length,
403 break;
404
406 Answer = snmp_var_new_integer(Var->name, Var->name_length,
409 break;
410
412 Answer = snmp_var_new_integer(Var->name, Var->name_length,
415 break;
416
417 default:
418 *ErrP = SNMP_ERR_NOSUCHNAME;
419 break;
420 }
421
422 return Answer;
423}
424
427{
428 variable_list *Answer = nullptr;
429 static StatCounters *f = nullptr;
430 static StatCounters *l = nullptr;
431 double x;
432 int minutes;
433 debugs(49, 5, "snmp_prfProtoFn: Processing request with magic " << Var->name[LEN_SQ_PRF] << "!");
434 *ErrP = SNMP_ERR_NOERROR;
435
436 switch (Var->name[LEN_SQ_PRF + 1]) {
437
438 case PERF_PROTOSTAT_AGGR: /* cacheProtoAggregateStats */
439
440 switch (Var->name[LEN_SQ_PRF + 2]) {
441
443 Answer = snmp_var_new_integer(Var->name, Var->name_length,
446 break;
447
449 Answer = snmp_var_new_integer(Var->name, Var->name_length,
452 break;
453
455 Answer = snmp_var_new_integer(Var->name, Var->name_length,
458 break;
459
461 Answer = snmp_var_new_integer(Var->name, Var->name_length,
464 break;
465
467 Answer = snmp_var_new_integer(Var->name, Var->name_length,
470 break;
471
473 Answer = snmp_var_new_integer(Var->name, Var->name_length,
476 break;
477
479 Answer = snmp_var_new_integer(Var->name, Var->name_length,
482 break;
483
485 Answer = snmp_var_new_integer(Var->name, Var->name_length,
488 break;
489
491 Answer = snmp_var_new_integer(Var->name, Var->name_length,
494 break;
495
497 Answer = snmp_var_new_integer(Var->name, Var->name_length,
500 break;
501
503 Answer = snmp_var_new_integer(Var->name, Var->name_length,
506 break;
507
509 Answer = snmp_var_new_integer(Var->name, Var->name_length,
512 break;
513
515 Answer = snmp_var_new_integer(Var->name, Var->name_length,
518 break;
519
521 Answer = snmp_var_new_integer(Var->name, Var->name_length,
522 (snint) Store::Root().currentSize() >> 10,
524 break;
525
527 Answer = snmp_var_new_integer(Var->name, Var->name_length,
530 break;
531
532 default:
533 *ErrP = SNMP_ERR_NOSUCHNAME;
534 break;
535 }
536
537 return Answer;
538
540
541 if (Var->name_length == LEN_SQ_PRF + 5)
542 minutes = Var->name[LEN_SQ_PRF + 4];
543 else
544 break;
545
546 if ((minutes < 1) || (minutes > 60))
547 break;
548
549 f = snmpStatGet(0);
550
551 l = snmpStatGet(minutes);
552
553 debugs(49, 8, "median: min= " << minutes << ", " << Var->name[LEN_SQ_PRF + 3] << " l= " << l << " , f = " << f);
554 debugs(49, 8, "median: l= " << l << " , f = " << f);
555
556 switch (Var->name[LEN_SQ_PRF + 3]) {
557
558 case PERF_MEDIAN_TIME:
559 x = minutes;
560 break;
561
565 break;
566
570 break;
571
575 break;
576
580 break;
581
584 break;
585
588 break;
589
590 case PERF_MEDIAN_DNS:
592 break;
593
594 case PERF_MEDIAN_RHR:
595 x = statRequestHitRatio(minutes);
596 break;
597
598 case PERF_MEDIAN_BHR:
599 x = statByteHitRatio(minutes);
600 break;
601
605 break;
606
607 default:
608 *ErrP = SNMP_ERR_NOSUCHNAME;
609 return nullptr;
610 }
611
612 return snmp_var_new_integer(Var->name, Var->name_length,
613 (snint) x,
615 }
616
617 *ErrP = SNMP_ERR_NOSUCHNAME;
618 return nullptr;
619}
620
class SquidConfig Config
Definition: SquidConfig.cc:12
StatCounters statCounter
Definition: StatCounters.cc:12
double statHistDeltaMedian(const StatHist &A, const StatHist &B)
Definition: StatHist.cc:91
#define ASN_OCTET_STR
Definition: asn1.h:54
#define ASN_INTEGER
Definition: asn1.h:52
#define LEN_SQ_PRF
Definition: cache_snmp.h:47
@ PERF_MEDIAN_HTTP_MISS
Definition: cache_snmp.h:163
@ PERF_MEDIAN_TIME
Definition: cache_snmp.h:161
@ PERF_MEDIAN_ICP_QUERY
Definition: cache_snmp.h:166
@ PERF_MEDIAN_ICP_REPLY
Definition: cache_snmp.h:167
@ PERF_MEDIAN_RHR
Definition: cache_snmp.h:169
@ PERF_MEDIAN_HTTP_HIT
Definition: cache_snmp.h:165
@ PERF_MEDIAN_BHR
Definition: cache_snmp.h:170
@ PERF_MEDIAN_HTTP_ALL
Definition: cache_snmp.h:162
@ PERF_MEDIAN_HTTP_NH
Definition: cache_snmp.h:171
@ PERF_MEDIAN_HTTP_NM
Definition: cache_snmp.h:164
@ PERF_MEDIAN_DNS
Definition: cache_snmp.h:168
@ MESH_PTBL_INDEX
Definition: cache_snmp.h:236
@ MESH_PTBL_KEEPAL_S
Definition: cache_snmp.h:249
@ MESH_PTBL_IGN
Definition: cache_snmp.h:248
@ MESH_PTBL_ADDR_TYPE
Definition: cache_snmp.h:238
@ MESH_PTBL_RTT
Definition: cache_snmp.h:247
@ MESH_PTBL_PACKED
Definition: cache_snmp.h:245
@ MESH_PTBL_STATE
Definition: cache_snmp.h:243
@ MESH_PTBL_HTTP
Definition: cache_snmp.h:240
@ MESH_PTBL_KEEPAL_R
Definition: cache_snmp.h:250
@ MESH_PTBL_ADDR
Definition: cache_snmp.h:239
@ MESH_PTBL_FETCHES
Definition: cache_snmp.h:246
@ MESH_PTBL_TYPE
Definition: cache_snmp.h:242
@ MESH_PTBL_SENT
Definition: cache_snmp.h:244
@ MESH_PTBL_ICP
Definition: cache_snmp.h:241
@ MESH_PTBL_NAME
Definition: cache_snmp.h:237
@ SYSSTOR
Definition: cache_snmp.h:59
@ SYS_UPTIME
Definition: cache_snmp.h:60
@ SYSVMSIZ
Definition: cache_snmp.h:58
#define LEN_SQ_MESH
Definition: cache_snmp.h:51
int64_t snint
Definition: cache_snmp.h:14
@ PERF_PROTOSTAT_AGGR
Definition: cache_snmp.h:132
@ PERF_PROTOSTAT_MEDIAN
Definition: cache_snmp.h:133
@ PERF_PROTOSTAT_AGGR_REQ
Definition: cache_snmp.h:149
@ PERF_PROTOSTAT_AGGR_ICP_SKB
Definition: cache_snmp.h:147
@ PERF_PROTOSTAT_AGGR_ICP_S
Definition: cache_snmp.h:145
@ PERF_PROTOSTAT_AGGR_HTTP_KBYTES_IN
Definition: cache_snmp.h:143
@ PERF_PROTOSTAT_AGGR_ICP_RKB
Definition: cache_snmp.h:148
@ PERF_PROTOSTAT_AGGR_HTTP_ERRORS
Definition: cache_snmp.h:142
@ PERF_PROTOSTAT_AGGR_KBYTES_OUT
Definition: cache_snmp.h:152
@ PERF_PROTOSTAT_AGGR_ICP_R
Definition: cache_snmp.h:146
@ PERF_PROTOSTAT_AGGR_KBYTES_IN
Definition: cache_snmp.h:151
@ PERF_PROTOSTAT_AGGR_CLIENTS
Definition: cache_snmp.h:154
@ PERF_PROTOSTAT_AGGR_CURSWAP
Definition: cache_snmp.h:153
@ PERF_PROTOSTAT_AGGR_HTTP_HITS
Definition: cache_snmp.h:141
@ PERF_PROTOSTAT_AGGR_ERRORS
Definition: cache_snmp.h:150
@ PERF_PROTOSTAT_AGGR_HTTP_KBYTES_OUT
Definition: cache_snmp.h:144
@ PERF_PROTOSTAT_AGGR_HTTP_REQ
Definition: cache_snmp.h:140
#define LEN_SQ_CONF
Definition: cache_snmp.h:45
@ CONF_ST_MMAXSZ
Definition: cache_snmp.h:89
@ CONF_ST_SWLOWM
Definition: cache_snmp.h:92
@ CONF_ST_SWHIWM
Definition: cache_snmp.h:91
@ CONF_ST_SWMAXSZ
Definition: cache_snmp.h:90
@ PERF_SYS_CURUNLREQ
Definition: cache_snmp.h:121
@ PERF_SYS_CURUSED_FD
Definition: cache_snmp.h:124
@ PERF_SYS_CPUUSAGE
Definition: cache_snmp.h:117
@ PERF_SYS_NUMOBJCNT
Definition: cache_snmp.h:119
@ PERF_SYS_CPUTIME
Definition: cache_snmp.h:116
@ PERF_SYS_MAXRESSZ
Definition: cache_snmp.h:118
@ PERF_SYS_CURLRUEXP
Definition: cache_snmp.h:120
@ PERF_SYS_NUMR
Definition: cache_snmp.h:114
@ PERF_SYS_CURRESERVED_FD
Definition: cache_snmp.h:123
@ PERF_SYS_CURMAX_FD
Definition: cache_snmp.h:125
@ PERF_SYS_PF
Definition: cache_snmp.h:113
@ PERF_SYS_MEMUSAGE
Definition: cache_snmp.h:115
@ PERF_SYS_CURUNUSED_FD
Definition: cache_snmp.h:122
@ CONF_VERSION_ID
Definition: cache_snmp.h:74
@ CONF_LOG_FAC
Definition: cache_snmp.h:75
@ CONF_VERSION
Definition: cache_snmp.h:73
@ CONF_STORAGE
Definition: cache_snmp.h:76
@ CONF_ADMIN
Definition: cache_snmp.h:72
@ CONF_UNIQNAME
Definition: cache_snmp.h:77
#define LEN_SQ_SYS
Definition: cache_snmp.h:43
size_t kb
Definition: ByteCounter.h:25
int n_keepalives_recv
Definition: CachePeer.h:79
int n_keepalives_sent
Definition: CachePeer.h:78
peer_t type
Definition: CachePeer.h:68
unsigned short http_port
Definition: CachePeer.h:104
int pings_sent
Definition: CachePeer.h:73
char * host
Definition: CachePeer.h:66
CachePeer * next
Definition: CachePeer.h:184
int rtt
Definition: CachePeer.h:76
Ip::Address in_addr
Definition: CachePeer.h:70
u_int index
Definition: CachePeer.h:51
struct CachePeer::icp_ icp
int pings_acked
Definition: CachePeer.h:74
struct CachePeer::@27 stats
int ignored_replies
Definition: CachePeer.h:77
int fetches
Definition: CachePeer.h:75
static char * debugOptions
Definition: Stream.h:80
struct IoStats::@75 Http
int reads
Definition: IoStats.h:19
char * toStr(char *buf, const unsigned int blen, int force=AF_UNSPEC) const
Definition: Address.cc:792
bool isIPv4() const
Definition: Address.cc:158
Definition: MemBuf.h:24
size_t memMaxSize
Definition: SquidConfig.h:89
int lowWaterMark
Definition: SquidConfig.h:84
CachePeer * peers
Definition: SquidConfig.h:245
char * adminEmail
Definition: SquidConfig.h:191
int highWaterMark
Definition: SquidConfig.h:83
struct SquidConfig::@91 Swap
ByteCounter kbytes_sent
Definition: StatCounters.h:76
StatHist replySvcTime
Definition: StatCounters.h:83
StatHist querySvcTime
Definition: StatCounters.h:82
struct StatCounters::@127 unlink
StatHist nearHitSvcTime
Definition: StatCounters.h:50
struct StatCounters::@124 server
StatHist svcTime
Definition: StatCounters.h:98
ByteCounter kbytes_recv
Definition: StatCounters.h:79
StatHist missSvcTime
Definition: StatCounters.h:48
StatHist hitSvcTime
Definition: StatCounters.h:51
struct StatCounters::@125 icp
StatHist allSvcTime
Definition: StatCounters.h:52
struct StatCounters::@123 client_http
struct StatCounters::@124::@134 all
ByteCounter kbytes_out
Definition: StatCounters.h:46
StatHist nearMissSvcTime
Definition: StatCounters.h:49
ByteCounter kbytes_in
Definition: StatCounters.h:45
struct StatCounters::@128 dns
static size_t inUseCount()
Definition: store.cc:197
uint64_t maxSize() const override
Definition: Controller.cc:159
uint64_t currentSize() const override
current size
Definition: Controller.cc:173
static size_t StoreMemSize()
Definition: mem_node.cc:61
#define debugs(SECTION, LEVEL, CONTENT)
Definition: Stream.h:194
struct timeval squid_start
int Squid_MaxFD
int Number_FD
int RESERVED_FD
int Biggest_FD
IoStats IOStats
#define MAX_IPSTRLEN
Length of buffer that needs to be allocated to old a null-terminated IP-string.
Definition: forward.h:25
double doublePercent(const double, const double)
Definition: SquidMath.cc:25
size_t GlobalStats(PoolStats &)
Definition: Stats.cc:15
class Ping::pingStats_ stats
Controller & Root()
safely access controller singleton
Definition: Controller.cc:931
#define VERSION
#define xstrdup
int neighborUp(const CachePeer *p)
Definition: neighbors.cc:1142
variable_list * snmp_prfSysFn(variable_list *Var, snint *ErrP)
Definition: snmp_agent.cc:321
variable_list * snmp_sysFn(variable_list *Var, snint *ErrP)
Definition: snmp_agent.cc:41
variable_list * snmp_prfProtoFn(variable_list *Var, snint *ErrP)
Definition: snmp_agent.cc:426
variable_list * snmp_confFn(variable_list *Var, snint *ErrP)
Definition: snmp_agent.cc:80
variable_list * snmp_meshPtblFn(variable_list *Var, snint *ErrP)
Definition: snmp_agent.cc:186
const char * snmpDebugOid(oid *Name, snint Len, MemBuf &outbuf)
Definition: snmp_core.cc:1054
#define SNMP_ERR_NOERROR
Definition: snmp_error.h:42
#define SNMP_ERR_NOSUCHNAME
Definition: snmp_error.h:44
#define SMI_GAUGE32
Definition: snmp_vars.h:77
#define INETADDRESSTYPE_IPV4
Definition: snmp_vars.h:93
#define SMI_COUNTER32
Definition: snmp_vars.h:76
struct variable_list * snmp_var_new(oid *, int)
Definition: snmp_vars.c:109
#define SMI_TIMETICKS
Definition: snmp_vars.h:79
#define SMI_INTEGER
Definition: snmp_vars.h:71
#define INETADDRESSTYPE_IPV6
Definition: snmp_vars.h:94
struct variable_list * snmp_var_new_integer(oid *, int, int, unsigned char)
Definition: snmp_vars.c:151
StatCounters * snmpStatGet(int minutes)
Definition: stat.cc:1681
double statRequestHitRatio(int minutes)
Definition: stat.cc:1702
double statByteHitRatio(int minutes)
Definition: stat.cc:1732
unsigned short port
Definition: CachePeer.h:93
int name_length
Definition: snmp_vars.h:47
oid * name
Definition: snmp_vars.h:46
u_char type
Definition: snmp_vars.h:48
u_char * string
Definition: snmp_vars.h:51
union variable_list::@19 val
double tvSubDsec(struct timeval t1, struct timeval t2)
Definition: gadgets.cc:44
struct timeval current_time
the current UNIX time in timeval {seconds, microseconds} format
Definition: gadgets.cc:17
void squid_getrusage(struct rusage *r)
Definition: tools.cc:180
double rusage_cputime(struct rusage *r)
Definition: tools.cc:238
int rusage_maxrss(struct rusage *r)
Definition: tools.cc:253
int rusage_pagefaults(struct rusage *r)
Definition: tools.cc:274
const char * uniqueHostname(void)
Definition: tools.cc:547
#define APP_SHORTNAME
Definition: version.h:22

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors