On Fri, Apr 24, 2026 at 05:35:57PM +0200, Dumitru Ceara via dev wrote: > Replace all open-coded vector_is_empty(&od->localnet_ports) > checks with a single ls_has_localnet_port() predicate. This > makes the intent clearer and provides a single place to change > if the localnet port tracking ever moves to a different data > structure. > > No functional change. > > Assisted-by: Claude Opus 4.6, Claude Code > Signed-off-by: Dumitru Ceara <[email protected]> > --- > northd/en-multicast.c | 2 +- > northd/northd.c | 16 ++++++++-------- > northd/northd.h | 6 ++++++ > 3 files changed, 15 insertions(+), 9 deletions(-) > > diff --git a/northd/en-multicast.c b/northd/en-multicast.c > index a7dfd71c47..b2775516a9 100644 > --- a/northd/en-multicast.c > +++ b/northd/en-multicast.c > @@ -710,7 +710,7 @@ ovn_igmp_group_aggregate_ports(struct ovn_igmp_group > *igmp_group, > free(entry); > } > > - if (!vector_is_empty(&igmp_group->datapath->localnet_ports)) { > + if (ls_has_localnet_port(igmp_group->datapath)) { > ovn_multicast_add_ports(mcast_groups, igmp_group->datapath, > &igmp_group->mcgroup, > vector_get_array(&igmp_group->datapath->localnet_ports), > diff --git a/northd/northd.c b/northd/northd.c > index 0b52db6cf6..02c7e7e54e 100644 > --- a/northd/northd.c > +++ b/northd/northd.c > @@ -1788,7 +1788,7 @@ peer_needs_cr_port_creation(struct ovn_port *op) > { > if ((op->nbrp->n_gateway_chassis || op->nbrp->ha_chassis_group) > && vector_len(&op->od->l3dgw_ports) == 1 && op->peer && > op->peer->nbsp > - && vector_is_empty(&op->peer->od->localnet_ports)) { > + && !ls_has_localnet_port(op->peer->od)) { > return true; > } > > @@ -2837,7 +2837,7 @@ ovn_port_update_sbrec(struct ovsdb_idl_txn *ovnsb_txn, > smap_clone(&options, &op->nbsp->options); > > if (queue_id) { > - if (!vector_is_empty(&op->od->localnet_ports)) { > + if (ls_has_localnet_port(op->od)) { > struct ovn_port *port = > vector_get(&op->od->localnet_ports, > 0, struct ovn_port *); > const char *physical_network = smap_get( > @@ -3954,7 +3954,7 @@ should_add_router_port_garp(const struct ovn_port *op, > const char *chassis) > vector_len(&op->peer->od->l3dgw_ports)); > } > } > - } else if (chassis && !vector_is_empty(&op->od->localnet_ports)) { > + } else if (chassis && ls_has_localnet_port(op->od)) { > add_router_port_garp = true; > } > > @@ -6263,7 +6263,7 @@ build_lswitch_port_sec_op(struct ovn_port *op, struct > lflow_table *lflows, > WITH_IO_PORT(op->key), WITH_HINT(&op->nbsp->header_)); > > if (!lsp_is_localnet(op->nbsp) && > - vector_is_empty(&op->od->localnet_ports)) { > + !ls_has_localnet_port(op->od)) { > return; > } > > @@ -6277,7 +6277,7 @@ build_lswitch_port_sec_op(struct ovn_port *op, struct > lflow_table *lflows, > ds_cstr(match), ds_cstr(actions), op->lflow_ref, > WITH_IO_PORT(op->key), > WITH_HINT(&op->nbsp->header_)); > - } else if (!vector_is_empty(&op->od->localnet_ports)) { > + } else if (ls_has_localnet_port(op->od)) { > const struct ovn_port *lp = vector_get(&op->od->localnet_ports, > 0, > struct ovn_port *); > ds_put_format(match, "outport == %s && inport == %s", > @@ -10897,7 +10897,7 @@ build_lswitch_dhcp_options_and_response(struct > ovn_port *op, > } > > bool is_external = lsp_is_external(op->nbsp); > - if (is_external && (vector_is_empty(&op->od->localnet_ports) || > + if (is_external && (!ls_has_localnet_port(op->od) || > !op->nbsp->ha_chassis_group)) { > /* If it's an external port and there are no localnet ports > * and if it doesn't belong to an HA chassis group ignore it. */ > @@ -11322,7 +11322,7 @@ build_lswitch_ip_unicast_lookup(struct ovn_port *op, > > if (peer_lrp_is_centralized && > !vector_is_empty(&op->peer->od->l3dgw_ports) && > - !vector_is_empty(&op->od->localnet_ports)) { > + ls_has_localnet_port(op->od)) { > add_lrp_chassis_resident_check(op->peer, match); > } else if (op->cr_port) { > /* If the op has a chassis resident port, it means > @@ -17226,7 +17226,7 @@ build_lrouter_ipv4_ip_input(struct ovn_port *op, > > if (od_is_centralized(op->od) && > !vector_is_empty(&op->od->l3dgw_ports) && op->peer > - && !vector_is_empty(&op->peer->od->localnet_ports)) { > + && ls_has_localnet_port(op->peer->od)) { > add_lrp_chassis_resident_check(op, match); > } > > diff --git a/northd/northd.h b/northd/northd.h > index e86d39f9aa..80f8e76870 100644 > --- a/northd/northd.h > +++ b/northd/northd.h > @@ -507,6 +507,12 @@ ovn_datapath_is_stale(const struct ovn_datapath *od) > return !od->nbr && !od->nbs; > }; > > +static inline bool > +ls_has_localnet_port(const struct ovn_datapath *od) > +{ > + return !vector_is_empty(&od->localnet_ports); > +} > + > /* Pipeline stages. */ > #define PIPELINE_STAGES \ > /* Logical switch ingress stages. */ \ > -- > 2.53.0 > > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > LGTM
Acked-by: Mairtin O'Loingsigh <[email protected]> _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
