Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
FIB: encode the label stack in the FIB path during table dump
[vpp.git]
/
src
/
vnet
/
interface_output.c
diff --git
a/src/vnet/interface_output.c
b/src/vnet/interface_output.c
index
563f614
..
34f0a97
100644
(file)
--- a/
src/vnet/interface_output.c
+++ b/
src/vnet/interface_output.c
@@
-99,7
+99,7
@@
vnet_interface_output_trace (vlib_main_t * vm,
u32 n_left, *from;
n_left = n_buffers;
u32 n_left, *from;
n_left = n_buffers;
- from = vlib_frame_args (frame);
+ from = vlib_frame_
vector_
args (frame);
while (n_left >= 4)
{
while (n_left >= 4)
{
@@
-121,15
+121,15
@@
vnet_interface_output_trace (vlib_main_t * vm,
{
t0 = vlib_add_trace (vm, node, b0, sizeof (t0[0]));
t0->sw_if_index = vnet_buffer (b0)->sw_if_index[VLIB_TX];
{
t0 = vlib_add_trace (vm, node, b0, sizeof (t0[0]));
t0->sw_if_index = vnet_buffer (b0)->sw_if_index[VLIB_TX];
- clib_memcpy (t0->data, vlib_buffer_get_current (b0),
- sizeof (t0->data));
+ clib_memcpy
_fast
(t0->data, vlib_buffer_get_current (b0),
+
sizeof (t0->data));
}
if (b1->flags & VLIB_BUFFER_IS_TRACED)
{
t1 = vlib_add_trace (vm, node, b1, sizeof (t1[0]));
t1->sw_if_index = vnet_buffer (b1)->sw_if_index[VLIB_TX];
}
if (b1->flags & VLIB_BUFFER_IS_TRACED)
{
t1 = vlib_add_trace (vm, node, b1, sizeof (t1[0]));
t1->sw_if_index = vnet_buffer (b1)->sw_if_index[VLIB_TX];
- clib_memcpy (t1->data, vlib_buffer_get_current (b1),
- sizeof (t1->data));
+ clib_memcpy
_fast
(t1->data, vlib_buffer_get_current (b1),
+
sizeof (t1->data));
}
from += 2;
n_left -= 2;
}
from += 2;
n_left -= 2;
@@
-149,8
+149,8
@@
vnet_interface_output_trace (vlib_main_t * vm,
{
t0 = vlib_add_trace (vm, node, b0, sizeof (t0[0]));
t0->sw_if_index = vnet_buffer (b0)->sw_if_index[VLIB_TX];
{
t0 = vlib_add_trace (vm, node, b0, sizeof (t0[0]));
t0->sw_if_index = vnet_buffer (b0)->sw_if_index[VLIB_TX];
- clib_memcpy (t0->data, vlib_buffer_get_current (b0),
- sizeof (t0->data));
+ clib_memcpy
_fast
(t0->data, vlib_buffer_get_current (b0),
+
sizeof (t0->data));
}
from += 1;
n_left -= 1;
}
from += 1;
n_left -= 1;
@@
-222,7
+222,7
@@
vnet_interface_output_node_inline (vlib_main_t * vm,
if (node->flags & VLIB_NODE_FLAG_TRACE)
vnet_interface_output_trace (vm, node, frame, n_buffers);
if (node->flags & VLIB_NODE_FLAG_TRACE)
vnet_interface_output_trace (vm, node, frame, n_buffers);
- from = vlib_frame_args (frame);
+ from = vlib_frame_
vector_
args (frame);
if (rt->is_deleted)
return vlib_error_drop_buffers (vm, node, from,
if (rt->is_deleted)
return vlib_error_drop_buffers (vm, node, from,
@@
-328,10
+328,10
@@
vnet_interface_output_node_inline (vlib_main_t * vm,
if (PREDICT_FALSE (current_config_index != ~0))
{
if (PREDICT_FALSE (current_config_index != ~0))
{
-
b0
->feature_arc_index = arc;
-
b1
->feature_arc_index = arc;
-
b2
->feature_arc_index = arc;
-
b3
->feature_arc_index = arc;
+
vnet_buffer (b0)
->feature_arc_index = arc;
+
vnet_buffer (b1)
->feature_arc_index = arc;
+
vnet_buffer (b2)
->feature_arc_index = arc;
+
vnet_buffer (b3)
->feature_arc_index = arc;
b0->current_config_index = current_config_index;
b1->current_config_index = current_config_index;
b2->current_config_index = current_config_index;
b0->current_config_index = current_config_index;
b1->current_config_index = current_config_index;
b2->current_config_index = current_config_index;
@@
-415,7
+415,7
@@
vnet_interface_output_node_inline (vlib_main_t * vm,
if (PREDICT_FALSE (current_config_index != ~0))
{
if (PREDICT_FALSE (current_config_index != ~0))
{
-
b0
->feature_arc_index = arc;
+
vnet_buffer (b0)
->feature_arc_index = arc;
b0->current_config_index = current_config_index;
}
b0->current_config_index = current_config_index;
}
@@
-443,7
+443,7
@@
vnet_interface_output_node_inline (vlib_main_t * vm,
return n_buffers;
}
return n_buffers;
}
-static
_always_inline
uword
+static uword
vnet_interface_output_node (vlib_main_t * vm, vlib_node_runtime_t * node,
vlib_frame_t * frame)
{
vnet_interface_output_node (vlib_main_t * vm, vlib_node_runtime_t * node,
vlib_frame_t * frame)
{
@@
-475,7
+475,7
@@
vnet_per_buffer_interface_output (vlib_main_t * vm,
n_left_from = frame->n_vectors;
n_left_from = frame->n_vectors;
- from = vlib_frame_args (frame);
+ from = vlib_frame_
vector_
args (frame);
next_index = node->cached_next_index;
while (n_left_from > 0)
next_index = node->cached_next_index;
while (n_left_from > 0)
@@
-669,7
+669,7
@@
static u8 *
validate_error_frame (vlib_main_t * vm,
vlib_node_runtime_t * node, vlib_frame_t * f)
{
validate_error_frame (vlib_main_t * vm,
vlib_node_runtime_t * node, vlib_frame_t * f)
{
- u32 *buffers = vlib_frame_args (f);
+ u32 *buffers = vlib_frame_
vector_
args (f);
vlib_buffer_t *b;
u8 *msg = 0;
uword i;
vlib_buffer_t *b;
u8 *msg = 0;
uword i;
@@
-719,7
+719,7
@@
process_drop_punt (vlib_main_t * vm,
static vlib_error_t memory[VNET_ERROR_N_DISPOSITION];
static char memory_init[VNET_ERROR_N_DISPOSITION];
static vlib_error_t memory[VNET_ERROR_N_DISPOSITION];
static char memory_init[VNET_ERROR_N_DISPOSITION];
- buffers = vlib_frame_args (frame);
+ buffers = vlib_frame_
vector_
args (frame);
first_buffer = buffers;
{
first_buffer = buffers;
{
@@
-1080,6
+1080,7
@@
VNET_FEATURE_ARC_INIT (interface_output, static) =
{
.arc_name = "interface-output",
.start_nodes = VNET_FEATURES (0),
{
.arc_name = "interface-output",
.start_nodes = VNET_FEATURES (0),
+ .last_in_arc = "interface-tx",
.arc_index_ptr = &vnet_main.interface_main.output_feature_arc_index,
};
.arc_index_ptr = &vnet_main.interface_main.output_feature_arc_index,
};
@@
-1089,6
+1090,12
@@
VNET_FEATURE_INIT (span_tx, static) = {
.runs_before = VNET_FEATURES ("interface-tx"),
};
.runs_before = VNET_FEATURES ("interface-tx"),
};
+VNET_FEATURE_INIT (ipsec_if_tx, static) = {
+ .arc_name = "interface-output",
+ .node_name = "ipsec-if-output",
+ .runs_before = VNET_FEATURES ("interface-tx"),
+};
+
VNET_FEATURE_INIT (interface_tx, static) = {
.arc_name = "interface-output",
.node_name = "interface-tx",
VNET_FEATURE_INIT (interface_tx, static) = {
.arc_name = "interface-output",
.node_name = "interface-tx",
@@
-1151,7
+1158,7
@@
pcap_drop_trace_command_fn (vlib_main_t * vm,
if (im->pcap_filename == 0)
im->pcap_filename = format (0, "/tmp/drop.pcap%c", 0);
if (im->pcap_filename == 0)
im->pcap_filename = format (0, "/tmp/drop.pcap%c", 0);
- memset (&im->pcap_main, 0, sizeof (im->pcap_main));
+
clib_
memset (&im->pcap_main, 0, sizeof (im->pcap_main));
im->pcap_main.file_name = (char *) im->pcap_filename;
im->pcap_main.n_packets_to_capture = 100;
if (im->pcap_pkts_to_capture)
im->pcap_main.file_name = (char *) im->pcap_filename;
im->pcap_main.n_packets_to_capture = 100;
if (im->pcap_pkts_to_capture)