NSH Plugin crashes VPP. NSHSFC-34 19/8219/1 stable/1707
authorHongjun Ni <[email protected]>
Sun, 27 Aug 2017 06:58:24 +0000 (14:58 +0800)
committerHongjun Ni <[email protected]>
Sun, 27 Aug 2017 07:45:51 +0000 (07:45 +0000)
Change-Id: If7a3c3ebbbdc00a4ad351a056ebaacf9a9c237be
Signed-off-by: Hongjun Ni <[email protected]>
(cherry picked from commit 9b3c3af8bee2f7c055a7d89d95fbbc577fb0739d)

nsh-plugin/nsh/nsh.h
nsh-plugin/nsh/nsh_output.c

index ea4e192..8605fc7 100644 (file)
@@ -255,4 +255,10 @@ nsh_md2_register_option (u16 class,
                                        nsh_tlv_header_t * opt),
                       u8 * trace (u8 * s,
                                   nsh_tlv_header_t * opt));
+
+typedef struct _nsh_main_dummy
+{
+  u8 output_feature_arc_index;
+} nsh_main_dummy_t;
+
 #endif /* included_nsh_h */
index c104ee7..5671463 100644 (file)
@@ -315,6 +315,10 @@ nsh_output_inline (vlib_main_t * vm,
   return from_frame->n_vectors;
 }
 
+typedef enum nsh_midchain_next_t_
+{
+    NSH_MIDCHAIN_NEXT_DROP,
+} nsh_midchain_next_t;
 
 static inline uword
 nsh_eth_output (vlib_main_t * vm,
@@ -354,7 +358,10 @@ VLIB_REGISTER_NODE (nsh_midchain_node) = {
   .name = "nsh-midchain",
   .vector_size = sizeof (u32),
   .format_trace = format_nsh_output_trace,
-  .sibling_of = "nsh-eth-output",
+  .n_next_nodes = 1,
+  .next_nodes = {
+      [NSH_MIDCHAIN_NEXT_DROP] = "error-drop",
+  },
 };
 
 VLIB_NODE_FUNCTION_MULTIARCH (nsh_midchain_node, nsh_midchain)
@@ -366,6 +373,21 @@ VNET_FEATURE_INIT (nsh_interface_output, static) = {
   .runs_before = 0, /* not before any other features */
 };
 
+/* Built-in ip4 tx feature path definition */
+/* *INDENT-OFF* */
+VNET_FEATURE_ARC_INIT (nsh_eth_output, static) =
+{
+  .arc_name  = "nsh-eth-output",
+  .start_nodes = VNET_FEATURES ("nsh-midchain"),
+};
+
+VNET_FEATURE_INIT (nsh_eth_tx_drop, static) =
+{
+  .arc_name = "nsh-eth-output",
+  .node_name = "error-drop",
+  .runs_before = 0,     /* not before any other features */
+};
+/* *INDENT-ON* */
 /**
  * @brief Next index values from the NSH incomplete adj node
  */