diff options
Diffstat (limited to 'src/plugins/nsh/nsh.c')
-rw-r--r-- | src/plugins/nsh/nsh.c | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/src/plugins/nsh/nsh.c b/src/plugins/nsh/nsh.c index ea084e4a553..a2c24e27b26 100644 --- a/src/plugins/nsh/nsh.c +++ b/src/plugins/nsh/nsh.c @@ -18,8 +18,8 @@ #include <vnet/vnet.h> #include <vnet/plugin/plugin.h> #include <nsh/nsh.h> -#include <vnet/gre/gre.h> -#include <vnet/vxlan/vxlan.h> +#include <gre/gre.h> +#include <vxlan/vxlan.h> #include <vnet/vxlan-gpe/vxlan_gpe.h> #include <vnet/l2/l2_classify.h> #include <vnet/adj/adj.h> @@ -164,14 +164,12 @@ format_nsh_tunnel_with_length (u8 * s, va_list * args) return s; } -/* *INDENT-OFF* */ VNET_HW_INTERFACE_CLASS (nsh_hw_class) = { .name = "NSH", .format_header = format_nsh_tunnel_with_length, .build_rewrite = default_build_rewrite, .flags = VNET_HW_INTERFACE_CLASS_FLAG_P2P, }; -/* *INDENT-ON* */ void nsh_md2_set_next_ioam_export_override (uword next) @@ -184,10 +182,11 @@ nsh_md2_set_next_ioam_export_override (uword next) clib_error_t * nsh_init (vlib_main_t * vm) { - vlib_node_t *node; + vlib_node_t *node, *gre4_input, *gre6_input; nsh_main_t *nm = &nsh_main; clib_error_t *error = 0; uword next_node; + vlib_node_registration_t *vxlan4_input, *vxlan6_input; /* Init the main structures from VPP */ nm->vlib_main = vm; @@ -239,19 +238,32 @@ nsh_init (vlib_main_t * vm) vlib_node_add_next (vm, vxlan6_gpe_input_node.index, nsh_aware_vnf_proxy_node.index); - vlib_node_add_next (vm, gre4_input_node.index, nm->nsh_input_node_index); - vlib_node_add_next (vm, gre4_input_node.index, nm->nsh_proxy_node_index); - vlib_node_add_next (vm, gre4_input_node.index, - nsh_aware_vnf_proxy_node.index); - - vlib_node_add_next (vm, gre6_input_node.index, nm->nsh_input_node_index); - vlib_node_add_next (vm, gre6_input_node.index, nm->nsh_proxy_node_index); - vlib_node_add_next (vm, gre6_input_node.index, - nsh_aware_vnf_proxy_node.index); + gre4_input = vlib_get_node_by_name (vm, (u8 *) "gre4-input"); + gre6_input = vlib_get_node_by_name (vm, (u8 *) "gre6-input"); + if (gre4_input == 0 || gre6_input == 0) + { + error = clib_error_return (0, "gre_plugin.so is not loaded"); + return error; + } + vlib_node_add_next (vm, gre4_input->index, nm->nsh_input_node_index); + vlib_node_add_next (vm, gre4_input->index, nm->nsh_proxy_node_index); + vlib_node_add_next (vm, gre4_input->index, nsh_aware_vnf_proxy_node.index); + vlib_node_add_next (vm, gre6_input->index, nm->nsh_input_node_index); + vlib_node_add_next (vm, gre6_input->index, nm->nsh_proxy_node_index); + vlib_node_add_next (vm, gre6_input->index, nsh_aware_vnf_proxy_node.index); /* Add NSH-Proxy support */ - vlib_node_add_next (vm, vxlan4_input_node.index, nm->nsh_proxy_node_index); - vlib_node_add_next (vm, vxlan6_input_node.index, nm->nsh_proxy_node_index); + vxlan4_input = + vlib_get_plugin_symbol ("vxlan_plugin.so", "vxlan4_input_node"); + vxlan6_input = + vlib_get_plugin_symbol ("vxlan_plugin.so", "vxlan6_input_node"); + if (vxlan4_input == 0 || vxlan6_input == 0) + { + error = clib_error_return (0, "vxlan_plugin.so is not loaded"); + return error; + } + vlib_node_add_next (vm, vxlan4_input->index, nm->nsh_proxy_node_index); + vlib_node_add_next (vm, vxlan6_input->index, nm->nsh_proxy_node_index); /* Add NSH-Classifier support */ vlib_node_add_next (vm, ip4_classify_node.index, @@ -270,12 +282,10 @@ nsh_init (vlib_main_t * vm) VLIB_INIT_FUNCTION (nsh_init); -/* *INDENT-OFF* */ VLIB_PLUGIN_REGISTER () = { .version = VPP_BUILD_VER, .description = "Network Service Header (NSH)", }; -/* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON |