nsim: cross-connect mode crash at interface output node 99/20599/3
authorJohn Lo <loj@cisco.com>
Wed, 10 Jul 2019 20:44:32 +0000 (16:44 -0400)
committerDave Barach <openvpp@barachs.net>
Fri, 12 Jul 2019 18:04:20 +0000 (18:04 +0000)
Type: fix

Change-Id: If99c1d8a7ec97a726430a927eab0d3b57222af1f
Signed-off-by: John Lo <loj@cisco.com>
MAINTAINERS
src/plugins/nsim/node.c
src/plugins/nsim/nsim_input.c

index d74398f..b7575af 100644 (file)
@@ -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/
 
index 559147b..96a712c 100644 (file)
@@ -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 =
index def6fcd..3ce89bc 100644 (file)
@@ -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 =