svn commit: r279473 - stable/10/usr.bin/systat

Ryan Stone rstone at FreeBSD.org
Sun Mar 1 04:36:21 UTC 2015


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) {
 		/*


More information about the svn-src-all mailing list