There's no need to always lookup a port's peer in ovn_port_get_peer(). Just use what was already stored in op->peer instead.
Also, factor out addition of router ports to a logical switch's ovn_datapath and use x2nrealloc(). Signed-off-by: Dumitru Ceara <[email protected]> --- v2: Changed patch according to Mark's review: - modify ovn_port_get_peer() to check if op->peer is already set. - rephrased the commit log accordingly. --- northd/northd.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/northd/northd.c b/northd/northd.c index bcd36bbaa..530bbc61b 100644 --- a/northd/northd.c +++ b/northd/northd.c @@ -601,6 +601,7 @@ struct ovn_datapath { /* Logical switch data. */ struct ovn_port **router_ports; size_t n_router_ports; + size_t n_allocated_router_ports; struct hmap port_tnlids; uint32_t port_key_hint; @@ -1081,6 +1082,17 @@ ovn_datapath_from_sbrec(const struct hmap *datapaths, return NULL; } +static void +ovn_datapath_add_router_port(struct ovn_datapath *od, struct ovn_port *op) +{ + if (od->n_router_ports == od->n_allocated_router_ports) { + od->router_ports = x2nrealloc(od->router_ports, + &od->n_allocated_router_ports, + sizeof *od->router_ports); + } + od->router_ports[od->n_router_ports++] = op; +} + static bool lrouter_is_enabled(const struct nbrec_logical_router *lrouter) { @@ -1815,6 +1827,10 @@ ovn_port_get_peer(const struct hmap *ports, struct ovn_port *op) return NULL; } + if (op->peer) { + return op->peer; + } + const char *peer_name = smap_get(&op->nbsp->options, "router-port"); if (!peer_name) { return NULL; @@ -2657,12 +2673,9 @@ join_logical_ports(struct northd_input *input_data, continue; } + ovn_datapath_add_router_port(op->od, op); peer->peer = op; op->peer = peer; - op->od->router_ports = xrealloc( - op->od->router_ports, - sizeof *op->od->router_ports * (op->od->n_router_ports + 1)); - op->od->router_ports[op->od->n_router_ports++] = op; /* Fill op->lsp_addrs for op->nbsp->addresses[] with * contents "router", which was skipped in the loop above. */ -- 2.27.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
