50 u32 n_left_from, *from, *to_next;
57 while (n_left_from > 0)
63 while (n_left_from > 0 && n_left_to_next > 0)
65 u32 next0, bi0, sw_if_index0;
87 L2INPUT_FEAT_GBP_NULL_CLASSIFY);
98 L2INPUT_FEAT_GBP_SRC_CLASSIFY);
159 to_next, n_left_to_next,
217 .name =
"gbp-null-classify",
218 .vector_size =
sizeof (
u32),
227 .name =
"gbp-src-classify",
228 .vector_size =
sizeof (
u32),
237 .name =
"ip4-gbp-src-classify",
238 .vector_size =
sizeof (
u32),
250 .name =
"ip6-gbp-src-classify",
251 .vector_size =
sizeof (
u32),
264 .arc_name =
"ip4-unicast",
265 .node_name =
"ip4-gbp-src-classify",
270 .arc_name =
"ip6-unicast",
271 .node_name =
"ip6-gbp-src-classify",
300 s =
format (s,
"sclass:%d lb:%d src:%U",
324 u32 n_left_from, *from, *to_next;
331 while (n_left_from > 0)
337 while (n_left_from > 0 && n_left_to_next > 0)
339 u32 bi0, sw_if_index0, fib_index0, lbi0;
345 const ip6_address_t *ip6_0;
417 L2INPUT_FEAT_GBP_LPM_ANON_CLASSIFY);
437 if (~0 == fib_index0)
458 L2INPUT_FEAT_GBP_LPM_CLASSIFY);
512 to_next, n_left_to_next,
556 .name =
"ip4-gbp-lpm-classify",
557 .vector_size =
sizeof (
u32),
569 .name =
"ip6-gbp-lpm-classify",
570 .vector_size =
sizeof (
u32),
582 .name =
"l2-gbp-lpm-classify",
583 .vector_size =
sizeof (
u32),
595 .name =
"l2-gbp-lpm-anon-classify",
596 .vector_size =
sizeof (
u32),
609 .arc_name =
"ip4-unicast",
610 .node_name =
"ip4-gbp-lpm-classify",
615 .arc_name =
"ip6-unicast",
616 .node_name =
"ip6-gbp-lpm-classify",
u32 flags
buffer flags: VLIB_BUFFER_FREE_LIST_INDEX_MASK: bits used to store free list index, VLIB_BUFFER_IS_TRACED: trace this buffer.
static vlib_cli_command_t trace
(constructor) VLIB_CLI_COMMAND (trace)
u32 gef_fib_index
FIB index the EP is in.
A Group Based Policy Endpoint.
vlib_node_registration_t gbp_ip4_lpm_classify_node
(constructor) VLIB_REGISTER_NODE (gbp_ip4_lpm_classify_node)
gbp_endpoint_fwd_t ge_fwd
enum gbp_lpm_classify_next_t_ gbp_lpm_classify_next_t
u32 fib_table_get_index_for_sw_if_index(fib_protocol_t proto, u32 sw_if_index)
Get the index of the FIB bound to the interface.
gbp_src_classify_main_t gbp_src_classify_main
u32 index_t
A Data-Path Object is an object that represents actions that are applied to packets are they are swit...
vlib_node_registration_t gbp_null_classify_node
(constructor) VLIB_REGISTER_NODE (gbp_null_classify_node)
static uword gbp_classify_inline(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, gbp_src_classify_type_t type, dpo_proto_t dproto)
#define VLIB_NODE_FN(node)
struct gbp_classify_trace_t_ gbp_classify_trace_t
per-packet trace data
static u32 vnet_l2_feature_next(vlib_buffer_t *b, u32 *next_nodes, u32 feat_bit)
Return the graph node index for the feature corresponding to the next set bit after clearing the curr...
static_always_inline gbp_endpoint_t * gbp_endpoint_find_ip4(const ip4_address_t *ip, u32 fib_index)
vlib_node_registration_t gbp_ip4_src_classify_node
(constructor) VLIB_REGISTER_NODE (gbp_ip4_src_classify_node)
u32 gx_fib_index[DPO_PROTO_NUM]
cached FIB indices from the RD
static_always_inline gbp_endpoint_t * gbp_endpoint_find_mac(const u8 *mac, u32 bd_index)
A GBP recirculation interface representation Thes interfaces join Bridge domains that are internal to...
enum dpo_proto_t_ dpo_proto_t
Data path protocol.
vlib_node_registration_t gbp_l2_lpm_classify_node
(constructor) VLIB_REGISTER_NODE (gbp_l2_lpm_classify_node)
vl_api_fib_path_type_t type
u32 gr_fib_index[DPO_PROTO_NUM]
FIB indices the EPG is mapped to.
vlib_node_registration_t gbp_l2_lpm_anon_classify_node
(constructor) VLIB_REGISTER_NODE (gbp_l2_lpm_anon_classify_node)
static gbp_ext_itf_t * gbp_ext_itf_get(u32 sw_if_index)
static void * vlib_buffer_get_current(vlib_buffer_t *b)
Get pointer to current data to process.
vl_api_address_union_t src_address
#define vlib_validate_buffer_enqueue_x1(vm, node, next_index, to_next, n_left_to_next, bi0, next0)
Finish enqueueing one buffer forward in the graph.
sclass_t gef_sclass
Endpoint Group's sclass.
#define vlib_get_next_frame(vm, node, next_index, vectors, n_vectors_left)
Get pointer to next frame vector data by (vlib_node_runtime_t, next_index).
An external interface maps directly to an oflex L3ExternalInterface.
format_function_t format_ip46_address
static_always_inline gbp_endpoint_t * gbp_endpoint_find_ip6(const ip6_address_t *ip, u32 fib_index)
enum gbp_src_classify_type_t_ gbp_src_classify_type_t
#define VLIB_REGISTER_NODE(x,...)
static gbp_recirc_t * gbp_recirc_get(u32 sw_if_index)
Grouping of global data for the GBP source EPG classification feature.
static_always_inline void vnet_feature_next(u32 *next0, vlib_buffer_t *b0)
u32 l2_input_feat_next[GBP_SRC_N_CLASSIFY][32]
Next nodes for L2 output features.
static_always_inline const gbp_policy_dpo_t * gbp_classify_get_gpd(const ip4_address_t *ip4, const ip6_address_t *ip6, const u32 fib_index)
void vlib_put_next_frame(vlib_main_t *vm, vlib_node_runtime_t *r, u32 next_index, u32 n_vectors_left)
Release pointer to next frame vector data.
VNET_FEATURE_INIT(gbp_ip4_src_classify_feat_node, static)
sclass_t gpd_sclass
SClass.
vlib_main_t vlib_node_runtime_t * node
struct gbp_lpm_classify_trace_t_ gbp_lpm_classify_trace_t
per-packet trace data
vlib_node_registration_t gbp_src_classify_node
(constructor) VLIB_REGISTER_NODE (gbp_src_classify_node)
#define VNET_FEATURES(...)
static uword gbp_lpm_classify_inline(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, const dpo_proto_t dproto, const enum gbp_lpm_type type)
vlib_main_t vlib_node_runtime_t vlib_frame_t * frame
VLIB buffer representation.
static void * vlib_frame_vector_args(vlib_frame_t *f)
Get pointer to frame vector data.
static_always_inline dpo_proto_t gbp_classify_get_ip_address(const ethernet_header_t *eh0, const ip4_address_t **ip4, const ip6_address_t **ip6, const enum gbp_classify_get_ip_way way)
vlib_node_registration_t gbp_ip6_lpm_classify_node
(constructor) VLIB_REGISTER_NODE (gbp_ip6_lpm_classify_node)
vlib_node_registration_t gbp_ip6_src_classify_node
(constructor) VLIB_REGISTER_NODE (gbp_ip6_src_classify_node)
void * vlib_add_trace(vlib_main_t *vm, vlib_node_runtime_t *r, vlib_buffer_t *b, u32 n_data_bytes)
static u8 * format_gbp_lpm_classify_trace(u8 *s, va_list *args)
static vlib_buffer_t * vlib_get_buffer(vlib_main_t *vm, u32 buffer_index)
Translate buffer index into buffer pointer.
static u8 * format_gbp_classify_trace(u8 *s, va_list *args)