Squid Web Cache master
Loading...
Searching...
No Matches
snmp_agent.cc
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2025 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 "CachePeers.h"
15#include "globals.h"
16#include "mem/Meter.h"
17#include "mem/Stats.h"
18#include "mem_node.h"
19#include "neighbors.h"
20#include "snmp_agent.h"
21#include "snmp_core.h"
22#include "SquidConfig.h"
23#include "SquidMath.h"
24#include "stat.h"
25#include "StatCounters.h"
26#include "StatHist.h"
27#include "Store.h"
28#include "store/Controller.h"
29#include "StoreStats.h"
30#include "tools.h"
31#include "util.h"
32
33/************************************************************************
34
35 SQUID MIB Implementation
36
37 ************************************************************************/
38
39/*
40 * cacheSystem group
41 */
42
45{
46 variable_list *Answer = nullptr;
47 MemBuf tmp;
48 debugs(49, 5, "snmp_sysFn: Processing request:" << snmpDebugOid(Var->name, Var->name_length, tmp));
49 *ErrP = SNMP_ERR_NOERROR;
50
51 switch (Var->name[LEN_SQ_SYS]) {
52
53 case SYSVMSIZ:
54 Answer = snmp_var_new_integer(Var->name, Var->name_length,
57 break;
58
59 case SYSSTOR:
60 Answer = snmp_var_new_integer(Var->name, Var->name_length,
61 Store::Root().currentSize() >> 10,
63 break;
64
65 case SYS_UPTIME:
66 Answer = snmp_var_new_integer(Var->name, Var->name_length,
67 (int)(tvSubDsec(squid_start, current_time) * 100),
69 break;
70
71 default:
72 *ErrP = SNMP_ERR_NOSUCHNAME;
73 break;
74 }
75
76 return Answer;
77}
78
79/*
80 * cacheConfig group
81 */
84{
85 variable_list *Answer = nullptr;
86 const char *cp = nullptr;
87 debugs(49, 5, "snmp_confFn: Processing request with magic " << Var->name[8] << "!");
88 *ErrP = SNMP_ERR_NOERROR;
89
90 switch (Var->name[LEN_SQ_CONF]) {
91
92 case CONF_ADMIN:
93 Answer = snmp_var_new(Var->name, Var->name_length);
94 Answer->type = ASN_OCTET_STR;
95 Answer->val_len = strlen(Config.adminEmail);
96 Answer->val.string = (u_char *) xstrdup(Config.adminEmail);
97 break;
98
99 case CONF_VERSION:
100 Answer = snmp_var_new(Var->name, Var->name_length);
101 Answer->type = ASN_OCTET_STR;
102 Answer->val_len = strlen(APP_SHORTNAME);
103 Answer->val.string = (u_char *) xstrdup(APP_SHORTNAME);
104 break;
105
106 case CONF_VERSION_ID:
107 Answer = snmp_var_new(Var->name, Var->name_length);
108 Answer->type = ASN_OCTET_STR;
109 Answer->val_len = strlen(VERSION);
110 Answer->val.string = (u_char *) xstrdup(VERSION);
111 break;
112
113 case CONF_STORAGE:
114
115 switch (Var->name[LEN_SQ_CONF + 1]) {
116
117 case CONF_ST_MMAXSZ:
118 Answer = snmp_var_new_integer(Var->name, Var->name_length,
119 (snint) (Config.memMaxSize >> 20),
121 break;
122
123 case CONF_ST_SWMAXSZ:
124 Answer = snmp_var_new_integer(Var->name, Var->name_length,
125 (snint) (Store::Root().maxSize() >> 20),
127 break;
128
129 case CONF_ST_SWHIWM:
130 Answer = snmp_var_new_integer(Var->name, Var->name_length,
133 break;
134
135 case CONF_ST_SWLOWM:
136 Answer = snmp_var_new_integer(Var->name, Var->name_length,
139 break;
140
141 default:
142 *ErrP = SNMP_ERR_NOSUCHNAME;
143 break;
144 }
145
146 break;
147
148 case CONF_LOG_FAC:
149 Answer = snmp_var_new(Var->name, Var->name_length);
150
151 if (!(cp = Debug::debugOptions))
152 cp = "None";
153
154 Answer->type = ASN_OCTET_STR;
155
156 Answer->val_len = strlen(cp);
157
158 Answer->val.string = (u_char *) xstrdup(cp);
159
160 break;
161
162 case CONF_UNIQNAME:
163 Answer = snmp_var_new(Var->name, Var->name_length);
164
165 cp = uniqueHostname();
166
167 Answer->type = ASN_OCTET_STR;
168
169 Answer->val_len = strlen(cp);
170
171 Answer->val.string = (u_char *) xstrdup(cp);
172
173 break;
174
175 default:
176 *ErrP = SNMP_ERR_NOSUCHNAME;
177
178 break;
179 }
180
181 return Answer;
182}
183
184/*
185 * cacheMesh group
186 * - cachePeerTable
187 */
190{
191 variable_list *Answer = nullptr;
192
193 Ip::Address laddr;
194 char *cp = nullptr;
195 CachePeer *p = nullptr;
196 debugs(49, 5, "snmp_meshPtblFn: peer " << Var->name[LEN_SQ_MESH + 3] << " requested!");
197 *ErrP = SNMP_ERR_NOERROR;
198
199 u_int index = Var->name[LEN_SQ_MESH + 3] ;
200 for (const auto &peer: CurrentCachePeers()) {
201 if (peer->index == index) {
202 laddr = peer->in_addr ;
203 p = peer.get();
204 break;
205 }
206 }
207
208 if (p == nullptr) {
209 *ErrP = SNMP_ERR_NOSUCHNAME;
210 return nullptr;
211 }
212
213 switch (Var->name[LEN_SQ_MESH + 2]) {
214 case MESH_PTBL_INDEX: { // XXX: Should be visible?
215 Answer = snmp_var_new_integer(Var->name, Var->name_length,
216 (snint)p->index, SMI_INTEGER);
217 }
218 break;
219
220 case MESH_PTBL_NAME:
221 cp = p->host;
222 Answer = snmp_var_new(Var->name, Var->name_length);
223 Answer->type = ASN_OCTET_STR;
224 Answer->val_len = strlen(cp);
225 Answer->val.string = (u_char *) xstrdup(cp);
226
227 break;
228
229 case MESH_PTBL_ADDR_TYPE: {
230 int ival;
232 Answer = snmp_var_new_integer(Var->name, Var->name_length,
233 ival, SMI_INTEGER);
234 }
235 break;
236 case MESH_PTBL_ADDR: {
237 Answer = snmp_var_new(Var->name, Var->name_length);
238 // InetAddress doesn't have its own ASN.1 type,
239 // like IpAddr does (SMI_IPADDRESS)
240 // See: rfc4001.txt
241 Answer->type = ASN_OCTET_STR;
242 char host[MAX_IPSTRLEN];
243 laddr.toStr(host,MAX_IPSTRLEN);
244 Answer->val_len = strlen(host);
245 Answer->val.string = (u_char *) xstrdup(host);
246 }
247 break;
248
249 case MESH_PTBL_HTTP:
250 Answer = snmp_var_new_integer(Var->name, Var->name_length,
251 (snint) p->http_port,
253 break;
254
255 case MESH_PTBL_ICP:
256 Answer = snmp_var_new_integer(Var->name, Var->name_length,
257 (snint) p->icp.port,
259 break;
260
261 case MESH_PTBL_TYPE:
262 Answer = snmp_var_new_integer(Var->name, Var->name_length,
263 (snint) p->type,
265 break;
266
267 case MESH_PTBL_STATE:
268 Answer = snmp_var_new_integer(Var->name, Var->name_length,
269 (snint) neighborUp(p),
271 break;
272
273 case MESH_PTBL_SENT:
274 Answer = snmp_var_new_integer(Var->name, Var->name_length,
275 p->stats.pings_sent,
277 break;
278
279 case MESH_PTBL_PACKED:
280 Answer = snmp_var_new_integer(Var->name, Var->name_length,
283 break;
284
286 Answer = snmp_var_new_integer(Var->name, Var->name_length,
287 p->stats.fetches,
289 break;
290
291 case MESH_PTBL_RTT:
292 Answer = snmp_var_new_integer(Var->name, Var->name_length,
293 p->stats.rtt,
295 break;
296
297 case MESH_PTBL_IGN:
298 Answer = snmp_var_new_integer(Var->name, Var->name_length,
301 break;
302
304 Answer = snmp_var_new_integer(Var->name, Var->name_length,
307 break;
308
310 Answer = snmp_var_new_integer(Var->name, Var->name_length,
313 break;
314
315 default:
316 *ErrP = SNMP_ERR_NOSUCHNAME;
317 break;
318 }
319
320 return Answer;
321}
322
325{
326 variable_list *Answer = nullptr;
327
328 static struct rusage rusage;
329 debugs(49, 5, "snmp_prfSysFn: Processing request with magic " << Var->name[LEN_SQ_PRF + 1] << "!");
330 *ErrP = SNMP_ERR_NOERROR;
331
332 switch (Var->name[LEN_SQ_PRF + 1]) {
333
334 case PERF_SYS_PF:
336 Answer = snmp_var_new_integer(Var->name, Var->name_length,
339 break;
340
341 case PERF_SYS_NUMR:
342 Answer = snmp_var_new_integer(Var->name, Var->name_length,
345 break;
346
347 case PERF_SYS_MEMUSAGE: {
348 Mem::PoolStats stats;
349 Mem::GlobalStats(stats);
350 Answer = snmp_var_new_integer(Var->name, Var->name_length,
351 (snint) stats.meter->alloc.currentLevel() >> 10,
353 }
354 break;
355
356 case PERF_SYS_CPUTIME:
358 Answer = snmp_var_new_integer(Var->name, Var->name_length,
361 break;
362
365 Answer = snmp_var_new_integer(Var->name, Var->name_length,
368 break;
369
372 Answer = snmp_var_new_integer(Var->name, Var->name_length,
375 break;
376
378 /* No global LRU info anymore */
379 Answer = snmp_var_new_integer(Var->name, Var->name_length,
380 0,
382 break;
383
385 Answer = snmp_var_new_integer(Var->name, Var->name_length,
388 break;
389
391 Answer = snmp_var_new_integer(Var->name, Var->name_length,
394 break;
395
397 Answer = snmp_var_new_integer(Var->name, Var->name_length,
400 break;
401
403 Answer = snmp_var_new_integer(Var->name, Var->name_length,
406 break;
407
409 Answer = snmp_var_new_integer(Var->name, Var->name_length,
412 break;
413
414 case PERF_SYS_NUMOBJCNT: {
415 StoreInfoStats stats;
416 Store::Root().getStats(stats);
417 Answer = snmp_var_new_integer(Var->name, Var->name_length,
418 (snint) (stats.mem.count + stats.swap.count),
420 break;
421 }
422
423 default:
424 *ErrP = SNMP_ERR_NOSUCHNAME;
425 break;
426 }
427
428 return Answer;
429}
430
433{
434 variable_list *Answer = nullptr;
435 static StatCounters *f = nullptr;
436 static StatCounters *l = nullptr;
437 double x;
438 int minutes;
439 debugs(49, 5, "snmp_prfProtoFn: Processing request with magic " << Var->name[LEN_SQ_PRF] << "!");
440 *ErrP = SNMP_ERR_NOERROR;
441
442 switch (Var->name[LEN_SQ_PRF + 1]) {
443
444 case PERF_PROTOSTAT_AGGR: /* cacheProtoAggregateStats */
445
446 switch (Var->name[LEN_SQ_PRF + 2]) {
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,
524 break;
525
527 Answer = snmp_var_new_integer(Var->name, Var->name_length,
528 (snint) Store::Root().currentSize() >> 10,
530 break;
531
533 Answer = snmp_var_new_integer(Var->name, Var->name_length,
536 break;
537
538 default:
539 *ErrP = SNMP_ERR_NOSUCHNAME;
540 break;
541 }
542
543 return Answer;
544
546
547 if (Var->name_length == LEN_SQ_PRF + 5)
548 minutes = Var->name[LEN_SQ_PRF + 4];
549 else
550 break;
551
552 if ((minutes < 1) || (minutes > 60))
553 break;
554
555 f = snmpStatGet(0);
556
557 l = snmpStatGet(minutes);
558
559 debugs(49, 8, "median: min= " << minutes << ", " << Var->name[LEN_SQ_PRF + 3] << " l= " << l << " , f = " << f);
560 debugs(49, 8, "median: l= " << l << " , f = " << f);
561
562 switch (Var->name[LEN_SQ_PRF + 3]) {
563
564 case PERF_MEDIAN_TIME:
565 x = minutes;
566 break;
567
571 break;
572
576 break;
577
581 break;
582
586 break;
587
590 break;
591
594 break;
595
596 case PERF_MEDIAN_DNS:
598 break;
599
600 case PERF_MEDIAN_RHR:
601 x = statRequestHitRatio(minutes);
602 break;
603
604 case PERF_MEDIAN_BHR:
605 x = statByteHitRatio(minutes);
606 break;
607
611 break;
612
613 default:
614 *ErrP = SNMP_ERR_NOSUCHNAME;
615 return nullptr;
616 }
617
618 return snmp_var_new_integer(Var->name, Var->name_length,
619 (snint) x,
621 }
622
623 *ErrP = SNMP_ERR_NOSUCHNAME;
624 return nullptr;
625}
626
const CachePeers & CurrentCachePeers()
Definition CachePeers.cc:43
class SquidConfig Config
StatCounters statCounter
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 VERSION
Definition autoconf.h:1683
#define LEN_SQ_PRF
Definition cache_snmp.h:47
@ 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
@ 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
#define LEN_SQ_MESH
Definition cache_snmp.h:51
int64_t snint
Definition cache_snmp.h:14
@ 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
@ PERF_PROTOSTAT_AGGR
Definition cache_snmp.h:132
@ PERF_PROTOSTAT_MEDIAN
Definition cache_snmp.h:133
#define LEN_SQ_CONF
Definition cache_snmp.h:45
@ 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
@ 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_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
@ SYSSTOR
Definition cache_snmp.h:59
@ SYS_UPTIME
Definition cache_snmp.h:60
@ SYSVMSIZ
Definition cache_snmp.h:58
#define LEN_SQ_SYS
Definition cache_snmp.h:43
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
struct CachePeer::@18 stats
u_int index
n-th cache_peer directive, starting with 1
Definition CachePeer.h:53
struct CachePeer::icp_ icp
int pings_acked
Definition CachePeer.h:74
int ignored_replies
Definition CachePeer.h:77
int fetches
Definition CachePeer.h:75
static char * debugOptions
Definition Stream.h:80
struct IoStats::@59 Http
int reads
Definition IoStats.h:19
char * toStr(char *buf, const unsigned int blen, int force=AF_UNSPEC) const
Definition Address.cc:804
bool isIPv4() const
Definition Address.cc:178
ssize_t currentLevel() const
Definition Meter.h:26
Meter alloc
Definition Meter.h:89
PoolMeter * meter
Definition Stats.h:22
struct SquidConfig::@75 Swap
size_t memMaxSize
Definition SquidConfig.h:91
char * adminEmail
int highWaterMark
Definition SquidConfig.h:85
ByteCounter kbytes_sent
StatHist replySvcTime
StatHist querySvcTime
StatHist nearHitSvcTime
StatHist svcTime
ByteCounter kbytes_recv
StatHist missSvcTime
StatHist hitSvcTime
StatHist allSvcTime
ByteCounter kbytes_out
struct StatCounters::@109 dns
struct StatCounters::@105 server
StatHist nearMissSvcTime
ByteCounter kbytes_in
struct StatCounters::@108 unlink
struct StatCounters::@106 icp
struct StatCounters::@104 client_http
struct StatCounters::@105::@115 all
double count
number of cached objects
Definition StoreStats.h:21
High-level store statistics used by mgr:info action. Used inside PODs!
Definition StoreStats.h:14
Swap swap
cache_mem stats
Definition StoreStats.h:47
Mem mem
all cache_dirs stats
Definition StoreStats.h:48
uint64_t maxSize() const override
void getStats(StoreInfoStats &stats) const override
collect statistics
uint64_t currentSize() const override
current size
static size_t StoreMemSize()
Definition mem_node.cc:64
#define debugs(SECTION, LEVEL, CONTENT)
Definition Stream.h:192
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
Controller & Root()
safely access controller singleton
#define xstrdup
int neighborUp(const CachePeer *p)
variable_list * snmp_prfSysFn(variable_list *Var, snint *ErrP)
variable_list * snmp_sysFn(variable_list *Var, snint *ErrP)
Definition snmp_agent.cc:44
variable_list * snmp_prfProtoFn(variable_list *Var, snint *ErrP)
variable_list * snmp_confFn(variable_list *Var, snint *ErrP)
Definition snmp_agent.cc:83
variable_list * snmp_meshPtblFn(variable_list *Var, snint *ErrP)
const char * snmpDebugOid(oid *Name, snint Len, MemBuf &outbuf)
#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:1682
double statRequestHitRatio(int minutes)
Definition stat.cc:1709
double statByteHitRatio(int minutes)
Definition stat.cc:1739
unsigned short port
Definition CachePeer.h:93
union variable_list::@0 val
u_char type
Definition snmp_vars.h:48
u_char * string
Definition snmp_vars.h:51
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:18
void squid_getrusage(struct rusage *r)
Definition tools.cc:181
double rusage_cputime(struct rusage *r)
Definition tools.cc:239
int rusage_maxrss(struct rusage *r)
Definition tools.cc:254
int rusage_pagefaults(struct rusage *r)
Definition tools.cc:275
const char * uniqueHostname(void)
Definition tools.cc:548
#define APP_SHORTNAME
Definition version.h:22