flowprobe: Fixed assert error with less than 1 second passive timer 82/7182/6
authorAndrew Li <zhaoxili@cisco.com>
Sun, 18 Jun 2017 19:11:57 +0000 (12:11 -0700)
committerOle Trøan <otroan@employees.org>
Fri, 14 Jul 2017 13:54:31 +0000 (13:54 +0000)
When passive timer has less than 1 second left, it'll be forcifully
changed to 0 when converting from f64 to u64. As a result the
assertion will fail at the beginning of the passive timer start
fuction. This commit fixed this bug by adding a check of the delta.

Change-Id: I899b6e0ab4967dcecc821daf7e812dbbc90969ce
Signed-off-by: Andrew Li <zhaoxili@cisco.com>
src/plugins/flowprobe/node.c

index 604a0a0..c4610a7 100644 (file)
@@ -971,9 +971,9 @@ flowprobe_walker_process (vlib_main_t * vm,
      * entry. Otherwise restart timer with what's left
      * Premature passive timer by more than 10%
      */
-    if ((now - e->last_updated) < (fm->passive_timer * 0.9))
+    if ((now - e->last_updated) < (u64) (fm->passive_timer * 0.9))
       {
-       f64 delta = fm->passive_timer - (now - e->last_updated);
+       u64 delta = fm->passive_timer - (now - e->last_updated);
        e->passive_timer_handle = tw_timer_start_2t_1w_2048sl
          (fm->timers_per_worker[cpu_index], *i, 0, delta);
       }