16 #ifndef __MFIB_TYPES_H__ 17 #define __MFIB_TYPES_H__ 82 #define FOR_EACH_MFIB_ATTRIBUTE(_item) \ 83 for (_item = MFIB_ENTRY_ATTRIBUTE_FIRST; \ 84 _item <= MFIB_ENTRY_ATTRIBUTE_LAST; \ 87 #define MFIB_ENTRY_NAMES_SHORT { \ 88 [MFIB_ENTRY_SIGNAL] = "S", \ 89 [MFIB_ENTRY_CONNECTED] = "C", \ 90 [MFIB_ENTRY_DROP] = "D", \ 91 [MFIB_ENTRY_ACCEPT_ALL_ITF] = "AA", \ 92 [MFIB_ENTRY_INHERIT_ACCEPT] = "IA", \ 93 [MFIB_ENTRY_EXCLUSIVE] = "E", \ 96 #define MFIB_ENTRY_NAMES_LONG { \ 97 [MFIB_ENTRY_SIGNAL] = "Signal", \ 98 [MFIB_ENTRY_CONNECTED] = "Connected", \ 99 [MFIB_ENTRY_DROP] = "Drop", \ 100 [MFIB_ENTRY_ACCEPT_ALL_ITF] = "Accept-all-itf", \ 101 [MFIB_ENTRY_INHERIT_ACCEPT] = "Inherit-Accept", \ 102 [MFIB_ENTRY_EXCLUSIVE] = "Exclusive", \ 127 #define FOR_EACH_MFIB_ITF_ATTRIBUTE(_item) \ 128 for (_item = MFIB_ITF_ATTRIBUTE_FIRST; \ 129 _item <= MFIB_ITF_ATTRIBUTE_LAST; \ 132 #define MFIB_ITF_NAMES_SHORT { \ 133 [MFIB_ITF_NEGATE_SIGNAL] = "NS", \ 134 [MFIB_ITF_ACCEPT] = "A", \ 135 [MFIB_ITF_FORWARD] = "F", \ 136 [MFIB_ITF_SIGNAL_PRESENT] = "SP", \ 137 [MFIB_ITF_DONT_PRESERVE] = "DP", \ 140 #define MFIB_ITF_NAMES_LONG { \ 141 [MFIB_ITF_NEGATE_SIGNAL] = "Negate-Signal", \ 142 [MFIB_ITF_ACCEPT] = "Accept", \ 143 [MFIB_ITF_FORWARD] = "Forward", \ 144 [MFIB_ITF_SIGNAL_PRESENT] = "Signal-Present", \ 145 [MFIB_ITF_DONT_PRESERVE] = "Don't-Preserve", \ 180 #define MFIB_SOURCE_NAMES { \ 181 [MFIB_SOURCE_SPECIAL] = "Special", \ 182 [MFIB_SOURCE_6RD] = "6RD", \ 183 [MFIB_SOURCE_API] = "API", \ 184 [MFIB_SOURCE_CLI] = "CLI", \ 185 [MFIB_SOURCE_DHCP] = "DHCP", \ 186 [MFIB_SOURCE_VXLAN] = "VXLAN", \ 187 [MFIB_SOURCE_SRv6] = "SRv6", \ 188 [MFIB_SOURCE_GTPU] = "GTPU", \ 189 [MFIB_SOURCE_VXLAN_GPE] = "VXLAN-GPE", \ 190 [MFIB_SOURCE_GENEVE] = "Geneve", \ 191 [MFIB_SOURCE_IGMP] = "IGMP", \ 192 [MFIB_SOURCE_VXLAN_GBP] = "VXLAN-GBP", \ 193 [MFIB_SOURCE_PLUGIN_LOW] = "plugin-low", \ 194 [MFIB_SOURCE_RR] = "Recursive-resolution", \ 195 [MFIB_SOURCE_DEFAULT_ROUTE] = "Default Route", \ 198 #define FOREACH_MFIB_SOURCE(_ms) \ 199 for (_ms = MFIB_SOURCE_SPECIAL; \ 200 _ms <= MFIB_SOURCE_DEFAULT_ROUTE; \ 203 #define MFIB_N_SOURCES (MFIB_SOURCE_DEFAULT_ROUTE + 1) 204 #define MFIB_SOURCE_NONE (MFIB_SOURCE_DEFAULT_ROUTE + 1)
ip46_address_t fp_src_addr
enum mfib_entry_flags_t_ mfib_entry_flags_t
Exclusive - like its unicast counterpart.
The control planes needs packets mathing this entry to generate a signal.
The control plane needs to be informed of coneected sources.
u8 * format_mfib_itf_flags(u8 *s, va_list *args)
enum fib_protocol_t_ fib_protocol_t
Protocol Type.
enum mfib_source_t_ mfib_source_t
Possible [control plane] sources of MFIB entries.
enum mfib_entry_attribute_t_ mfib_entry_attribute_t
uword unformat_mfib_itf_flags(unformat_input_t *input, va_list *args)
enum dpo_proto_t_ dpo_proto_t
Data path protocol.
fib_forward_chain_type_t mfib_forw_chain_type_from_dpo_proto(dpo_proto_t proto)
Drop all traffic to this route.
mfib_source_t_
Possible [control plane] sources of MFIB entries.
int mfib_prefix_is_cover(const mfib_prefix_t *p1, const mfib_prefix_t *p2)
Compare two prefixes for covering relationship.
u8 * format_mfib_prefix(u8 *s, va_list *args)
enum mfib_itf_attribute_t_ mfib_itf_attribute_t
Aggregate type for a prefix.
u8 * format_mfib_entry_flags(u8 *s, va_list *args)
enum fib_forward_chain_type_t_ fib_forward_chain_type_t
FIB output chain type.
int mfib_prefix_is_host(const mfib_prefix_t *p)
Return true is the prefix is a host prefix.
fib_protocol_t fp_proto
protocol type
enum mfib_itf_flags_t_ mfib_itf_flags_t
Accept packets from any incpoming interface Use with extreme caution.
fib_forward_chain_type_t mfib_forw_chain_type_from_fib_proto(fib_protocol_t proto)
struct mfib_prefix_t_ mfib_prefix_t
Aggregate type for a prefix.
u16 fp_len
The mask length.
int mfib_prefix_cmp(const mfib_prefix_t *p1, const mfib_prefix_t *p2)
Compare two prefixes for equality.
uword unformat_mfib_entry_flags(unformat_input_t *input, va_list *args)
ip46_address_t fp_grp_addr
The address type is not deriveable from the fp_addr member.