From 785a46143886feb1908a9a3fdfb53d64fd1cfd2a Mon Sep 17 00:00:00 2001 From: Felix Huettner Date: Tue, 10 Dec 2024 15:12:03 +0100 Subject: [PATCH] northd: Fix relying on naming coincidences. We previous relied on the fact the the southbound Port_Binding gets the same name as the Northbound port. However in all of the cases we use this we already know the name the southbound port will have. Therefore we just use this name, instead of getting it from northbound. This is a prerequisite for later patches that use derived router ports. Acked-by: Lorenzo Bianconi Signed-off-by: Felix Huettner Signed-off-by: Dumitru Ceara --- northd/northd.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/northd/northd.c b/northd/northd.c index 88adfbf6fc..665277d502 100644 --- a/northd/northd.c +++ b/northd/northd.c @@ -3298,9 +3298,17 @@ ovn_port_update_sbrec(struct ovsdb_idl_txn *ovnsb_txn, smap_init(&new); if (is_cr_port(op)) { - smap_add(&new, "distributed-port", op->nbsp->name); + smap_add(&new, "distributed-port", op->primary_port->key); } else if (router_port) { - smap_add(&new, "peer", router_port); + /* op->peer can be null if the peer is disabed. In this + * case we fall back to the router_port string which + * might be wrong, but since the port does not exist that + * does not matter. */ + if (op->peer) { + smap_add(&new, "peer", op->peer->key); + } else { + smap_add(&new, "peer", router_port); + } } if (chassis) { smap_add(&new, "l3gateway-chassis", chassis); @@ -4016,7 +4024,7 @@ sync_pb_for_lrp(struct ovn_port *op, lr_stateful_table_find_by_index(lr_stateful_table, op->od->index); ovs_assert(lr_stateful_rec); - smap_add(&new, "distributed-port", op->nbrp->name); + smap_add(&new, "distributed-port", op->primary_port->key); bool always_redirect = !lr_stateful_rec->lrnat_rec->has_distributed_nat && @@ -4041,10 +4049,7 @@ sync_pb_for_lrp(struct ovn_port *op, smap_add(&new, "peer", op->peer->key); if (op->nbrp->ha_chassis_group || op->nbrp->n_gateway_chassis) { - char *redirect_name = - ovn_chassis_redirect_name(op->nbrp->name); - smap_add(&new, "chassis-redirect-port", redirect_name); - free(redirect_name); + smap_add(&new, "chassis-redirect-port", op->cr_port->key); } } if (chassis_name) {