Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 1 Mar 2015 04:36:21 +0000 (UTC)
From:      Ryan Stone <rstone@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r279473 - stable/10/usr.bin/systat
Message-ID:  <201503010436.t214aLHb005484@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rstone
Date: Sun Mar  1 04:36:20 2015
New Revision: 279473
URL: https://svnweb.freebsd.org/changeset/base/279473

Log:
  MFC r272284
  
     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

Modified:
  stable/10/usr.bin/systat/ifstat.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/usr.bin/systat/ifstat.c
==============================================================================
--- stable/10/usr.bin/systat/ifstat.c	Sun Mar  1 04:28:30 2015	(r279472)
+++ stable/10/usr.bin/systat/ifstat.c	Sun Mar  1 04:36:20 2015	(r279473)
@@ -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 */
 	u_int	if_ypos;		/* 0 if not being displayed */
 	u_int	display;
@@ -263,8 +263,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) {
 		/*



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201503010436.t214aLHb005484>