aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vlib/punt_node.c9
-rw-r--r--src/vnet/ip/punt_node.c1
2 files changed, 8 insertions, 2 deletions
diff --git a/src/vlib/punt_node.c b/src/vlib/punt_node.c
index e341e4007cc..de721046057 100644
--- a/src/vlib/punt_node.c
+++ b/src/vlib/punt_node.c
@@ -120,11 +120,16 @@ punt_replicate (vlib_main_t * vm,
* 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;
}
diff --git a/src/vnet/ip/punt_node.c b/src/vnet/ip/punt_node.c
index b48af84475c..0306d597293 100644
--- a/src/vnet/ip/punt_node.c
+++ b/src/vnet/ip/punt_node.c
@@ -596,6 +596,7 @@ punt_socket_rx_fd (vlib_main_t * vm, vlib_node_runtime_t * node, u32 fd)
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;
}