Skip to content

Commit

Permalink
ofproto-dpif: Update bundle when OFPPC_NO_FLOOD changed.
Browse files Browse the repository at this point in the history
When the OFPPC_NO_FLOOD flag is toggled on the port, the "floodable"
member of the bundle was not updated.  This would cause OFPP_NORMAL to
not include the proper ports when flooding.  With this commit,
OFPPC_NO_FLOOD changes will cause the floodable members to be
recalculated.

Found by inspection.
  • Loading branch information
Justin Pettit committed Oct 22, 2011
1 parent d9e214d commit 7bde8dd
Showing 1 changed file with 20 additions and 6 deletions.
26 changes: 20 additions & 6 deletions ofproto/ofproto-dpif.c
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ struct ofbundle {
};

static void bundle_remove(struct ofport *);
static void bundle_update(struct ofbundle *);
static void bundle_destroy(struct ofbundle *);
static void bundle_del_port(struct ofport_dpif *);
static void bundle_run(struct ofbundle *);
Expand Down Expand Up @@ -825,6 +826,10 @@ port_reconfigured(struct ofport *port_, ovs_be32 old_config)
if (changed & htonl(OFPPC_NO_RECV | OFPPC_NO_RECV_STP |
OFPPC_NO_FWD | OFPPC_NO_FLOOD)) {
ofproto->need_revalidate = true;

if (changed & htonl(OFPPC_NO_FLOOD) && port->bundle) {
bundle_update(port->bundle);
}
}
}

Expand Down Expand Up @@ -958,6 +963,20 @@ bundle_lookup_multiple(struct ofproto_dpif *ofproto,
}
}

static void
bundle_update(struct ofbundle *bundle)
{
struct ofport_dpif *port;

bundle->floodable = true;
LIST_FOR_EACH (port, bundle_node, &bundle->ports) {
if (port->up.opp.config & htonl(OFPPC_NO_FLOOD)) {
bundle->floodable = false;
break;
}
}
}

static void
bundle_del_port(struct ofport_dpif *port)
{
Expand All @@ -975,12 +994,7 @@ bundle_del_port(struct ofport_dpif *port)
bond_slave_unregister(bundle->bond, port);
}

bundle->floodable = true;
LIST_FOR_EACH (port, bundle_node, &bundle->ports) {
if (port->up.opp.config & htonl(OFPPC_NO_FLOOD)) {
bundle->floodable = false;
}
}
bundle_update(bundle);
}

static bool
Expand Down

0 comments on commit 7bde8dd

Please sign in to comment.