X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fmfib%2Fmfib_types.h;h=aea4a768a0bbb2e7e6d0f596c22461f3f7ecba83;hb=9e829a856fdf88b3ea5770048ea20dcd50d1b4eb;hp=2ab0f7d4fefe82578a5bcf62a6d111a39554500f;hpb=947ea6222dad1ef04595c34273e9231395aef443;p=vpp.git diff --git a/src/vnet/mfib/mfib_types.h b/src/vnet/mfib/mfib_types.h index 2ab0f7d4fef..aea4a768a0b 100644 --- a/src/vnet/mfib/mfib_types.h +++ b/src/vnet/mfib/mfib_types.h @@ -161,6 +161,7 @@ typedef enum mfib_itf_flags_t_ typedef enum mfib_source_t_ { MFIB_SOURCE_SPECIAL, + MFIB_SOURCE_6RD, MFIB_SOURCE_API, MFIB_SOURCE_CLI, MFIB_SOURCE_VXLAN, @@ -168,14 +169,16 @@ typedef enum mfib_source_t_ MFIB_SOURCE_SRv6, MFIB_SOURCE_GTPU, MFIB_SOURCE_VXLAN_GPE, - MFIB_SOURCE_RR, MFIB_SOURCE_GENEVE, MFIB_SOURCE_IGMP, + MFIB_SOURCE_VXLAN_GBP, + MFIB_SOURCE_RR, MFIB_SOURCE_DEFAULT_ROUTE, } mfib_source_t; #define MFIB_SOURCE_NAMES { \ [MFIB_SOURCE_SPECIAL] = "Special", \ + [MFIB_SOURCE_6RD] = "6RD", \ [MFIB_SOURCE_API] = "API", \ [MFIB_SOURCE_CLI] = "CLI", \ [MFIB_SOURCE_DHCP] = "DHCP", \ @@ -183,13 +186,20 @@ typedef enum mfib_source_t_ [MFIB_SOURCE_SRv6] = "SRv6", \ [MFIB_SOURCE_GTPU] = "GTPU", \ [MFIB_SOURCE_VXLAN_GPE] = "VXLAN-GPE", \ - [MFIB_SOURCE_RR] = "Recursive-resolution", \ [MFIB_SOURCE_GENEVE] = "Geneve", \ [MFIB_SOURCE_IGMP] = "IGMP", \ + [MFIB_SOURCE_VXLAN_GBP] = "VXLAN-GBP", \ + [MFIB_SOURCE_RR] = "Recursive-resolution", \ [MFIB_SOURCE_DEFAULT_ROUTE] = "Default Route", \ } -#define MFIB_N_SOURCES (MFIB_SOURCE_DEFAULT_ROUTE) +#define FOREACH_MFIB_SOURCE(_ms) \ + for (_ms = MFIB_SOURCE_SPECIAL; \ + _ms <= MFIB_SOURCE_DEFAULT_ROUTE; \ + _ms++) + +#define MFIB_N_SOURCES (MFIB_SOURCE_DEFAULT_ROUTE + 1) +#define MFIB_SOURCE_NONE (MFIB_SOURCE_DEFAULT_ROUTE + 1) /** * \brief Compare two prefixes for equality @@ -205,5 +215,20 @@ extern uword unformat_mfib_itf_flags(unformat_input_t * input, va_list * args); extern uword unformat_mfib_entry_flags(unformat_input_t * input, va_list * args); +/** + * \brief Compare two prefixes for covering relationship + * + * \return non-zero if the first prefix is a cover for the second + */ +extern int mfib_prefix_is_cover(const mfib_prefix_t *p1, + const mfib_prefix_t *p2); + +/** + * \brief Return true is the prefix is a host prefix + */ +extern int mfib_prefix_is_host(const mfib_prefix_t *p); + +extern fib_forward_chain_type_t mfib_forw_chain_type_from_dpo_proto(dpo_proto_t proto); +extern fib_forward_chain_type_t mfib_forw_chain_type_from_fib_proto(fib_protocol_t proto); #endif