From db14f5aff69311d13a0a90baa3567e92f3faa783 Mon Sep 17 00:00:00 2001 From: Neale Ranns Date: Mon, 29 Jan 2018 10:43:33 -0800 Subject: Allow the provider of a midchain adjacency to pass context data that is returned in the fixup function Change-Id: I458e6e03b03e27775df33a2fd302743126d6ac44 Signed-off-by: Neale Ranns --- src/vnet/mpls/mpls_output.c | 12 +++++++++--- src/vnet/mpls/mpls_tunnel.c | 5 ++++- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'src/vnet/mpls') diff --git a/src/vnet/mpls/mpls_output.c b/src/vnet/mpls/mpls_output.c index 0dc12b8d5bd..22e6c1062c3 100644 --- a/src/vnet/mpls/mpls_output.c +++ b/src/vnet/mpls/mpls_output.c @@ -185,8 +185,12 @@ mpls_output_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, + adj1->sub_type.midchain.fixup_data); } p0->error = error_node->errors[error0]; @@ -266,7 +270,9 @@ mpls_output_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); } p0->error = error_node->errors[error0]; diff --git a/src/vnet/mpls/mpls_tunnel.c b/src/vnet/mpls/mpls_tunnel.c index efd9e2dbc84..8ed2c409ce8 100644 --- a/src/vnet/mpls/mpls_tunnel.c +++ b/src/vnet/mpls/mpls_tunnel.c @@ -377,7 +377,8 @@ mpls_tunnel_admin_up_down (vnet_main_t * vnm, static void mpls_tunnel_fixup (vlib_main_t *vm, ip_adjacency_t *adj, - vlib_buffer_t *b0) + vlib_buffer_t *b0, + const void*data) { /* * A no-op w.r.t. the header. but reset the 'have we pushed any @@ -403,6 +404,7 @@ mpls_tunnel_update_adj (vnet_main_t * vnm, case IP_LOOKUP_NEXT_ARP: case IP_LOOKUP_NEXT_GLEAN: adj_nbr_midchain_update_rewrite(ai, mpls_tunnel_fixup, + NULL, ADJ_FLAG_NONE, mpls_tunnel_build_rewrite_i()); break; @@ -412,6 +414,7 @@ mpls_tunnel_update_adj (vnet_main_t * vnm, * There's no MAC fixup, so the last 2 parameters are 0 */ adj_mcast_midchain_update_rewrite(ai, mpls_tunnel_fixup, + NULL, ADJ_FLAG_NONE, mpls_tunnel_build_rewrite_i(), 0, 0); -- cgit 1.2.3-korg