diff options
Diffstat (limited to 'zebra/zebra_vrf.h')
| -rw-r--r-- | zebra/zebra_vrf.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/zebra/zebra_vrf.h b/zebra/zebra_vrf.h index b8664f4ec7..a39d74b08b 100644 --- a/zebra/zebra_vrf.h +++ b/zebra/zebra_vrf.h @@ -22,6 +22,8 @@ #if !defined(__ZEBRA_VRF_H__) #define __ZEBRA_VRF_H__ +#include "vxlan.h" + #include <zebra/zebra_ns.h> #include <zebra/zebra_pw.h> #include <lib/vxlan.h> @@ -32,6 +34,11 @@ typedef struct mpls_srgb_t_ { uint32_t end_label; } mpls_srgb_t; +struct zebra_rmap { + char *name; + struct route_map *map; +}; + /* Routing table instance. */ struct zebra_vrf { /* Back pointer */ @@ -92,6 +99,9 @@ struct zebra_vrf { struct zebra_pw_head pseudowires; struct zebra_static_pw_head static_pseudowires; + struct zebra_rmap proto_rm[AFI_MAX][ZEBRA_ROUTE_MAX + 1]; + struct zebra_rmap nht_rm[AFI_MAX][ZEBRA_ROUTE_MAX + 1]; + /* MPLS processing flags */ uint16_t mpls_flags; #define MPLS_FLAG_SCHEDULE_LSPS (1 << 0) @@ -115,6 +125,11 @@ struct zebra_vrf { /* l3-vni info */ vni_t l3vni; + /* + * Flooding mechanism for BUM packets for VxLAN-EVPN. + */ + enum vxlan_flood_control vxlan_flood_ctrl; + /* Route Installs */ uint64_t installs; uint64_t removals; @@ -122,6 +137,17 @@ struct zebra_vrf { uint64_t lsp_installs; uint64_t lsp_removals; }; +#define PROTO_RM_NAME(zvrf, afi, rtype) zvrf->proto_rm[afi][rtype].name +#define NHT_RM_NAME(zvrf, afi, rtype) zvrf->nht_rm[afi][rtype].name +#define PROTO_RM_MAP(zvrf, afi, rtype) zvrf->proto_rm[afi][rtype].map +#define NHT_RM_MAP(zvrf, afi, rtype) zvrf->nht_rm[afi][rtype].map + +/* + * special macro to allow us to get the correct zebra_vrf + */ +#define ZEBRA_DECLVAR_CONTEXT(A, B) \ + struct vrf *A = VTY_GET_CONTEXT(vrf); \ + struct zebra_vrf *B = (A) ? A->info : vrf_info_lookup(VRF_DEFAULT) static inline vrf_id_t zvrf_id(struct zebra_vrf *zvrf) { |
