From 44681e9594dadd5c6d46c9118b2cfd8754b8f524 Mon Sep 17 00:00:00 2001 From: Duncan Eastoe Date: Mon, 28 Sep 2020 12:51:19 +0100 Subject: [PATCH] zebra: fix FPM abort for unreach/prohibit routes b0e9567ed162da708f8d0b3a3caf87cd03b62e96 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 (cherry picked from commit 94f7786375030e08063cdae5b4577edf26adb456) --- zebra/zebra_fpm_netlink.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/zebra/zebra_fpm_netlink.c b/zebra/zebra_fpm_netlink.c index 3e11d53b16..2c07413638 100644 --- a/zebra/zebra_fpm_netlink.c +++ b/zebra/zebra_fpm_netlink.c @@ -335,10 +335,18 @@ static int netlink_route_info_fill(struct netlink_route_info *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; -- 2.39.5