}
}
-static void
-clear_rules(struct in_band *ib)
-{
- memset(ib->installed_local_mac, 0, sizeof ib->installed_local_mac);
-
- free(ib->remote_ips);
- ib->remote_ips = NULL;
- ib->n_remote_ips = 0;
-
- free(ib->remote_macs);
- ib->remote_macs = NULL;
- ib->n_remote_macs = 0;
-}
-
static void
drop_rule(struct in_band *ib, const struct in_band_rule *rule)
{
rule->wildcards, rule->priority);
}
+/* Drops from the flow table all of the flows set up by 'ib', then clears out
+ * the information about the installed flows so that they can be filled in
+ * again if necessary. */
static void
drop_rules(struct in_band *ib)
{
+ /* Drop rules. */
make_rules(ib, drop_rule);
- clear_rules(ib);
+
+ /* Clear out state. */
+ memset(ib->installed_local_mac, 0, sizeof ib->installed_local_mac);
+
+ free(ib->remote_ips);
+ ib->remote_ips = NULL;
+ ib->n_remote_ips = 0;
+
+ free(ib->remote_macs);
+ ib->remote_macs = NULL;
+ ib->n_remote_macs = 0;
}
static void
rule->priority, &action, 1, 0);
}
+/* Inserts flows into the flow table for the current state of 'ib'. */
static void
add_rules(struct in_band *ib)
{