On Mon, Jul 25, 2016 at 09:19:00AM -0700, nickcooper-zhangtonghao wrote: > Deletion of a logical router port, which may be an other > router peer, result in a WARN, because the "ports" variable > still contains the logical port deleted. This port exists > but should not have been initialized fully. > > nbsp == NULL, nbrp == NULL > > It is necessary to check 'nbsp'. > > A router port's "peer", if set, must point to another router port, but the > code as written also accepted switch ports. This caused problems when > switch ports were actually specified. > > Reported-by: Gurucharan Shetty <g...@ovn.org> > Reported-at: http://openvswitch.org/pipermail/dev/2016-July/075524.html > Signed-off-by: Ben Pfaff <b...@ovn.org> > Acked-by: Gurucharan Shetty <g...@ovn.org> > Signed-off-by: nickcooper-zhangtonghao > <nickcooper-zhangtong...@opencloud.tech> > --- > ovn/northd/ovn-northd.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c > index a3d1672..efc915c 100644 > --- a/ovn/northd/ovn-northd.c > +++ b/ovn/northd/ovn-northd.c > @@ -746,9 +746,15 @@ join_logical_ports(struct northd_context *ctx, > } else if (op->nbrp && op->nbrp->peer) { > struct ovn_port *peer = ovn_port_find(ports, op->nbrp->peer); > if (peer) { > + /* Deletion of a logical router port, which may be an other > + * router peer, result in a WARN, because the "ports" > variable > + * still contains the logical port deleted. This port exists > + * but should not have been initialized fully. > + * > + * nbsp == NULL, nbrp == NULL */ > if (peer->nbrp) { > op->peer = peer; > - } else { > + } else if (peer->nbsp) { > /* An ovn_port for a switch port of type "router" does > have > * a router port as its peer (see the case above for > * "router" ports), but this is set via > options:router-port
I don't understand this yet. I don't see how an ovn_port's nbsp and nbrp can both be NULL. I only see two calls to ovn_port_create(), and each of them supplies either nbsp or nbrp as nonnull. Can you explain further? Thanks, Ben. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev