If vlib_buffer_clone (...) fails due to a buffer allocation error, update
*n_dispatched with the actual number of clones, not the requested
number of clones.
Punt_replicate(...) should not set *to_next[0] = bi0. The original
buffer is enqueued separately in punt_dispatch_node(...)
Type: fix
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I774ad8f8c1a0633de4cf8ae5530629201c229347
* so there's no need to check if the to_next frame
* is full */
}
- *n_dispatched = *n_dispatched + n_clones0;
+ *n_dispatched = *n_dispatched + n_cloned0;
/* The original buffer is the first clone */
next0 = punt_dp_db[pr0][0];
- *to_next[0] = bi0;
+ /*
+ * Note: the original buffer is enqueued in punt_dispatch_node.
+ * Don't do it here.
+ *
+ * *to_next[0] = bi0;
+ */
return next0;
}
return 1;
error:
+ vlib_put_next_frame (vm, node, next, n_left_to_next);
vlib_node_increment_counter (vm, punt_socket_rx_node.index, error, 1);
return 0;
}