summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
1adc7e7)
if ip4_frag_do_fragment(...) returns an error due to buffer allocation
failure, we end up trying to increment a nonexistent counter, which
causes an ASSERT failure.
The second argument to vlib_error_count is a node index, not a
next index...
Type: fix
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: Ib0733b0d35bcb9d3ca6bd789e0c5ddc1561ce724
hdr0 = vlib_buffer_get_current (p0);
/* Guess we are only writing on simple Ethernet header. */
hdr0 = vlib_buffer_get_current (p0);
/* Guess we are only writing on simple Ethernet header. */
- vnet_rewrite_one_header (adj0[0], hdr0,
+ vnet_rewrite_one_header (adj0[0], hdr0,
sizeof (ethernet_header_t));
sizeof (ethernet_header_t));
/* Update packet buffer attributes/set output interface. */
rw_len0 = adj0[0].rewrite_header.data_bytes;
vnet_buffer (p0)->mpls.save_rewrite_length = rw_len0;
/* Update packet buffer attributes/set output interface. */
rw_len0 = adj0[0].rewrite_header.data_bytes;
vnet_buffer (p0)->mpls.save_rewrite_length = rw_len0;
n_left_from -= 1;
to_next += 1;
n_left_to_next -= 1;
n_left_from -= 1;
to_next += 1;
n_left_to_next -= 1;
-
- if (PREDICT_FALSE(p0->flags & VLIB_BUFFER_IS_TRACED))
+
+ if (PREDICT_FALSE(p0->flags & VLIB_BUFFER_IS_TRACED))
- mpls_output_trace_t *tr = vlib_add_trace (vm, node,
+ mpls_output_trace_t *tr = vlib_add_trace (vm, node,
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;
/* the size of the MPLS stack */
encap_size = vnet_buffer(p0)->l3_hdr_offset - p0->current_data;
/* the size of the MPLS stack */
encap_size = vnet_buffer(p0)->l3_hdr_offset - p0->current_data;
/* IP fragmentation */
if (is_ip4)
error0 = ip4_frag_do_fragment (vm, pi0,
/* IP fragmentation */
if (is_ip4)
error0 = ip4_frag_do_fragment (vm, pi0,
- vlib_error_count (vm, next_index, error0, 1);
+ vlib_error_count (vm, mpls_output_node.index, error0, 1);
vec_add1 (frags, pi0); /* Get rid of the original buffer */
next0 = MPLS_FRAG_NEXT_DROP;
}
vec_add1 (frags, pi0); /* Get rid of the original buffer */
next0 = MPLS_FRAG_NEXT_DROP;
}
else
{
next0 = MPLS_ADJ_INCOMPLETE_NEXT_IP6;
else
{
next0 = MPLS_ADJ_INCOMPLETE_NEXT_IP6;
- if (PREDICT_FALSE(p0->flags & VLIB_BUFFER_IS_TRACED))
+ if (PREDICT_FALSE(p0->flags & VLIB_BUFFER_IS_TRACED))
{
mpls_adj_incomplete_trace_t *tr =
vlib_add_trace (vm, node, p0, sizeof (*tr));
{
mpls_adj_incomplete_trace_t *tr =
vlib_add_trace (vm, node, p0, sizeof (*tr));