From a0b6872efbf0a965292616503a2aad23d5a644dc Mon Sep 17 00:00:00 2001 From: Arvindsrinivasan Lakshmi Narasimhan Date: Fri, 1 Sep 2023 18:54:00 +0000 Subject: [PATCH] patch fix to ignore dup nh in netlink msg Signed-off-by: Arvindsrinivasan Lakshmi Narasimhan --- ...icated-nexthops-when-sending-fpm-msg.patch | 32 +++++++++++++++++++ src/sonic-frr/patch/series | 1 + 2 files changed, 33 insertions(+) create mode 100644 src/sonic-frr/patch/0030-zebra-remove-duplicated-nexthops-when-sending-fpm-msg.patch diff --git a/src/sonic-frr/patch/0030-zebra-remove-duplicated-nexthops-when-sending-fpm-msg.patch b/src/sonic-frr/patch/0030-zebra-remove-duplicated-nexthops-when-sending-fpm-msg.patch new file mode 100644 index 000000000000..fc8ec74c449f --- /dev/null +++ b/src/sonic-frr/patch/0030-zebra-remove-duplicated-nexthops-when-sending-fpm-msg.patch @@ -0,0 +1,32 @@ +From 4aa1aace3e32039b668c04cd682b01e0397144ea Mon Sep 17 00:00:00 2001 + +From: Arvindsrinivasan Lakshmi Narasimhan + +From: =?UTF-8?q?=E6=81=AD=E7=AE=80?= +Date: Wed, 26 Jul 2023 09:51:51 +0800 +Subject: [PATCH] zebra: remove duplicated nexthops when sending fpm msg +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When zebra send msg to fpm client, it doesn't handle duplicated nexthops especially, which means if zebra has a route with NUM1 recursive nexthops, each resolved to the same NUM2 connected nexthops, it will send to fpm client a route with NUM1*NUM2 nexthops. But actually there are only NUM2 useful nexthops, the left NUM1*NUM2-NUM2 nexthops are all duplicated nexthops. By the way, zebra has duplicated nexthop remove logic when sending msg to kernel. +Add duplicated nexthop remove logic to zebra when sending msg to fpm client. + +Signed-off-by: 恭简 +--- + zebra/zebra_fpm_netlink.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/zebra/zebra_fpm_netlink.c b/zebra/zebra_fpm_netlink.c +index d6c875a7e..6f0fdce2a 100644 +--- a/zebra/zebra_fpm_netlink.c ++++ b/zebra/zebra_fpm_netlink.c +@@ -322,6 +322,8 @@ static int netlink_route_info_fill(struct netlink_route_info *ri, int cmd, + + if (CHECK_FLAG(nexthop->flags, NEXTHOP_FLAG_RECURSIVE)) + continue; ++ if (CHECK_FLAG(nexthop->flags, NEXTHOP_FLAG_DUPLICATE)) ++ continue; + + if (nexthop->type == NEXTHOP_TYPE_BLACKHOLE) { + switch (nexthop->bh_type) { diff --git a/src/sonic-frr/patch/series b/src/sonic-frr/patch/series index b9b3c9eb3299..18988065f002 100644 --- a/src/sonic-frr/patch/series +++ b/src/sonic-frr/patch/series @@ -14,3 +14,4 @@ Disable-ipv6-src-address-test-in-pceplib.patch 0027-bgpd-Ensure-FRR-has-enough-data-to-read-in-peek_for_as4_capability-and-bgp_open_option_parse.patch 0028-bgpd-Ensure-that-bgp-open-message-stream-has-enough-data-to-read.patch 0029-bgpd-Change-log-level-for-graceful-restart-events.patch +0030-zebra-remove-duplicated-nexthops-when-sending-fpm-msg.patch