sflow: Avoid division by zero if sampling rate is 0.
authorBen Pfaff <blp@nicira.com>
Mon, 11 Jan 2010 19:09:14 +0000 (11:09 -0800)
committerBen Pfaff <blp@nicira.com>
Mon, 11 Jan 2010 19:09:14 +0000 (11:09 -0800)
Reported by Justin Pettit.

ofproto/ofproto-sflow.c

index 45c6c08ade240d1134d99fccd218a07a73a4be03..1815dd9d77b206b5678ddef6ec0cf1dda2822222 100644 (file)
@@ -359,6 +359,13 @@ ofproto_sflow_set_options(struct ofproto_sflow *os,
     time_t now;
     int error;
 
+    if (!options->targets.n || !options->sampling_rate) {
+        /* No point in doing any work if there are no targets or nothing to
+         * sample. */
+        ofproto_sflow_clear(os);
+        return;
+    }
+
     options_changed = (!os->options
                        || !ofproto_sflow_options_equal(options, os->options));
 
@@ -371,7 +378,8 @@ ofproto_sflow_set_options(struct ofproto_sflow *os,
         error = collectors_create(&options->targets,
                                   SFL_DEFAULT_COLLECTOR_PORT, &os->collectors);
         if (os->collectors == NULL) {
-            VLOG_WARN_RL(&rl, "no configured collectors, sFlow disabled");
+            VLOG_WARN_RL(&rl, "no collectors could be initialized, "
+                         "sFlow disabled");
             ofproto_sflow_clear(os);
             return;
         }