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

Reply via email to