]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: fix FPM abort for unreach/prohibit routes
authorDuncan Eastoe <duncan.eastoe@att.com>
Mon, 28 Sep 2020 11:51:19 +0000 (12:51 +0100)
committerDuncan Eastoe <duncan.eastoe@att.com>
Wed, 30 Sep 2020 09:33:46 +0000 (10:33 +0100)
f4517a795d9b719b220fa9013810c1a234e69568 fixed an issue whereby
zebra would abort while building an update for a blackhole route.

The same issue, `assert(data_len)` failing in
`zfpm_build_route_updates()`, can be observed when building updates
for unreachable and prohibit routes.

To address this `netlink_route_info_fill()` is updated to not
indicate failure, due to lack of nexthops, for any blackhole routes.

Signed-off-by: Duncan Eastoe <duncan.eastoe@att.com>
(cherry picked from commit 94f7786375030e08063cdae5b4577edf26adb456)

zebra/zebra_fpm_netlink.c

index 0e3d99cfb6b1b12b0e08ad7f1705ff0f065cc2e8..01d2674ccf7b46f8b406f532e709c15eac46aa20 100644 (file)
@@ -338,10 +338,18 @@ static int netlink_route_info_fill(netlink_route_info_t *ri, int cmd,
                }
        }
 
-       /* If there is no useful nexthop then return. */
-       if (ri->rtm_type != RTN_BLACKHOLE && ri->num_nhs == 0) {
-               zfpm_debug("netlink_encode_route(): No useful nexthop.");
-               return 0;
+       if (ri->num_nhs == 0) {
+               switch (ri->rtm_type) {
+               case RTN_PROHIBIT:
+               case RTN_UNREACHABLE:
+               case RTN_BLACKHOLE:
+                       break;
+               default:
+                       /* If there is no useful nexthop then return. */
+                       zfpm_debug(
+                               "netlink_encode_route(): No useful nexthop.");
+                       return 0;
+               }
        }
 
        return 1;