summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nsh-plugin/nsh/nsh.h6
-rw-r--r--nsh-plugin/nsh/nsh_output.c24
2 files changed, 29 insertions, 1 deletions
diff --git a/nsh-plugin/nsh/nsh.h b/nsh-plugin/nsh/nsh.h
index ea4e192..8605fc7 100644
--- a/nsh-plugin/nsh/nsh.h
+++ b/nsh-plugin/nsh/nsh.h
@@ -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 */
diff --git a/nsh-plugin/nsh/nsh_output.c b/nsh-plugin/nsh/nsh_output.c
index c104ee7..5671463 100644
--- a/nsh-plugin/nsh/nsh_output.c
+++ b/nsh-plugin/nsh/nsh_output.c
@@ -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
*/