aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Lo <loj@cisco.com>2019-07-10 16:44:32 -0400
committerDave Barach <openvpp@barachs.net>2019-07-12 18:04:20 +0000
commitb966b96aa4ec125cea9dcd0b9f2d4268709f3896 (patch)
tree81d8857ba36db134697de4a90819e7fd8006be9e
parentedff805464a5d6893b892a9504f0a78ebf50c731 (diff)
nsim: cross-connect mode crash at interface output node
Type: fix Change-Id: If99c1d8a7ec97a726430a927eab0d3b57222af1f Signed-off-by: John Lo <loj@cisco.com>
-rw-r--r--MAINTAINERS1
-rw-r--r--src/plugins/nsim/node.c10
-rw-r--r--src/plugins/nsim/nsim_input.c2
3 files changed, 7 insertions, 6 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index d74398fb9c6..b7575afcca5 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -366,6 +366,7 @@ M: Dave Barach <dave@barachs.net>
F: src/plugins/mactime/
Plugin - Network Delay Simulator
+I: nsim
M: Dave Barach <dave@barachs.net>
F: src/plugins/nsim/
diff --git a/src/plugins/nsim/node.c b/src/plugins/nsim/node.c
index 559147b1280..96a712cb35d 100644
--- a/src/plugins/nsim/node.c
+++ b/src/plugins/nsim/node.c
@@ -162,7 +162,7 @@ nsim_inline (vlib_main_t * vm,
ep->rx_sw_if_index = vnet_buffer (b[0])->sw_if_index[VLIB_RX];
if (is_cross_connect)
{
- ep->tx_sw_if_index =
+ ep->tx_sw_if_index = vnet_buffer (b[0])->sw_if_index[VLIB_TX] =
(vnet_buffer (b[0])->sw_if_index[VLIB_RX] ==
nsm->sw_if_index0) ? nsm->sw_if_index1 : nsm->sw_if_index0;
ep->output_next_index =
@@ -204,7 +204,7 @@ nsim_inline (vlib_main_t * vm,
ep->rx_sw_if_index = vnet_buffer (b[1])->sw_if_index[VLIB_RX];
if (is_cross_connect)
{
- ep->tx_sw_if_index =
+ ep->tx_sw_if_index = vnet_buffer (b[1])->sw_if_index[VLIB_TX] =
(vnet_buffer (b[1])->sw_if_index[VLIB_RX] ==
nsm->sw_if_index0) ? nsm->sw_if_index1 : nsm->sw_if_index0;
ep->output_next_index =
@@ -245,7 +245,7 @@ nsim_inline (vlib_main_t * vm,
ep->rx_sw_if_index = vnet_buffer (b[2])->sw_if_index[VLIB_RX];
if (is_cross_connect)
{
- ep->tx_sw_if_index =
+ ep->tx_sw_if_index = vnet_buffer (b[2])->sw_if_index[VLIB_TX] =
(vnet_buffer (b[2])->sw_if_index[VLIB_RX] ==
nsm->sw_if_index0) ? nsm->sw_if_index1 : nsm->sw_if_index0;
ep->output_next_index =
@@ -286,7 +286,7 @@ nsim_inline (vlib_main_t * vm,
ep->rx_sw_if_index = vnet_buffer (b[3])->sw_if_index[VLIB_RX];
if (is_cross_connect)
{
- ep->tx_sw_if_index =
+ ep->tx_sw_if_index = vnet_buffer (b[3])->sw_if_index[VLIB_TX] =
(vnet_buffer (b[3])->sw_if_index[VLIB_RX] ==
nsm->sw_if_index0) ? nsm->sw_if_index1 : nsm->sw_if_index0;
ep->output_next_index =
@@ -362,7 +362,7 @@ slow_path:
ep->rx_sw_if_index = vnet_buffer (b[0])->sw_if_index[VLIB_RX];
if (is_cross_connect)
{
- ep->tx_sw_if_index =
+ ep->tx_sw_if_index = vnet_buffer (b[0])->sw_if_index[VLIB_TX] =
(vnet_buffer (b[0])->sw_if_index[VLIB_RX] ==
nsm->sw_if_index0) ? nsm->sw_if_index1 : nsm->sw_if_index0;
ep->output_next_index =
diff --git a/src/plugins/nsim/nsim_input.c b/src/plugins/nsim/nsim_input.c
index def6fcd9f26..3ce89bc9847 100644
--- a/src/plugins/nsim/nsim_input.c
+++ b/src/plugins/nsim/nsim_input.c
@@ -127,7 +127,7 @@ nsim_input_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
if (is_trace)
{
- b0 = vlib_get_buffer (vm, ep->buffer_index);
+ b0 = vlib_get_buffer (vm, bi0);
if (b0->flags & VLIB_BUFFER_IS_TRACED)
{
nsim_tx_trace_t *t =