On Tue, Dec 16, 2025 at 7:44 PM Mark Michelson via dev < [email protected]> wrote:
> The ovn_datapath_from_sbrec() function requires two hmaps to be passed > in. It needs the hmap of logical_switches and the hmap of > logical_routers. > > In many cases, there is only a single northbound type that we care to > try to find. In this commit, we add a new version of > ovn_datapath_from_sbrec() that takes a single hmap. > > Since there are several places in the code that passed NULL as one of > the hmap arguments to ovn_datapath_from_sbrec(), these have been > converted to use ovn_datapath_from_sbrec_() instead. > > Signed-off-by: Mark Michelson <[email protected]> > --- > northd/en-learned-route-sync.c | 8 ++++---- > northd/en-multicast.c | 3 +-- > northd/northd.c | 22 ++++++++++++++++++++-- > northd/northd.h | 3 +++ > 4 files changed, 28 insertions(+), 8 deletions(-) > > diff --git a/northd/en-learned-route-sync.c > b/northd/en-learned-route-sync.c > index f22aaa664..acefaef38 100644 > --- a/northd/en-learned-route-sync.c > +++ b/northd/en-learned-route-sync.c > @@ -149,8 +149,8 @@ parse_route_from_sbrec_route(struct hmap > *parsed_routes_out, > const struct hmap *lr_datapaths, > const struct sbrec_learned_route *route) > { > - const struct ovn_datapath *od = ovn_datapath_from_sbrec( > - NULL, lr_datapaths, route->datapath); > + const struct ovn_datapath *od = ovn_datapath_from_sbrec_( > + lr_datapaths, route->datapath); > > if (!od || ovn_datapath_is_stale(od)) { > return NULL; > @@ -239,8 +239,8 @@ find_learned_route(const struct sbrec_learned_route > *learned_route, > const struct ovn_datapaths *lr_datapaths, > const struct hmap *routes) > { > - const struct ovn_datapath *od = ovn_datapath_from_sbrec( > - NULL, &lr_datapaths->datapaths, learned_route->datapath); > + const struct ovn_datapath *od = ovn_datapath_from_sbrec_( > + &lr_datapaths->datapaths, learned_route->datapath); > if (!od) { > return NULL; > } > diff --git a/northd/en-multicast.c b/northd/en-multicast.c > index f63825c8d..a7dfd71c4 100644 > --- a/northd/en-multicast.c > +++ b/northd/en-multicast.c > @@ -277,8 +277,7 @@ build_mcast_groups(struct multicast_igmp_data *data, > } > > /* If the datapath value is stale, purge the group. */ > - od = ovn_datapath_from_sbrec(ls_datapaths, NULL, > - sb_igmp->datapath); > + od = ovn_datapath_from_sbrec_(ls_datapaths, sb_igmp->datapath); > > if (!od || ovn_datapath_is_stale(od)) { > sbrec_igmp_group_delete(sb_igmp); > diff --git a/northd/northd.c b/northd/northd.c > index c3c0780a3..686bb28f0 100644 > --- a/northd/northd.c > +++ b/northd/northd.c > @@ -627,6 +627,24 @@ ovn_datapath_find_by_key(struct hmap *datapaths, > uint32_t dp_key) > return NULL; > } > > +struct ovn_datapath * > +ovn_datapath_from_sbrec_(const struct hmap *datapaths, > + const struct sbrec_datapath_binding *sb) > +{ > + struct uuid key; > + > + if (!datapath_get_nb_uuid(sb, &key)) { > + return NULL; > + } > + > + struct ovn_datapath *od = ovn_datapath_find_(datapaths, &key); > + if (od && (od->sdp->sb_dp == sb)) { > + return od; > + } > + > + return NULL; > +} > + > struct ovn_datapath * > ovn_datapath_from_sbrec(const struct hmap *ls_datapaths, > const struct hmap *lr_datapaths, > @@ -2946,7 +2964,7 @@ cleanup_mac_bindings( > const struct sbrec_mac_binding *b; > SBREC_MAC_BINDING_TABLE_FOR_EACH_SAFE (b, sbrec_mac_binding_table) { > const struct ovn_datapath *od = > - ovn_datapath_from_sbrec(NULL, lr_datapaths, b->datapath); > + ovn_datapath_from_sbrec_(lr_datapaths, b->datapath); > > if (!od || ovn_datapath_is_stale(od) || > !ovn_port_find(lr_ports, b->logical_port)) { > @@ -20133,7 +20151,7 @@ build_ip_mcast(struct ovsdb_idl_txn *ovnsb_txn, > const struct sbrec_ip_multicast *sb; > > SBREC_IP_MULTICAST_TABLE_FOR_EACH_SAFE (sb, sbrec_ip_multicast_table) > { > - od = ovn_datapath_from_sbrec(ls_datapaths, NULL, sb->datapath); > + od = ovn_datapath_from_sbrec_(ls_datapaths, sb->datapath); > if (!od || ovn_datapath_is_stale(od)) { > sbrec_ip_multicast_delete(sb); > } > diff --git a/northd/northd.h b/northd/northd.h > index 2869ea97e..94950b822 100644 > --- a/northd/northd.h > +++ b/northd/northd.h > @@ -501,6 +501,9 @@ struct ovn_datapath *ovn_datapath_from_sbrec( > const struct hmap *ls_datapaths, const struct hmap *lr_datapaths, > const struct sbrec_datapath_binding *); > > +struct ovn_datapath *ovn_datapath_from_sbrec_( > + const struct hmap *datapaths, const struct sbrec_datapath_binding *); > + > static inline bool > ovn_datapath_is_stale(const struct ovn_datapath *od) > { > -- > 2.51.1 > > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > Hi Mark, thank you for the patch, I must say I'm not the biggest fan of the second function just ending with underscore, but I don't have a better idea. Acked-by: Ales Musil <[email protected]> Regards, Ales _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
