]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: ignore nexthop validation for srv6-vpn
authorHiroki Shirokura <slank.dev@gmail.com>
Tue, 9 Feb 2021 05:26:22 +0000 (05:26 +0000)
committerMark Stapp <mjs@voltanet.io>
Wed, 2 Jun 2021 14:24:48 +0000 (10:24 -0400)
Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
bgpd/bgp_nht.c

index e94f63541d9790c470ff6e0ea323988273269328..f046235610b5758be498ac960eef4b5f12ec2b3b 100644 (file)
@@ -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)