Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
QoS recording and marking
[vpp.git]
/
src
/
vnet
/
mpls
/
mpls_output.c
diff --git
a/src/vnet/mpls/mpls_output.c
b/src/vnet/mpls/mpls_output.c
index
e0874cd
..
b7bb769
100644
(file)
--- a/
src/vnet/mpls/mpls_output.c
+++ b/
src/vnet/mpls/mpls_output.c
@@
-24,9
+24,6
@@
typedef struct {
/* Adjacency taken. */
u32 adj_index;
u32 flow_hash;
/* Adjacency taken. */
u32 adj_index;
u32 flow_hash;
-
- /* Packet data, possibly *after* rewrite. */
- u8 packet_data[64 - 1*sizeof(u32)];
} mpls_output_trace_t;
#define foreach_mpls_output_next \
} mpls_output_trace_t;
#define foreach_mpls_output_next \
@@
-45,16
+42,11
@@
format_mpls_output_trace (u8 * s, va_list * args)
CLIB_UNUSED (vlib_main_t * vm) = va_arg (*args, vlib_main_t *);
CLIB_UNUSED (vlib_node_t * node) = va_arg (*args, vlib_node_t *);
mpls_output_trace_t * t = va_arg (*args, mpls_output_trace_t *);
CLIB_UNUSED (vlib_main_t * vm) = va_arg (*args, vlib_main_t *);
CLIB_UNUSED (vlib_node_t * node) = va_arg (*args, vlib_node_t *);
mpls_output_trace_t * t = va_arg (*args, mpls_output_trace_t *);
- u32 indent = format_get_indent (s);
s = format (s, "adj-idx %d : %U flow hash: 0x%08x",
t->adj_index,
format_ip_adjacency, t->adj_index, FORMAT_IP_ADJACENCY_NONE,
t->flow_hash);
s = format (s, "adj-idx %d : %U flow hash: 0x%08x",
t->adj_index,
format_ip_adjacency, t->adj_index, FORMAT_IP_ADJACENCY_NONE,
t->flow_hash);
- s = format (s, "\n%U%U",
- format_white_space, indent,
- format_ip_adjacency_packet_data,
- t->adj_index, t->packet_data, sizeof (t->packet_data));
return s;
}
return s;
}
@@
-133,6
+125,8
@@
mpls_output_inline (vlib_main_t * vm,
/* Update packet buffer attributes/set output interface. */
rw_len0 = adj0[0].rewrite_header.data_bytes;
rw_len1 = adj1[0].rewrite_header.data_bytes;
/* Update packet buffer attributes/set output interface. */
rw_len0 = adj0[0].rewrite_header.data_bytes;
rw_len1 = adj1[0].rewrite_header.data_bytes;
+ vnet_buffer (p0)->mpls.save_rewrite_length = rw_len0;
+ vnet_buffer (p1)->mpls.save_rewrite_length = rw_len1;
/* Bump the adj counters for packet and bytes */
vlib_increment_combined_counter
/* Bump the adj counters for packet and bytes */
vlib_increment_combined_counter
@@
-193,8
+187,12
@@
mpls_output_inline (vlib_main_t * vm,
}
if (is_midchain)
{
}
if (is_midchain)
{
- adj0->sub_type.midchain.fixup_func(vm, adj0, p0);
- adj1->sub_type.midchain.fixup_func(vm, adj1, p1);
+ adj0->sub_type.midchain.fixup_func
+ (vm, adj0, p0,
+ adj0->sub_type.midchain.fixup_data);
+ adj1->sub_type.midchain.fixup_func
+ (vm, adj1, p1,
+ adj1->sub_type.midchain.fixup_data);
}
p0->error = error_node->errors[error0];
}
p0->error = error_node->errors[error0];
@@
-206,9
+204,6
@@
mpls_output_inline (vlib_main_t * vm,
p0, sizeof (*tr));
tr->adj_index = vnet_buffer(p0)->ip.adj_index[VLIB_TX];
tr->flow_hash = vnet_buffer(p0)->ip.flow_hash;
p0, sizeof (*tr));
tr->adj_index = vnet_buffer(p0)->ip.adj_index[VLIB_TX];
tr->flow_hash = vnet_buffer(p0)->ip.flow_hash;
- clib_memcpy (tr->packet_data,
- vlib_buffer_get_current (p0),
- sizeof (tr->packet_data));
}
if (PREDICT_FALSE(p1->flags & VLIB_BUFFER_IS_TRACED))
{
}
if (PREDICT_FALSE(p1->flags & VLIB_BUFFER_IS_TRACED))
{
@@
-216,9
+211,6
@@
mpls_output_inline (vlib_main_t * vm,
p1, sizeof (*tr));
tr->adj_index = vnet_buffer(p1)->ip.adj_index[VLIB_TX];
tr->flow_hash = vnet_buffer(p1)->ip.flow_hash;
p1, sizeof (*tr));
tr->adj_index = vnet_buffer(p1)->ip.adj_index[VLIB_TX];
tr->flow_hash = vnet_buffer(p1)->ip.flow_hash;
- clib_memcpy (tr->packet_data,
- vlib_buffer_get_current (p1),
- sizeof (tr->packet_data));
}
vlib_validate_buffer_enqueue_x2 (vm, node, next_index,
}
vlib_validate_buffer_enqueue_x2 (vm, node, next_index,
@@
-248,7
+240,8
@@
mpls_output_inline (vlib_main_t * vm,
/* Update packet buffer attributes/set output interface. */
rw_len0 = adj0[0].rewrite_header.data_bytes;
/* Update packet buffer attributes/set output interface. */
rw_len0 = adj0[0].rewrite_header.data_bytes;
-
+ vnet_buffer (p0)->mpls.save_rewrite_length = rw_len0;
+
vlib_increment_combined_counter
(&adjacency_counters,
thread_index,
vlib_increment_combined_counter
(&adjacency_counters,
thread_index,
@@
-280,7
+273,9
@@
mpls_output_inline (vlib_main_t * vm,
}
if (is_midchain)
{
}
if (is_midchain)
{
- adj0->sub_type.midchain.fixup_func(vm, adj0, p0);
+ adj0->sub_type.midchain.fixup_func
+ (vm, adj0, p0,
+ adj0->sub_type.midchain.fixup_data);
}
p0->error = error_node->errors[error0];
}
p0->error = error_node->errors[error0];