secchan: Do not refresh datapath indexes from bridge_get_ifaces().
authorBen Pfaff <blp@nicira.com>
Tue, 26 May 2009 17:36:53 +0000 (10:36 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 26 May 2009 17:36:53 +0000 (10:36 -0700)
commit71896e5569c152f91334220390af315ebe7281c5
treef849300e1cd749eb2059294a9e8ea4cbe6344686
parent50c8c6eb441f47f1e285c9f2872be9957bf256dd
secchan: Do not refresh datapath indexes from bridge_get_ifaces().

bridge_get_ifaces() called bridge_fetch_dp_ifaces(), which in turn would
set dp_ifidx members of struct iface to -1 if we were racing with a port
being deleted from a datapath.  When this happen it would cause
ODPAT_OUTPUT actions with the port number set to UINT16_MAX to be pushed
to the datapath on OFPP_NORMAL actions, which the datapath would choke
on with EINVAL errors.

Thanks to Justin for pointing out the bad actions being pushed to the
datapath.
vswitchd/bridge.c