From 2fceba1fa7dea4e5ca628273a5ab01e2abf32b2c Mon Sep 17 00:00:00 2001 From: Pat Ruddy Date: Fri, 18 Sep 2020 10:20:43 +0100 Subject: [PATCH] bgpd: add utility to check if a vrf is MPLS VPN 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 --- bgpd/bgp_mplsvpn.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/bgpd/bgp_mplsvpn.h b/bgpd/bgp_mplsvpn.h index df2544d608..91a073d5d7 100644 --- a/bgpd/bgp_mplsvpn.h +++ b/bgpd/bgp_mplsvpn.h @@ -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) { -- 2.39.5