typedef struct
{
/* per-pkt trace data */
- u8 src[6];
- u8 dst[6];
+ u8 dst_and_src[12];
u32 sw_if_index;
u16 bd_index;
l2fib_entry_result_t result;
s =
format (s,
"l2-fwd: sw_if_index %d dst %U src %U bd_index %d result [0x%llx, %d] %U",
- t->sw_if_index, format_ethernet_address, t->dst,
- format_ethernet_address, t->src, t->bd_index, t->result.raw,
+ t->sw_if_index, format_ethernet_address, t->dst_and_src,
+ format_ethernet_address, t->dst_and_src + 6,
+ t->bd_index, t->result.raw,
t->result.fields.sw_if_index, format_l2fib_entry_result_flags,
t->result.fields.flags);
return s;
extern l2fwd_main_t l2fwd_main;
#endif
-static vlib_node_registration_t l2fwd_node;
+extern vlib_node_registration_t l2fwd_node;
#define foreach_l2fwd_error \
_(L2FWD, "L2 forward packets") \
l2fwd_trace_t *t = vlib_add_trace (vm, node, b[0], sizeof (*t));
t->sw_if_index = sw_if_index0;
t->bd_index = vnet_buffer (b[0])->l2.bd_index;
- clib_memcpy_fast (t->src, h0->src_address, 6);
- clib_memcpy_fast (t->dst, h0->dst_address, 6);
+ clib_memcpy_fast (t->dst_and_src, h0->dst_address,
+ sizeof (h0->dst_address) +
+ sizeof (h0->src_address));
t->result = result0;
}
if (b[1]->flags & VLIB_BUFFER_IS_TRACED)
l2fwd_trace_t *t = vlib_add_trace (vm, node, b[1], sizeof (*t));
t->sw_if_index = sw_if_index1;
t->bd_index = vnet_buffer (b[1])->l2.bd_index;
- clib_memcpy_fast (t->src, h1->src_address, 6);
- clib_memcpy_fast (t->dst, h1->dst_address, 6);
+ clib_memcpy_fast (t->dst_and_src, h1->dst_address,
+ sizeof (h1->dst_address) +
+ sizeof (h1->src_address));
t->result = result1;
}
if (b[2]->flags & VLIB_BUFFER_IS_TRACED)
l2fwd_trace_t *t = vlib_add_trace (vm, node, b[2], sizeof (*t));
t->sw_if_index = sw_if_index2;
t->bd_index = vnet_buffer (b[2])->l2.bd_index;
- clib_memcpy_fast (t->src, h2->src_address, 6);
- clib_memcpy_fast (t->dst, h2->dst_address, 6);
+ clib_memcpy_fast (t->dst_and_src, h2->dst_address,
+ sizeof (h2->dst_address) +
+ sizeof (h2->src_address));
t->result = result2;
}
if (b[3]->flags & VLIB_BUFFER_IS_TRACED)
l2fwd_trace_t *t = vlib_add_trace (vm, node, b[3], sizeof (*t));
t->sw_if_index = sw_if_index3;
t->bd_index = vnet_buffer (b[3])->l2.bd_index;
- clib_memcpy_fast (t->src, h3->src_address, 6);
- clib_memcpy_fast (t->dst, h3->dst_address, 6);
+ clib_memcpy_fast (t->dst_and_src, h3->dst_address,
+ sizeof (h3->dst_address) +
+ sizeof (h3->src_address));
t->result = result3;
}
}
l2fwd_trace_t *t = vlib_add_trace (vm, node, b[0], sizeof (*t));
t->sw_if_index = sw_if_index0;
t->bd_index = vnet_buffer (b[0])->l2.bd_index;
- clib_memcpy_fast (t->src, h0->src_address, 6);
- clib_memcpy_fast (t->dst, h0->dst_address, 6);
+ clib_memcpy_fast (t->dst_and_src, h0->dst_address,
+ sizeof (h0->dst_address) +
+ sizeof (h0->src_address));
t->result = result0;
}
}
/* *INDENT-OFF* */
-VLIB_REGISTER_NODE (l2fwd_node,static) = {
+VLIB_REGISTER_NODE (l2fwd_node) = {
.name = "l2-fwd",
.vector_size = sizeof (u32),
.format_trace = format_l2fwd_trace,