]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: add utility to check if a vrf is MPLS VPN
authorPat Ruddy <pat@voltanet.io>
Fri, 18 Sep 2020 09:20:43 +0000 (10:20 +0100)
committerPat Ruddy <pat@voltanet.io>
Tue, 2 Feb 2021 09:37:05 +0000 (09:37 +0000)
If a vrf is exporting to a vpn table and/or importing to a vpn
table then it is assumed t be a MPLS VPN vrf.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
bgpd/bgp_mplsvpn.h

index df2544d608f7cd00d1c76ca4b81e92a6097a1a39..91a073d5d73c6f0cf0d894c32546a922a94ac468 100644 (file)
@@ -83,6 +83,21 @@ extern void vrf_import_from_vrf(struct bgp *to_bgp, struct bgp *from_bgp,
 void vrf_unimport_from_vrf(struct bgp *to_bgp, struct bgp *from_bgp,
                           afi_t afi, safi_t safi);
 
+static inline bool is_bgp_vrf_mplsvpn(struct bgp *bgp)
+{
+       afi_t afi;
+
+       if (bgp->inst_type == BGP_INSTANCE_TYPE_VRF)
+               for (afi = 0; afi < AFI_MAX; ++afi) {
+                       if (CHECK_FLAG(bgp->af_flags[afi][SAFI_UNICAST],
+                                      BGP_CONFIG_VRF_TO_MPLSVPN_EXPORT)
+                           || CHECK_FLAG(bgp->af_flags[afi][SAFI_UNICAST],
+                                         BGP_CONFIG_MPLSVPN_TO_VRF_IMPORT))
+                               return true;
+               }
+       return false;
+}
+
 static inline int vpn_leak_to_vpn_active(struct bgp *bgp_vrf, afi_t afi,
                                         const char **pmsg)
 {