]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: backpressure - log error for evpn when route install to zebra fails.
authorRajasekar Raja <rajasekarr@nvidia.com>
Fri, 19 Jul 2024 05:23:23 +0000 (22:23 -0700)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 25 Jul 2024 18:15:20 +0000 (21:15 +0300)
log error for evpn in case route install to zebra fails.

Ticket :#3992392

Signed-off-by: Rajasekar Raja <rajasekarr@nvidia.com>
bgpd/bgp_zebra.c

index 6f8f4610ca9a571ec8a87b4b3a4b72b79eaf48b1..c4a55348eaf77c6a0753c6b127fbf13726d86c82 100644 (file)
@@ -1789,6 +1789,7 @@ static void bgp_handle_route_announcements_to_zebra(struct event *e)
        struct bgp_table *table = NULL;
        enum zclient_send_status status = ZCLIENT_SEND_SUCCESS;
        bool install;
+       const struct prefix_evpn *evp = NULL;
 
        while (count < ZEBRA_ANNOUNCEMENTS_LIMIT) {
                dest = zebra_announce_pop(&bm->zebra_announce_head);
@@ -1798,8 +1799,11 @@ static void bgp_handle_route_announcements_to_zebra(struct event *e)
 
                table = bgp_dest_table(dest);
                install = CHECK_FLAG(dest->flags, BGP_NODE_SCHEDULE_FOR_INSTALL);
-               if (table->afi == AFI_L2VPN && table->safi == SAFI_EVPN)
+               if (table->afi == AFI_L2VPN && table->safi == SAFI_EVPN) {
                        is_evpn = true;
+                       evp = (const struct prefix_evpn *)bgp_dest_get_prefix(
+                               dest);
+               }
 
                if (BGP_DEBUG(zebra, ZEBRA))
                        zlog_debug("BGP %s route %pBD(%s) with dest %p and flags 0x%x to zebra",
@@ -1836,6 +1840,17 @@ static void bgp_handle_route_announcements_to_zebra(struct event *e)
                        UNSET_FLAG(dest->flags, BGP_NODE_SCHEDULE_FOR_DELETE);
                }
 
+               if (is_evpn && status == ZCLIENT_SEND_FAILURE)
+                       flog_err(EC_BGP_EVPN_FAIL,
+                                "%s (%u): Failed to %s EVPN %pFX %s route in VNI %u",
+                                vrf_id_to_name(table->bgp->vrf_id),
+                                table->bgp->vrf_id,
+                                install ? "install" : "uninstall", evp,
+                                evp->prefix.route_type == BGP_EVPN_MAC_IP_ROUTE
+                                        ? "MACIP"
+                                        : "IMET",
+                                dest->za_vpn->vni);
+
                bgp_path_info_unlock(dest->za_bgp_pi);
                dest->za_bgp_pi = NULL;
                dest->za_vpn = NULL;