From 451b07c5d22e4267875f9b9382fe47549fcf4398 Mon Sep 17 00:00:00 2001 From: kostas <> Date: Thu, 26 Feb 1998 16:01:10 +0000 Subject: [PATCH] Reorganized cachePerf.cacheProtoStats to cacheProtoAggregateStats and cacheMedianSvcTable, which is a table who's row represents the minutes of history used for medians. Fixed cacheTimeout bug which returned cacheLogLevel Fixed netdb, ipcache and fqdn returning wrong "timeticks" Fixed cacheUptime to return SMI_TIMETICS. Several memory allocation fixes (used dmalloc-3.3 to find them). --- include/cache_snmp.h | 24 ++++++-- snmplib/mib.c | 1 - src/cache_cf.cc | 3 +- src/defines.h | 3 + src/fqdncache.cc | 18 +++--- src/ipcache.cc | 4 +- src/mib.txt | 112 +++++++++++++++++++++++++++++++------- src/net_db.cc | 10 ++-- src/snmp_agent.cc | 127 ++++++++++++++++++++++++++++++------------- src/stat.cc | 10 +++- 10 files changed, 230 insertions(+), 82 deletions(-) diff --git a/include/cache_snmp.h b/include/cache_snmp.h index 82fff92d7f..85e956d65c 100644 --- a/include/cache_snmp.h +++ b/include/cache_snmp.h @@ -204,6 +204,7 @@ enum { enum { PERF_PROTOSTAT_START, PERF_PROTOSTAT_AGGR, + PERF_PROTOSTAT_MEDIAN, PERF_PROTOSTAT_END }; @@ -212,22 +213,33 @@ enum { PERF_PROTOSTAT_AGGR_HTTP_REQ, PERF_PROTOSTAT_AGGR_HTTP_HITS, PERF_PROTOSTAT_AGGR_HTTP_ERRORS, + PERF_PROTOSTAT_AGGR_HTTP_KBYTES_IN, + PERF_PROTOSTAT_AGGR_HTTP_KBYTES_OUT, PERF_PROTOSTAT_AGGR_ICP_S, PERF_PROTOSTAT_AGGR_ICP_R, PERF_PROTOSTAT_AGGR_ICP_SKB, PERF_PROTOSTAT_AGGR_ICP_RKB, + PERF_PROTOSTAT_AGGR_REQ, + PERF_PROTOSTAT_AGGR_ERRORS, PERF_PROTOSTAT_AGGR_KBYTES_IN, PERF_PROTOSTAT_AGGR_KBYTES_OUT, PERF_PROTOSTAT_AGGR_CURSWAP, - PERF_PROTOSTAT_AGGR_HTTP_SVC_5, - PERF_PROTOSTAT_AGGR_HTTP_SVC_60, - PERF_PROTOSTAT_AGGR_ICP_SVC_5, - PERF_PROTOSTAT_AGGR_ICP_SVC_60, - PERF_PROTOSTAT_AGGR_DNS_SVC_5, - PERF_PROTOSTAT_AGGR_DNS_SVC_60, PERF_PROTOSTAT_AGGR_END }; +enum { + PERF_MEDIAN_START, + PERF_MEDIAN_TIME, + PERF_MEDIAN_HTTP_ALL, + PERF_MEDIAN_HTTP_MISS, + PERF_MEDIAN_HTTP_NM, + PERF_MEDIAN_HTTP_HIT, + PERF_MEDIAN_ICP_QUERY, + PERF_MEDIAN_ICP_REPLY, + PERF_MEDIAN_DNS, + PERF_MEDIAN_END +}; + enum { SYS_FD_START, SYS_FD_NUMBER, diff --git a/snmplib/mib.c b/snmplib/mib.c index 5a46723bed..04c0988a32 100644 --- a/snmplib/mib.c +++ b/snmplib/mib.c @@ -531,7 +531,6 @@ set_functions(subtree) void init_mib(char *file) { - snmplib_debug(6, "init_mib: Called.\n"); if (Mib != NULL) return; diff --git a/src/cache_cf.cc b/src/cache_cf.cc index 4abd8b78a3..7678a0ebb5 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1,6 +1,6 @@ /* - * $Id: cache_cf.cc,v 1.252 1998/02/25 19:15:06 kostas Exp $ + * $Id: cache_cf.cc,v 1.253 1998/02/26 09:01:11 kostas Exp $ * * DEBUG: section 3 Configuration File Parsing * AUTHOR: Harvest Derived @@ -384,6 +384,7 @@ parse_snmp_conf(snmpconf ** s) { static char buff[256]; static char *tokens[10], *p; + if (Mib == NULL) { if (Config.Snmp.mibPath) init_mib(Config.Snmp.mibPath); diff --git a/src/defines.h b/src/defines.h index 2518fa7d81..cea8ac8414 100644 --- a/src/defines.h +++ b/src/defines.h @@ -206,5 +206,8 @@ #define SKIP_BASIC_SZ ((size_t) 6) +/* stat.c */ +#define N_COUNT_HIST 61 + /* were to look for errors if config path fails */ #define DEFAULT_SQUID_ERROR_DIR "/usr/local/squid/etc/errors" diff --git a/src/fqdncache.cc b/src/fqdncache.cc index 8cbe965143..ad1b6f9933 100644 --- a/src/fqdncache.cc +++ b/src/fqdncache.cc @@ -1,6 +1,6 @@ /* - * $Id: fqdncache.cc,v 1.85 1998/02/25 09:53:57 rousskov Exp $ + * $Id: fqdncache.cc,v 1.86 1998/02/26 09:01:12 kostas Exp $ * * DEBUG: section 35 FQDN Cache * AUTHOR: Harvest Derived @@ -936,8 +936,8 @@ snmp_fqdncacheFn(variable_list * Var, long *ErrP) switch (Var->name[11]) { case NET_FQDN_ID: Answer->type = ASN_INTEGER; - Answer->val.integer = xmalloc(Answer->val_len); Answer->val_len = sizeof(long); + Answer->val.integer = xmalloc(Answer->val_len); *(Answer->val.integer) = Var->name[12]; break; case NET_FQDN_NAME: @@ -947,33 +947,35 @@ snmp_fqdncacheFn(variable_list * Var, long *ErrP) break; case NET_FQDN_IP: Answer->type = SMI_IPADDRESS; - Answer->val.integer = xmalloc(Answer->val_len); Answer->val_len = sizeof(long); + Answer->val.integer = xmalloc(Answer->val_len); safe_inet_addr(fq->name, &fqaddr); *(Answer->val.integer) = (long) fqaddr.s_addr; break; case NET_FQDN_LASTREF: Answer->type = SMI_TIMETICKS; - Answer->val.integer = xmalloc(Answer->val_len); Answer->val_len = sizeof(long); - *(Answer->val.integer) = fq->lastref; + Answer->val.integer = xmalloc(Answer->val_len); + *(Answer->val.integer) = squid_curtime-fq->lastref; break; case NET_FQDN_EXPIRES: Answer->type = SMI_TIMETICKS; - Answer->val.integer = xmalloc(Answer->val_len); Answer->val_len = sizeof(long); - *(Answer->val.integer) = fq->expires; + Answer->val.integer = xmalloc(Answer->val_len); + *(Answer->val.integer) = fq->expires-squid_curtime; break; case NET_FQDN_STATE: Answer->type = ASN_INTEGER; - Answer->val.integer = xmalloc(Answer->val_len); Answer->val_len = sizeof(long); + Answer->val.integer = xmalloc(Answer->val_len); *(Answer->val.integer) = fq->status; break; default: *ErrP = SNMP_ERR_NOSUCHNAME; snmp_var_free(Answer); +#if 0 xfree(Answer->val.integer); +#endif return (NULL); } return Answer; diff --git a/src/ipcache.cc b/src/ipcache.cc index b9d7c235f1..1ea027727b 100644 --- a/src/ipcache.cc +++ b/src/ipcache.cc @@ -1,6 +1,6 @@ /* - * $Id: ipcache.cc,v 1.160 1998/02/25 09:53:59 rousskov Exp $ + * $Id: ipcache.cc,v 1.161 1998/02/26 09:01:13 kostas Exp $ * * DEBUG: section 14 IP Cache * AUTHOR: Harvest Derived @@ -1088,8 +1088,8 @@ snmp_ipcacheFn(variable_list * Var, long *ErrP) } Answer = snmp_var_new(Var->name, Var->name_length); *ErrP = SNMP_ERR_NOERROR; - Answer->val.integer = xmalloc(Answer->val_len); Answer->val_len = sizeof(long); + Answer->val.integer = xmalloc(Answer->val_len); switch (Var->name[11]) { case NET_IPC_ID: Answer->type = SMI_INTEGER; diff --git a/src/mib.txt b/src/mib.txt index bca95a852b..8c3c2bd9c4 100644 --- a/src/mib.txt +++ b/src/mib.txt @@ -1,7 +1,7 @@ -- File: SQUID.MIB -- Maintained by: kostas@nlanr.net -- --- $Id: mib.txt,v 1.9 1998/02/23 06:34:04 kostas Exp $ +-- $Id: mib.txt,v 1.10 1998/02/26 09:01:14 kostas Exp $ -- SQUID-MIB DEFINITIONS ::= BEGIN -- IMPORTS @@ -689,8 +689,12 @@ -- cacheProtoStats -- + -- cacheProtoAggregateStats + -- + cacheProtoAggregateStats OBJECT IDENTIFIER ::= { cacheProtoStats 1 } + cacheClientHttpRequests OBJECT-TYPE SYNTAX Counter32 ACCESS read-only @@ -709,85 +713,153 @@ STATUS mandatory ::= { cacheProtoAggregateStats 3 } - cacheICPpktsSent OBJECT-TYPE + cacheHttpInKb OBJECT-TYPE SYNTAX Counter32 ACCESS read-only STATUS mandatory ::= { cacheProtoAggregateStats 4 } - cacheICPpktsRecv OBJECT-TYPE + cacheHttpOutKb OBJECT-TYPE SYNTAX Counter32 ACCESS read-only STATUS mandatory ::= { cacheProtoAggregateStats 5 } - cacheICPkbSent OBJECT-TYPE + cacheICPpktsSent OBJECT-TYPE SYNTAX Counter32 ACCESS read-only STATUS mandatory ::= { cacheProtoAggregateStats 6 } - cacheICPkbRecv OBJECT-TYPE + cacheICPpktsRecv OBJECT-TYPE SYNTAX Counter32 ACCESS read-only STATUS mandatory ::= { cacheProtoAggregateStats 7 } - cacheHttpInKb OBJECT-TYPE + cacheICPkbSent OBJECT-TYPE SYNTAX Counter32 ACCESS read-only STATUS mandatory ::= { cacheProtoAggregateStats 8 } - cacheHttpOutKb OBJECT-TYPE + cacheICPkbRecv OBJECT-TYPE SYNTAX Counter32 ACCESS read-only STATUS mandatory ::= { cacheProtoAggregateStats 9 } + cacheServerRequests OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { cacheProtoAggregateStats 10 } + + cacheServerErrors OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { cacheProtoAggregateStats 11 } + + cacheServerInKb OBJECT-TYPE + SYNTAX Counter32 + ACCESS read-only + STATUS mandatory + ::= { cacheProtoAggregateStats 12 } + + cacheServerOutKb OBJECT-TYPE + SYNTAX Counter32 + ACCESS read-only + STATUS mandatory + ::= { cacheProtoAggregateStats 13 } + cacheCurrentSwapSize OBJECT-TYPE SYNTAX Counter32 ACCESS read-only STATUS mandatory - ::= { cacheProtoAggregateStats 10 } + ::= { cacheProtoAggregateStats 14 } + + + -- + -- cacheProtoMedianSvcStats group - cacheHttpMedianSvcFiveMin OBJECT-TYPE + cacheMedianSvcTable OBJECT-TYPE + SYNTAX SEQUENCE OF cacheMedianSvcEntry + ACCESS read-only + STATUS current + ::= { cacheProtoStats 2 } + + cacheMedianSvcEntry OBJECT-TYPE + SYNTAX CacheMedianSvcEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + " An entry in cacheFdTable " + INDEX { cacheMedianTime } + ::= { cacheMedianSvcTable 1 } + + CacheMedianSvcEntry ::= SEQUENCE { + cacheMedianTime INTEGER, + cacheHttpAllSvcTime INTEGER, + cacheHttpMissSvcTime INTEGER, + cacheHttpNmSvcTime INTEGER, + cacheHttpHitSvcTime INTEGER, + cacheIcpQuerySvcTime INTEGER, + cacheIcpReplySvcTime INTEGER, + cacheDnsSvcTime INTEGER + } + + cacheMedianTime OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory - ::= { cacheProtoAggregateStats 11 } + ::= { cacheMedianSvcEntry 1 } - cacheICPMedianSvcFiveMin OBJECT-TYPE + cacheHttpAllSvcTime OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory - ::= { cacheProtoAggregateStats 13 } + ::= { cacheMedianSvcEntry 2 } - cacheDNSMedianSvcFiveMin OBJECT-TYPE + cacheHttpMissSvcTime OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory - ::= { cacheProtoAggregateStats 15 } + ::= { cacheMedianSvcEntry 3 } - cacheHttpMedianSvcHour OBJECT-TYPE + cacheHttpNmSvcTime OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory - ::= { cacheProtoAggregateStats 12 } + ::= { cacheMedianSvcEntry 4 } - cacheICPMedianSvcHour OBJECT-TYPE + + cacheHttpHitSvcTime OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory - ::= { cacheProtoAggregateStats 14 } + ::= { cacheMedianSvcEntry 5 } - cacheDNSMedianSvcHour OBJECT-TYPE + + cacheIcpQuerySvcTime OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory - ::= { cacheProtoAggregateStats 16 } + ::= { cacheMedianSvcEntry 6 } + + cacheIcpReplySvcTime OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { cacheMedianSvcEntry 7 } + + cacheDnsSvcTime OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { cacheMedianSvcEntry 8 } -- diff --git a/src/net_db.cc b/src/net_db.cc index 0c31344b4b..b70e6abda2 100644 --- a/src/net_db.cc +++ b/src/net_db.cc @@ -1,6 +1,6 @@ /* - * $Id: net_db.cc,v 1.68 1998/02/23 21:05:18 kostas Exp $ + * $Id: net_db.cc,v 1.69 1998/02/26 09:01:14 kostas Exp $ * * DEBUG: section 37 Network Measurement Database * AUTHOR: Duane Wessels @@ -748,12 +748,12 @@ snmp_netdbFn(variable_list * Var, long *ErrP) return (NULL); } #if USE_ICMP - Answer->val.integer = xmalloc(Answer->val_len); Answer->val_len = sizeof(long); + Answer->val.integer = xmalloc(Answer->val_len); switch (Var->name[10]) { case NETDB_ID: Answer->type = SMI_INTEGER; - *(Answer->val.integer) = (long) cnt - 1; + *(Answer->val.integer) = (long) Var->name[11]; break; case NETDB_NET: Answer->type = SMI_IPADDRESS; @@ -778,11 +778,11 @@ snmp_netdbFn(variable_list * Var, long *ErrP) break; case NETDB_PINGTIME: Answer->type = SMI_TIMETICKS; - *(Answer->val.integer) = (long) n->next_ping_time; + *(Answer->val.integer) = (long) n->next_ping_time-squid_curtime; break; case NETDB_LASTUSE: Answer->type = SMI_TIMETICKS; - *(Answer->val.integer) = (long) n->last_use_time; + *(Answer->val.integer) = (long) squid_curtime-n->last_use_time; break; default: *ErrP = SNMP_ERR_NOSUCHNAME; diff --git a/src/snmp_agent.cc b/src/snmp_agent.cc index 7029ddfaae..ecbc593866 100644 --- a/src/snmp_agent.cc +++ b/src/snmp_agent.cc @@ -20,7 +20,9 @@ static struct snmp_pdu *snmp_agent_response(struct snmp_pdu *PDU); static int community_check(char *b, oid *name, int namelen); struct snmp_session *Session; extern int get_median_svc(int, int); +extern StatCounters *snmpStatGet(int); extern void snmp_agent_parse_done(int, snmp_request_t *); + void snmpAclCheckStart(snmp_request_t *rq); @@ -88,6 +90,7 @@ snmpAclCheckDone(int answer, void *data) rq->acl_checklist = NULL; PDU=rq->PDU; Community=rq->community; + if (answer==ACCESS_DENIED) { debug(49,5)("snmpAclCheckDone: failed on acl.\n"); snmp_agent_parse_done(0, rq); @@ -99,7 +102,7 @@ snmpAclCheckDone(int answer, void *data) VarPtrP = &((*VarPtrP)->next_variable)) { VarPtr = *VarPtrP; - debug(49,5)("snmpAclCheckDone: checking."); + debug(49,5)("snmpAclCheckDone: checking.\n"); /* access check for each variable */ if (!community_check(Community, VarPtr->name, VarPtr->name_length)) { @@ -222,7 +225,7 @@ snmp_agent_response(struct snmp_pdu *PDU) /* Done. Return this PDU */ return (Answer); } /* end SNMP_PDU_GETNEXT */ -# + debug(49, 9) ("Ignoring PDU %d\n", PDU->command); snmp_free_pdu(Answer); return (NULL); @@ -312,7 +315,7 @@ snmp_basicFn(variable_list * Var, long *ErrP) case SYSORLASTCHANGE: Answer->val_len = sizeof(long); Answer->val.integer = xmalloc(Answer->val_len); - Answer->type = ASN_INTEGER; + Answer->type = SMI_TIMETICKS; *(Answer->val.integer) = tvSubDsec(squid_start, current_time); break; case SYSCONTACT: @@ -561,6 +564,7 @@ snmp_confFn(variable_list * Var, long *ErrP) snmp_var_free(Answer); return (NULL); } + break; case CONF_LOG_LVL: if (!(cp = Config.debugOptions)) cp = "None"; @@ -613,8 +617,8 @@ snmp_confPtblFn(variable_list * Var, long *ErrP) break; case CONF_PTBL_IP: Answer->type = SMI_IPADDRESS; - Answer->val.integer = xmalloc(Answer->val_len); Answer->val_len = sizeof(long); + Answer->val.integer = xmalloc(Answer->val_len); *(Answer->val.integer) = (long) (p->in_addr.sin_addr.s_addr); break; case CONF_PTBL_HTTP: @@ -687,7 +691,7 @@ snmp_prfSysFn(variable_list * Var, long *ErrP) break; case PERF_SYS_CURLRUEXP: Answer->type = SMI_TIMETICKS; - *(Answer->val.integer) = (long) ((double) storeExpiredReferenceAge() / 86400.0); + *(Answer->val.integer) = (long) storeExpiredReferenceAge(); break; case PERF_SYS_CURUNLREQ: *(Answer->val.integer) = (long) Counter.unlink.requests; @@ -775,13 +779,18 @@ variable_list * snmp_prfProtoFn(variable_list * Var, long *ErrP) { variable_list *Answer; + static StatCounters *f=NULL; + static StatCounters *l=NULL; + double x; + int minutes; debug(49, 5) ("snmp_prfProtoFn: Processing request with magic %d!\n", Var->name[8]); Answer = snmp_var_new(Var->name, Var->name_length); *ErrP = SNMP_ERR_NOERROR; - if (Var->name[9] == 1) { /* cacheProtoAggregateStats */ + switch(Var->name[9]) { + case PERF_PROTOSTAT_AGGR: /* cacheProtoAggregateStats */ Answer->type = SMI_COUNTER32; Answer->val_len = sizeof(long); Answer->val.integer = xmalloc(Answer->val_len); @@ -795,6 +804,12 @@ snmp_prfProtoFn(variable_list * Var, long *ErrP) case PERF_PROTOSTAT_AGGR_HTTP_ERRORS: *(Answer->val.integer) = (long) Counter.client_http.errors; break; + case PERF_PROTOSTAT_AGGR_HTTP_KBYTES_IN: + *(Answer->val.integer) = (long) Counter.client_http.kbytes_in.kb; + break; + case PERF_PROTOSTAT_AGGR_HTTP_KBYTES_OUT: + *(Answer->val.integer) = (long) Counter.client_http.kbytes_out.kb; + break; case PERF_PROTOSTAT_AGGR_ICP_S: *(Answer->val.integer) = (long) Counter.icp.pkts_sent; break; @@ -806,52 +821,88 @@ snmp_prfProtoFn(variable_list * Var, long *ErrP) break; case PERF_PROTOSTAT_AGGR_ICP_RKB: *(Answer->val.integer) = (long) Counter.icp.kbytes_recv.kb; - break; + break; + case PERF_PROTOSTAT_AGGR_REQ: + *(Answer->val.integer) = (long) Counter.server.requests; + break; + case PERF_PROTOSTAT_AGGR_ERRORS: + *(Answer->val.integer) = (long) Counter.server.errors; + break; case PERF_PROTOSTAT_AGGR_KBYTES_IN: - *(Answer->val.integer) = (long) Counter.client_http.kbytes_in.kb; + *(Answer->val.integer) = (long) Counter.server.kbytes_in.kb; break; case PERF_PROTOSTAT_AGGR_KBYTES_OUT: - *(Answer->val.integer) = (long) Counter.client_http.kbytes_out.kb; + *(Answer->val.integer) = (long) Counter.server.kbytes_out.kb; break; case PERF_PROTOSTAT_AGGR_CURSWAP: *(Answer->val.integer) = (long) store_swap_size; break; - case PERF_PROTOSTAT_AGGR_HTTP_SVC_5: - Answer->type = ASN_INTEGER; - *(Answer->val.integer) = (long) get_median_svc(5, HTTP_SVC); - break; - case PERF_PROTOSTAT_AGGR_ICP_SVC_5: - Answer->type = ASN_INTEGER; - *(Answer->val.integer) = (long) get_median_svc(5, ICP_SVC); - break; - case PERF_PROTOSTAT_AGGR_DNS_SVC_5: - Answer->type = ASN_INTEGER; - *(Answer->val.integer) = (long) get_median_svc(5, DNS_SVC); - break; - case PERF_PROTOSTAT_AGGR_HTTP_SVC_60: - Answer->type = ASN_INTEGER; - *(Answer->val.integer) = (long) get_median_svc(60, HTTP_SVC); - break; - case PERF_PROTOSTAT_AGGR_ICP_SVC_60: - Answer->type = ASN_INTEGER; - *(Answer->val.integer) = (long) get_median_svc(60, ICP_SVC); - break; - case PERF_PROTOSTAT_AGGR_DNS_SVC_60: - Answer->type = ASN_INTEGER; - *(Answer->val.integer) = (long) get_median_svc(60, DNS_SVC); - break; default: +#if 0 xfree(Answer->val.integer); +#endif *ErrP = SNMP_ERR_NOSUCHNAME; snmp_var_free(Answer); return (NULL); } - } else { - *ErrP = SNMP_ERR_NOSUCHNAME; - snmp_var_free(Answer); - return (NULL); + return Answer; + case PERF_PROTOSTAT_MEDIAN: + + minutes= Var->name[12]; + + f= snmpStatGet(0); + l= snmpStatGet(minutes); + + debug(49,8)("median: min= %d, %d l= %x , f = %x\n",minutes, + Var->name[11], l, f); + Answer->type = SMI_INTEGER; + Answer->val_len = sizeof(long); + Answer->val.integer = xmalloc(Answer->val_len); + + debug(49,8)("median: l= %x , f = %x\n",l, f); + switch (Var->name[11]) { + case PERF_MEDIAN_TIME: + x= minutes; + break; + case PERF_MEDIAN_HTTP_ALL: + x = statHistDeltaMedian(&l->client_http.all_svc_time, + &f->client_http.all_svc_time); + break; + case PERF_MEDIAN_HTTP_MISS: + x = statHistDeltaMedian(&l->client_http.miss_svc_time, + &f->client_http.miss_svc_time); + break; + case PERF_MEDIAN_HTTP_NM: + x = statHistDeltaMedian(&l->client_http.nm_svc_time, + &f->client_http.nm_svc_time); + break; + case PERF_MEDIAN_HTTP_HIT: + x = statHistDeltaMedian(&l->client_http.hit_svc_time, + &f->client_http.hit_svc_time); + break; + case PERF_MEDIAN_ICP_QUERY: + x = statHistDeltaMedian(&l->icp.query_svc_time, &f->icp.query_svc_time); + break; + case PERF_MEDIAN_ICP_REPLY: + x = statHistDeltaMedian(&l->icp.reply_svc_time, &f->icp.reply_svc_time); + break; + case PERF_MEDIAN_DNS: + x = statHistDeltaMedian(&l->dns.svc_time, &f->dns.svc_time); + break; + default: +#if 0 + xfree(Answer->val.integer); +#endif + *ErrP = SNMP_ERR_NOSUCHNAME; + snmp_var_free(Answer); + return (NULL); + } + *(Answer->val.integer) = (long) x; + return Answer; } - return Answer; + *ErrP = SNMP_ERR_NOSUCHNAME; + snmp_var_free(Answer); + return (NULL); } diff --git a/src/stat.cc b/src/stat.cc index f3c2cd3214..d74b506ccd 100644 --- a/src/stat.cc +++ b/src/stat.cc @@ -1,6 +1,6 @@ /* - * $Id: stat.cc,v 1.208 1998/02/25 23:56:54 rousskov Exp $ + * $Id: stat.cc,v 1.209 1998/02/26 09:01:16 kostas Exp $ * * DEBUG: section 18 Cache Manager Statistics * AUTHOR: Harvest Derived @@ -134,7 +134,9 @@ static void info_get_mallstat(int, int, StoreEntry *); /* * An hour's worth, plus the 'current' counter */ +#if 0 /* moved to defines.h to get from snmp_oidlist.c */ #define N_COUNT_HIST 61 +#endif StatCounters CountHist[N_COUNT_HIST]; static int NCountHist = 0; @@ -891,3 +893,9 @@ get_median_svc(int interval, int which) } return (int) x; } + +StatCounters * +snmpStatGet(int minutes) +{ + return &CountHist[minutes]; +} -- 2.47.3