mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-12-07 12:41:09 +00:00
nstat: 64bit support on 32bit arches
SNMP counters can be provided as 64bit numbers. nstat needs to cope with this even if running in 32bit mode. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
parent
1910618074
commit
cdb2227e9c
13
misc/nstat.c
13
misc/nstat.c
@ -77,7 +77,6 @@ struct nstat_ent
|
||||
struct nstat_ent *next;
|
||||
char *id;
|
||||
unsigned long long val;
|
||||
unsigned long ival;
|
||||
double rate;
|
||||
};
|
||||
|
||||
@ -143,7 +142,6 @@ static void load_good_table(FILE *fp)
|
||||
if ((n = malloc(sizeof(*n))) == NULL)
|
||||
abort();
|
||||
n->id = strdup(idbuf);
|
||||
n->ival = (unsigned long)val;
|
||||
n->val = val;
|
||||
n->rate = rate;
|
||||
n->next = db;
|
||||
@ -206,9 +204,8 @@ static void load_ugly_table(FILE *fp)
|
||||
if (!p)
|
||||
abort();
|
||||
*p = 0;
|
||||
if (sscanf(p+1, "%lu", &n->ival) != 1)
|
||||
if (sscanf(p+1, "%llu", &n->val) != 1)
|
||||
abort();
|
||||
n->val = n->ival;
|
||||
/* Trick to skip "dummy" trailing ICMP MIB in 2.4 */
|
||||
if (strcmp(idbuf, "IcmpOutAddrMaskReps") == 0)
|
||||
idbuf[5] = 0;
|
||||
@ -365,10 +362,10 @@ static void update_db(int interval)
|
||||
for (h1 = h; h1; h1 = h1->next) {
|
||||
if (strcmp(h1->id, n->id) == 0) {
|
||||
double sample;
|
||||
unsigned long incr = h1->ival - n->ival;
|
||||
n->val += incr;
|
||||
n->ival = h1->ival;
|
||||
sample = (double)(incr*1000)/interval;
|
||||
unsigned long long incr = h1->val - n->val;
|
||||
|
||||
n->val = h1->val;
|
||||
sample = (double)incr * 1000.0 / interval;
|
||||
if (interval >= scan_interval) {
|
||||
n->rate += W*(sample-n->rate);
|
||||
} else if (interval >= 1000) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user