summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroki Shirokura <slank.dev@gmail.com>2021-02-09 05:26:22 +0000
committerMark Stapp <mjs@voltanet.io>2021-06-02 10:24:48 -0400
commit7f8c7d9166317e4e65f359d72b044a9d6dfd062c (patch)
tree7bf59d09cf868a59a60ab081eb798d276148fb9d
parent3a0220e46a8ed0e0cbf80c42cbff7ede6846df9d (diff)
bgpd: ignore nexthop validation for srv6-vpn
Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
-rw-r--r--bgpd/bgp_nht.c15
1 files 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)