As an aside. This particular issue has bitten us several times. Does it make sense in the future to push the check for synthetic ifaces into the idl?
Ethan On Wed, Oct 26, 2011 at 11:42, Ethan Jackson <[email protected]> wrote: > This can cause ovs-vswitchd to crash. > > Bug #8007. > Reported-by: Krishna Miriyala <[email protected]> > --- > vswitchd/bridge.c | 13 +++++++++++++ > 1 files changed, 13 insertions(+), 0 deletions(-) > > diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c > index 3a19235..09696d5 100644 > --- a/vswitchd/bridge.c > +++ b/vswitchd/bridge.c > @@ -184,6 +184,7 @@ static struct lacp_settings *port_configure_lacp(struct > port *, > struct lacp_settings *); > static void port_configure_bond(struct port *, struct bond_settings *, > uint32_t *bond_stable_ids); > +static bool port_is_synthetic(const struct port *); > > static void bridge_configure_mirrors(struct bridge *); > static struct mirror *mirror_create(struct bridge *, > @@ -1600,6 +1601,10 @@ port_refresh_stp_status(struct port *port) > char *keys[4], *values[4]; > size_t i; > > + if (port_is_synthetic(port)) { > + return; > + } > + > /* STP doesn't currently support bonds. */ > if (!list_is_singleton(&port->ifaces)) { > ovsrec_port_set_status(port->cfg, NULL, NULL, 0); > @@ -2697,6 +2702,14 @@ port_configure_bond(struct port *port, struct > bond_settings *s, > netdev_set_miimon_interval(iface->netdev, miimon_interval); > } > } > + > +/* Returns true if 'port' is synthetic, that is, if we constructed it locally > + * instead of obtaining it from the database. */ > +static bool > +port_is_synthetic(const struct port *port) > +{ > + return ovsdb_idl_row_is_synthetic(&port->cfg->header_); > +} > > /* Interface functions. */ > > -- > 1.7.7 > > _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
