summaryrefslogtreecommitdiffstats
path: root/usr.bin/systat
diff options
context:
space:
mode:
authorrstone <rstone@FreeBSD.org>2014-09-29 17:38:50 +0000
committerrstone <rstone@FreeBSD.org>2014-09-29 17:38:50 +0000
commit03edcfbff66639afe11ba1017adda3fd2e58f288 (patch)
tree1bc6cfff0e6d7d6072f184e90b5ab004839aaa3f /usr.bin/systat
parent57c53dc77d6c623a52956cacd08eadd4b76b2d03 (diff)
downloadFreeBSD-src-03edcfbff66639afe11ba1017adda3fd2e58f288.zip
FreeBSD-src-03edcfbff66639afe11ba1017adda3fd2e58f288.tar.gz
Fix integer truncation in affecting systat -ifstat
The "systat -ifstat" command was using a u_int to store byte counters. With a 10Gbps or faster interface, this overflows within the default 5 second refresh period. Switch to using a uint64_t across the board, which matches the size used for all counters as of r263102. PR: 182448 MFC after: 1 week Sponsored by: Sandvine Inc
Diffstat (limited to 'usr.bin/systat')
-rw-r--r--usr.bin/systat/ifstat.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/usr.bin/systat/ifstat.c b/usr.bin/systat/ifstat.c
index 4cfe01c..35e5756 100644
--- a/usr.bin/systat/ifstat.c
+++ b/usr.bin/systat/ifstat.c
@@ -68,14 +68,14 @@ struct if_stat {
struct ifmibdata if_mib;
struct timeval tv;
struct timeval tv_lastchanged;
- u_long if_in_curtraffic;
- u_long if_out_curtraffic;
- u_long if_in_traffic_peak;
- u_long if_out_traffic_peak;
- u_long if_in_curpps;
- u_long if_out_curpps;
- u_long if_in_pps_peak;
- u_long if_out_pps_peak;
+ uint64_t if_in_curtraffic;
+ uint64_t if_out_curtraffic;
+ uint64_t if_in_traffic_peak;
+ uint64_t if_out_traffic_peak;
+ uint64_t if_in_curpps;
+ uint64_t if_out_curpps;
+ uint64_t if_in_pps_peak;
+ uint64_t if_out_pps_peak;
u_int if_row; /* Index into ifmib sysctl */
int if_ypos; /* -1 if not being displayed */
u_int display;
@@ -269,8 +269,8 @@ fetchifstat(void)
struct if_stat *ifp = NULL;
struct timeval tv, new_tv, old_tv;
double elapsed = 0.0;
- u_int new_inb, new_outb, old_inb, old_outb = 0;
- u_int new_inp, new_outp, old_inp, old_outp = 0;
+ uint64_t new_inb, new_outb, old_inb, old_outb = 0;
+ uint64_t new_inp, new_outp, old_inp, old_outp = 0;
SLIST_FOREACH(ifp, &curlist, link) {
/*
OpenPOWER on IntegriCloud