Allow the provider of a midchain adjacency to pass context data that is returned...
[vpp.git] / src / vnet / ip / ip4_forward.c
index 2f3f340..c4c54b7 100755 (executable)
@@ -1113,7 +1113,7 @@ VNET_FEATURE_INIT (ip4_lookup_mc, static) =
 VNET_FEATURE_ARC_INIT (ip4_output, static) =
 {
   .arc_name = "ip4-output",
-  .start_nodes = VNET_FEATURES ("ip4-rewrite", "ip4-midchain"),
+  .start_nodes = VNET_FEATURES ("ip4-rewrite", "ip4-midchain", "ip4-dvr-dpo"),
   .arc_index_ptr = &ip4_main.lookup_main.output_feature_arc_index,
 };
 
@@ -2541,8 +2541,10 @@ ip4_rewrite_inline (vlib_main_t * vm,
 
          if (is_midchain)
            {
-             adj0->sub_type.midchain.fixup_func (vm, adj0, p0);
-             adj1->sub_type.midchain.fixup_func (vm, adj1, p1);
+             adj0->sub_type.midchain.fixup_func
+               (vm, adj0, p0, adj0->sub_type.midchain.fixup_data);
+             adj1->sub_type.midchain.fixup_func
+               (vm, adj1, p1, adj0->sub_type.midchain.fixup_data);
            }
          if (is_mcast)
            {
@@ -2667,7 +2669,8 @@ ip4_rewrite_inline (vlib_main_t * vm,
 
              if (is_midchain)
                {
-                 adj0->sub_type.midchain.fixup_func (vm, adj0, p0);
+                 adj0->sub_type.midchain.fixup_func
+                   (vm, adj0, p0, adj0->sub_type.midchain.fixup_data);
                }
 
              if (PREDICT_FALSE
@@ -2727,7 +2730,7 @@ ip4_rewrite_inline (vlib_main_t * vm,
 
     <em>Next Indices:</em>
     - <code> adj->rewrite_header.next_index </code>
-      or @c error-drop
+      or @c ip4-drop
 */
 static uword
 ip4_rewrite (vlib_main_t * vm,
@@ -2779,7 +2782,7 @@ VLIB_REGISTER_NODE (ip4_rewrite_node) = {
 
   .n_next_nodes = 2,
   .next_nodes = {
-    [IP4_REWRITE_NEXT_DROP] = "error-drop",
+    [IP4_REWRITE_NEXT_DROP] = "ip4-drop",
     [IP4_REWRITE_NEXT_ICMP_ERROR] = "ip4-icmp-error",
   },
 };