diff options
author | Mitesh Kanjariya <mitesh@cumulusnetworks.com> | 2018-02-27 11:00:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-27 11:00:10 +0100 |
commit | 83ea2eb026c7054fdfd4ead9255b8a58c97001b7 (patch) | |
tree | f35baabfd159f334e981c4632aa91876909cfce2 /bgpd/bgp_evpn_private.h | |
parent | bgpd: remove show bgp l2vpn evpn route vrf cmd (diff) | |
parent | Merge pull request #1736 from mkanjari/type5-with-asymm (diff) | |
download | frr-83ea2eb026c7054fdfd4ead9255b8a58c97001b7.tar.xz frr-83ea2eb026c7054fdfd4ead9255b8a58c97001b7.zip |
Merge branch 'master' into evpn-bugs
Diffstat (limited to 'bgpd/bgp_evpn_private.h')
-rw-r--r-- | bgpd/bgp_evpn_private.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/bgpd/bgp_evpn_private.h b/bgpd/bgp_evpn_private.h index 54e9b014c..5d59ed5ae 100644 --- a/bgpd/bgp_evpn_private.h +++ b/bgpd/bgp_evpn_private.h @@ -61,6 +61,8 @@ struct bgpevpn { #define VNI_FLAG_RD_CFGD 0x4 /* RD is user configured. */ #define VNI_FLAG_IMPRT_CFGD 0x8 /* Import RT is user configured */ #define VNI_FLAG_EXPRT_CFGD 0x10 /* Export RT is user configured */ +#define VNI_FLAG_USE_TWO_LABELS 0x20 /* Attach both L2-VNI and L3-VNI if + needed for this VPN */ struct bgp *bgp_vrf; /* back pointer to the vrf instance */ @@ -166,9 +168,10 @@ static inline void bgpevpn_unlink_from_l3vni(struct bgpevpn *vpn) /* bail if vpn is not associated to bgp_vrf */ if (!vpn->bgp_vrf) return; - + + UNSET_FLAG(vpn->flags, VNI_FLAG_USE_TWO_LABELS); listnode_delete(vpn->bgp_vrf->l2vnis, vpn); - + /* remove the backpointer to the vrf instance */ vpn->bgp_vrf = NULL; } @@ -182,12 +185,17 @@ static inline void bgpevpn_link_to_l3vni(struct bgpevpn *vpn) return; bgp_vrf = bgp_lookup_by_vrf_id(vpn->tenant_vrf_id); - if (!bgp_vrf || !bgp_vrf->l2vnis) + if (!bgp_vrf) return; /* associate the vpn to the bgp_vrf instance */ vpn->bgp_vrf = bgp_vrf; listnode_add_sort(bgp_vrf->l2vnis, vpn); + + /* check if we are advertising two labels for this vpn */ + if (!CHECK_FLAG(bgp_vrf->vrf_flags, + BGP_VRF_L3VNI_PREFIX_ROUTES_ONLY)) + SET_FLAG(vpn->flags, VNI_FLAG_USE_TWO_LABELS); } static inline int is_vni_configured(struct bgpevpn *vpn) |