From 7f8c7d9166317e4e65f359d72b044a9d6dfd062c Mon Sep 17 00:00:00 2001 From: Hiroki Shirokura Date: Tue, 9 Feb 2021 05:26:22 +0000 Subject: [PATCH] bgpd: ignore nexthop validation for srv6-vpn Signed-off-by: Hiroki Shirokura --- bgpd/bgp_nht.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/bgpd/bgp_nht.c b/bgpd/bgp_nht.c index e94f63541d..f046235610 100644 --- a/bgpd/bgp_nht.c +++ b/bgpd/bgp_nht.c @@ -66,9 +66,20 @@ static int bgp_isvalid_nexthop(struct bgp_nexthop_cache *bnc) static int bgp_isvalid_labeled_nexthop(struct bgp_nexthop_cache *bnc) { + /* + * In the case of MPLS-VPN, the label is learned from LDP or other + * protocols, and nexthop tracking is enabled for the label. + * The value is recorded as BGP_NEXTHOP_LABELED_VALID. + * In the case of SRv6-VPN, we need to track the reachability to the + * SID (in other words, IPv6 address). As in MPLS, we need to record + * the value as BGP_NEXTHOP_SID_VALID. However, this function is + * currently not implemented, and this function assumes that all + * Transit routes for SRv6-VPN are valid. + */ return (bgp_zebra_num_connects() == 0 - || (bnc && CHECK_FLAG(bnc->flags, BGP_NEXTHOP_LABELED_VALID) - && bnc->nexthop_num > 0)); + || (bnc && bnc->nexthop_num > 0 + && (CHECK_FLAG(bnc->flags, BGP_NEXTHOP_LABELED_VALID) + || bnc->bgp->srv6_enabled))); } static void bgp_unlink_nexthop_check(struct bgp_nexthop_cache *bnc) -- 2.39.5