From: Ben Pfaff Date: Tue, 20 Apr 2010 21:06:25 +0000 (-0700) Subject: in-band: Refactor slightly to be easier to understand. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c16e55cf846f7a04a28730e25193d6a8ccd95f11;p=openvswitch in-band: Refactor slightly to be easier to understand. Suggested-by: Justin Pettit --- diff --git a/ofproto/in-band.c b/ofproto/in-band.c index d918d713..4efcbca6 100644 --- a/ofproto/in-band.c +++ b/ofproto/in-band.c @@ -625,20 +625,6 @@ make_rules(struct in_band *ib, } } -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) { @@ -646,11 +632,25 @@ 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 @@ -666,6 +666,7 @@ add_rule(struct in_band *ib, const struct in_band_rule *rule) 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) {