]> git.proxmox.com Git - mirror_frr.git/commitdiff
zebra: Fix distance being set incorrectly on kernel offload update
authorDonald Sharp <sharpd@nvidia.com>
Thu, 5 Jan 2023 19:23:51 +0000 (14:23 -0500)
committerDonald Sharp <sharpd@nvidia.com>
Thu, 5 Jan 2023 19:31:36 +0000 (14:31 -0500)
When we are notified about the kernel about a route being offloaded
or not correctly set the distance.

Ticket: CM-33097
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
zebra/zebra_rib.c

index 9551f26d8009ce56c25daf01f0cd4dc792e5840f..03f2591cfe662fddea3a2e8fd785f637d74d6f58 100644 (file)
@@ -2711,10 +2711,6 @@ static void process_subq_early_route_add(struct zebra_early_route *ere)
        if (ere->src_p_provided)
                apply_mask_ipv6(&ere->src_p);
 
-       /* Set default distance by route type. */
-       if (re->distance == 0)
-               re->distance = route_distance(re->type);
-
        /* Lookup route node.*/
        rn = srcdest_rnode_get(table, &ere->p,
                               ere->src_p_provided ? &ere->src_p : NULL);
@@ -2761,6 +2757,14 @@ static void process_subq_early_route_add(struct zebra_early_route *ere)
                }
        }
 
+       /* Set default distance by route type. */
+       if (re->distance == 0) {
+               if (same && !zebra_router_notify_on_ack())
+                       re->distance = same->distance;
+               else
+                       re->distance = route_distance(re->type);
+       }
+
        /* If this route is kernel/connected route, notify the dataplane. */
        if (RIB_SYSTEM_ROUTE(re)) {
                /* Notify dataplane */