return s;
}
-static uword
-lookup_ip4_dst (vlib_main_t * vm,
+VLIB_NODE_FN (lookup_ip4_dst_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * from_frame)
{
}
VLIB_REGISTER_NODE (lookup_ip4_dst_node) = {
- .function = lookup_ip4_dst,
.name = "lookup-ip4-dst",
.vector_size = sizeof (u32),
.sibling_of = "ip4-lookup",
.format_trace = format_lookup_trace,
};
-VLIB_NODE_FUNCTION_MULTIARCH (lookup_ip4_dst_node, lookup_ip4_dst)
-static uword
-lookup_ip4_dst_itf (vlib_main_t * vm,
+VLIB_NODE_FN (lookup_ip4_dst_itf_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * from_frame)
{
}
VLIB_REGISTER_NODE (lookup_ip4_dst_itf_node) = {
- .function = lookup_ip4_dst_itf,
.name = "lookup-ip4-dst-itf",
.vector_size = sizeof (u32),
.sibling_of = "ip4-lookup",
.format_trace = format_lookup_trace,
};
-VLIB_NODE_FUNCTION_MULTIARCH (lookup_ip4_dst_itf_node, lookup_ip4_dst_itf)
-static uword
-lookup_ip4_src (vlib_main_t * vm,
+VLIB_NODE_FN (lookup_ip4_src_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * from_frame)
{
}
VLIB_REGISTER_NODE (lookup_ip4_src_node) = {
- .function = lookup_ip4_src,
.name = "lookup-ip4-src",
.vector_size = sizeof (u32),
.format_trace = format_lookup_trace,
.sibling_of = "ip4-lookup",
};
-VLIB_NODE_FUNCTION_MULTIARCH (lookup_ip4_src_node, lookup_ip4_src)
always_inline uword
lookup_dpo_ip6_inline (vlib_main_t * vm,
}
/* do src lookup */
- lbi0 = ip6_fib_table_fwding_lookup(&ip6_main,
+ lbi0 = ip6_fib_table_fwding_lookup(
fib_index0,
input_addr0);
- lbi1 = ip6_fib_table_fwding_lookup(&ip6_main,
+ lbi1 = ip6_fib_table_fwding_lookup(
fib_index1,
input_addr1);
lb0 = load_balance_get(lbi0);
}
/* do src lookup */
- lbi0 = ip6_fib_table_fwding_lookup(&ip6_main,
+ lbi0 = ip6_fib_table_fwding_lookup(
fib_index0,
input_addr0);
lb0 = load_balance_get(lbi0);
return from_frame->n_vectors;
}
-static uword
-lookup_ip6_dst (vlib_main_t * vm,
+VLIB_NODE_FN (lookup_ip6_dst_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * from_frame)
{
}
VLIB_REGISTER_NODE (lookup_ip6_dst_node) = {
- .function = lookup_ip6_dst,
.name = "lookup-ip6-dst",
.vector_size = sizeof (u32),
.format_trace = format_lookup_trace,
.sibling_of = "ip6-lookup",
};
-VLIB_NODE_FUNCTION_MULTIARCH (lookup_ip6_dst_node, lookup_ip6_dst)
-static uword
-lookup_ip6_dst_itf (vlib_main_t * vm,
+VLIB_NODE_FN (lookup_ip6_dst_itf_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * from_frame)
{
}
VLIB_REGISTER_NODE (lookup_ip6_dst_itf_node) = {
- .function = lookup_ip6_dst_itf,
.name = "lookup-ip6-dst-itf",
.vector_size = sizeof (u32),
.format_trace = format_lookup_trace,
.sibling_of = "ip6-lookup",
};
-VLIB_NODE_FUNCTION_MULTIARCH (lookup_ip6_dst_itf_node, lookup_ip6_dst_itf)
-static uword
-lookup_ip6_src (vlib_main_t * vm,
+VLIB_NODE_FN (lookup_ip6_src_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * from_frame)
{
}
VLIB_REGISTER_NODE (lookup_ip6_src_node) = {
- .function = lookup_ip6_src,
.name = "lookup-ip6-src",
.vector_size = sizeof (u32),
.format_trace = format_lookup_trace,
.sibling_of = "ip6-lookup",
};
-VLIB_NODE_FUNCTION_MULTIARCH (lookup_ip6_src_node, lookup_ip6_src)
always_inline uword
lookup_dpo_mpls_inline (vlib_main_t * vm,
return s;
}
-static uword
-lookup_mpls_dst (vlib_main_t * vm,
+VLIB_NODE_FN (lookup_mpls_dst_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * from_frame)
{
}
VLIB_REGISTER_NODE (lookup_mpls_dst_node) = {
- .function = lookup_mpls_dst,
.name = "lookup-mpls-dst",
.vector_size = sizeof (u32),
.sibling_of = "mpls-lookup",
.format_trace = format_lookup_mpls_trace,
.n_next_nodes = 0,
};
-VLIB_NODE_FUNCTION_MULTIARCH (lookup_mpls_dst_node, lookup_mpls_dst)
-static uword
-lookup_mpls_dst_itf (vlib_main_t * vm,
+VLIB_NODE_FN (lookup_mpls_dst_itf_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * from_frame)
{
}
VLIB_REGISTER_NODE (lookup_mpls_dst_itf_node) = {
- .function = lookup_mpls_dst_itf,
.name = "lookup-mpls-dst-itf",
.vector_size = sizeof (u32),
.sibling_of = "mpls-lookup",
.format_trace = format_lookup_mpls_trace,
.n_next_nodes = 0,
};
-VLIB_NODE_FUNCTION_MULTIARCH (lookup_mpls_dst_itf_node, lookup_mpls_dst_itf)
typedef enum lookup_ip_dst_mcast_next_t_ {
LOOKUP_IP_DST_MCAST_NEXT_DROP,
ip6_header_t * ip0;
ip0 = vlib_buffer_get_current (b0);
- mfei0 = ip6_mfib_table_lookup2(ip6_mfib_get(fib_index0),
- &ip0->src_address,
- &ip0->dst_address);
+ mfei0 = ip6_mfib_table_fwd_lookup(ip6_mfib_get(fib_index0),
+ &ip0->src_address,
+ &ip0->dst_address);
if (PREDICT_FALSE(b0->flags & VLIB_BUFFER_IS_TRACED))
{
lookup_trace_t *tr = vlib_add_trace (vm, node,
return from_frame->n_vectors;
}
-static uword
-lookup_ip4_dst_mcast (vlib_main_t * vm,
+VLIB_NODE_FN (lookup_ip4_dst_mcast_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * from_frame)
{
}
VLIB_REGISTER_NODE (lookup_ip4_dst_mcast_node) = {
- .function = lookup_ip4_dst_mcast,
.name = "lookup-ip4-dst-mcast",
.vector_size = sizeof (u32),
[LOOKUP_IP_DST_MCAST_NEXT_RPF] = "ip4-mfib-forward-rpf",
},
};
-VLIB_NODE_FUNCTION_MULTIARCH (lookup_ip4_dst_mcast_node,
- lookup_ip4_dst_mcast)
-static uword
-lookup_ip6_dst_mcast (vlib_main_t * vm,
+VLIB_NODE_FN (lookup_ip6_dst_mcast_node) (vlib_main_t * vm,
vlib_node_runtime_t * node,
vlib_frame_t * from_frame)
{
}
VLIB_REGISTER_NODE (lookup_ip6_dst_mcast_node) = {
- .function = lookup_ip6_dst_mcast,
.name = "lookup-ip6-dst-mcast",
.vector_size = sizeof (u32),
[LOOKUP_IP_DST_MCAST_NEXT_RPF] = "ip6-mfib-forward-rpf",
},
};
-VLIB_NODE_FUNCTION_MULTIARCH (lookup_ip6_dst_mcast_node,
- lookup_ip6_dst_mcast)
static void
lookup_dpo_mem_show (void)
[DPO_PROTO_MPLS] = lookup_dst_from_interface_mpls_nodes,
};
+static clib_error_t *
+lookup_dpo_show (vlib_main_t * vm,
+ unformat_input_t * input,
+ vlib_cli_command_t * cmd)
+{
+ index_t lkdi = INDEX_INVALID;
+
+ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
+ {
+ if (unformat (input, "%d", &lkdi))
+ ;
+ else
+ break;
+ }
+
+ if (INDEX_INVALID != lkdi)
+ {
+ if (pool_is_free_index(lookup_dpo_pool, lkdi))
+ vlib_cli_output (vm, "no such index %d", lkdi);
+ else
+ vlib_cli_output (vm, "%U", format_lookup_dpo, lkdi);
+ }
+ else
+ {
+ lookup_dpo_t *lkd;
+
+ pool_foreach(lkd, lookup_dpo_pool,
+ ({
+ vlib_cli_output (vm, "[@%d] %U",
+ lookup_dpo_get_index(lkd),
+ format_lookup_dpo,
+ lookup_dpo_get_index(lkd));
+ }));
+ }
+
+ return 0;
+}
+
+VLIB_CLI_COMMAND (replicate_show_command, static) = {
+ .path = "show lookup-dpo",
+ .short_help = "show lookup-dpo [<index>]",
+ .function = lookup_dpo_show,
+};
void
lookup_dpo_module_init (void)