On 9/17/25 2:28 PM, Ales Musil via dev wrote: > On Mon, Sep 15, 2025 at 3:16 PM Lucas Vargas Dias via dev < > ovs-dev@openvswitch.org> wrote: > >> If logical router has ECMP for a same prefix, northd tries to >> adversited N times by the same logical router port, insert in >> sbrec_advertised_route table fails because all fields of >> sbrec_advertised_route are equal. >> To fix it, just add one time the route to be advertised in the >> sync routes. >> >> Fixes: f2deb24c5c43 ("northd: Sync Advertised_Route to sb.") >> Signed-off-by: Lucas Vargas Dias <lucas.vd...@luizalabs.com> >> ---
Hi Lucas, Ales, Thanks for the patch and review! >> northd/en-advertised-route-sync.c | 11 ++++++++++- >> tests/ovn-northd.at | 9 +++++++++ >> 2 files changed, 19 insertions(+), 1 deletion(-) >> >> diff --git a/northd/en-advertised-route-sync.c >> b/northd/en-advertised-route-sync.c >> index 35def9d22..3dd4d0581 100644 >> --- a/northd/en-advertised-route-sync.c >> +++ b/northd/en-advertised-route-sync.c >> @@ -757,8 +757,17 @@ advertised_route_table_sync( >> advertise_route_track_od(data, route->od, route->tracked_port, >> route->source); >> >> + const struct sbrec_port_binding *tracked_port = >> + route->tracked_port ? route->tracked_port->sb : NULL; >> + char *ip_prefix = normalize_v46_prefix(&route->prefix, >> route->plen); >> + if (ar_entry_find(&sync_routes,route->od->sdp->sb_dp, Nit: missing space before the second argument. >> + route->out_port->sb, ip_prefix, >> + tracked_port)) { >> + free(ip_prefix); >> + continue; >> + } >> ar_entry_add_nocopy(&sync_routes, route->od, route->out_port, >> - normalize_v46_prefix(&route->prefix, >> route->plen), >> + ip_prefix, >> route->tracked_port, >> route->source); >> } >> diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at >> index c9e998129..cae20aa1a 100644 >> --- a/tests/ovn-northd.at >> +++ b/tests/ovn-northd.at >> @@ -15095,6 +15095,15 @@ check_row_count Advertised_Route 3 >> check_row_count Advertised_Route 2 logical_port=$pb >> check_row_count Advertised_Route 1 logical_port=$pb ip_prefix= >> 192.168.0.0/24 >> >> +# Adding two statics routes adds none additional entry. Nit: I'd change "two statics routes" to "two static ECMP routes adds no ...". >> +check ovn-nbctl --wait=sb lr-route-del lr0 192.168.0.0/24 10.0.0.10 >> +check ovn-nbctl --wait=sb --ecmp lr-route-add lr0 192.168.0.0/24 >> 10.0.0.10 >> +check ovn-nbctl --wait=sb --ecmp lr-route-add lr0 192.168.0.0/24 >> 10.0.0.11 >> + >> +check_row_count Advertised_Route 3 >> +check_row_count Advertised_Route 2 logical_port=$pb >> +check_row_count Advertised_Route 1 logical_port=$pb ip_prefix= >> 192.168.0.0/24 >> + >> # Adding an ipv6 LRP adds an addition route entry. >> check ovn-nbctl --wait=sb lrp-add lr0 lr0-sw2 00:00:00:00:ff:03 >> 2001:db8::1/64 fe80::1/64 >> pb3=$(fetch_column port_binding _uuid logical_port=lr0-sw2) >> -- >> 2.34.1 >> > Looks good to me, thanks. > > Acked-by: Ales Musil <amu...@redhat.com> I took care of the small nits I had above and applied this fix to main and to all branches down to 25.03. Regards, Dumitru _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev