systat - Fix initial pftop state
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 20 Feb 2015 00:14:52 +0000 (16:14 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 20 Feb 2015 00:14:52 +0000 (16:14 -0800)
* The initial pftop state divides by delta_time, which starts out
  as 0.0 and can prevent states from displaying properly.

* Initialize delta_time to 1.0 and disallow sleep intervals < 0.1 second
  to avoid an absurd result.

usr.bin/systat/pftop.c

index 448aa19..5e8725f 100644 (file)
@@ -87,7 +87,7 @@ struct mypfstate {
        struct pfsync_state     last_state;
 };
 
-double delta_time;
+double delta_time = 1.0;       /* for DELTARATE() initial state */
 double highestbw;
 
 static int
@@ -306,8 +306,10 @@ showpftop(void)
 
        delta_time = (double)(tv_curr.tv_sec - tv_last.tv_sec) - 1.0 +
                     (tv_curr.tv_usec + 1000000 - tv_last.tv_usec) / 1e6;
-       if (delta_time < 0.1)
+       if (delta_time < 0.1) {
+               delta_time = 0.1;       /* don't implode DELTARATE */
                return;
+       }
 
        /*
         * Delete and collect pass