>> 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> > >> --- >> ovn/northd/ovn-northd.c | 23 ++++++++++++++++++++++- >> 1 file changed, 22 insertions(+), 1 deletion(-) >> >> diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c >> index 7ce509d..9047635 100644 >> --- a/ovn/northd/ovn-northd.c >> +++ b/ovn/northd/ovn-northd.c >> @@ -496,6 +496,12 @@ struct ovn_port { >> >> struct lport_addresses lrp_networks; >> >> + /* The port's peer: >> + * >> + * - A switch port S of type "router" has a router port R as a >> peer, >> + * and R in turn has S has its peer. >> + * >> + * - Two connected logical router ports have each other as peer. >> */ >> struct ovn_port *peer; >> >> struct ovn_datapath *od; >> @@ -715,7 +721,22 @@ join_logical_ports(struct northd_context *ctx, >> sizeof *op->od->router_ports * (op->od->n_router_ports + >> 1)); >> op->od->router_ports[op->od->n_router_ports++] = op; >> } else if (op->nbr && op->nbr->peer) { >> - op->peer = ovn_port_find(ports, op->nbr->peer); >> + struct ovn_port *peer = ovn_port_find(ports, op->nbr->peer); >> + if (peer) { >> + if (peer->nbr) { >> + op->peer = peer; >> + } else { >> + /* 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 >> + * in Logical_Switch_Port and does not involve the >> + * Logical_Router_Port's 'peer' column. */ >> + static struct vlog_rate_limit rl = >> + VLOG_RATE_LIMIT_INIT(5, 1); >> + VLOG_WARN_RL(&rl, "Bad configuration: The peer of >> router " >> + "port %s is a switch port", op->key); >> + } >> + } >> } >> } >> } >> -- >> 2.1.3 >> >>
This patch that fix the bug is more better than which I provide. Thank you for your tips, Gurucharan. Acked-by: nickcooper-zhangtonghao <nickcooper-zhangtong...@opencloud.tech> _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev