aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/ioam-plugin
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/ioam-plugin')
-rw-r--r--plugins/ioam-plugin/Makefile.am189
-rw-r--r--plugins/ioam-plugin/ioam/encap/ip6_ioam_e2e.c22
-rw-r--r--plugins/ioam-plugin/ioam/encap/ip6_ioam_trace.c13
-rw-r--r--plugins/ioam-plugin/ioam/export-common/ioam_export.h3
-rw-r--r--plugins/ioam-plugin/ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.c2
-rw-r--r--plugins/ioam-plugin/ioam/export-vxlan-gpe/vxlan_gpe_node.c4
-rw-r--r--plugins/ioam-plugin/ioam/export/ioam_export.c23
-rw-r--r--plugins/ioam-plugin/ioam/lib-pot/pot_api.c24
-rw-r--r--plugins/ioam-plugin/ioam/lib-trace/trace_api.c23
-rw-r--r--plugins/ioam-plugin/ioam/lib-vxlan-gpe/vxlan_gpe_api.c27
10 files changed, 142 insertions, 188 deletions
diff --git a/plugins/ioam-plugin/Makefile.am b/plugins/ioam-plugin/Makefile.am
index 9a87767518e..ac2421d9305 100644
--- a/plugins/ioam-plugin/Makefile.am
+++ b/plugins/ioam-plugin/Makefile.am
@@ -17,20 +17,8 @@ AM_CFLAGS = -Wall
AM_LDFLAGS = -module -shared -avoid-version
########################################
-# iOAM Proof of Transit
+# iOAM APIs
########################################
-
-ioam_pot_plugin_la_SOURCES = \
- ioam/lib-pot/pot_util.c \
- ioam/encap/ip6_ioam_pot.c \
- ioam/lib-pot/pot_util.h \
- ioam/lib-pot/math64.h \
- ioam/lib-pot/pot_api.c
-
-BUILT_SOURCES = \
- ioam/lib-pot/pot.api.h \
- ioam/lib-pot/pot.api.json
-
SUFFIXES = .api.h .api
%.api.h: %.api
@@ -39,129 +27,135 @@ SUFFIXES = .api.h .api
| vppapigen --input - --output $@ --show-name $@
%.api.json: %.api
- @echo " JSON APIGEN " $@ ; \
+ @echo " JSON APIGEN " $@ ; \
mkdir -p `dirname $@` ; \
- $(CC) $(CPPFLAGS) -E -P -C -x c $^ \
+ $(CC) $(CPPFLAGS) -E -P -C -x c $^ \
| vppapigen --input - --json $@
apidir = $(prefix)/ioam/
-api_DATA = \
- ioam/lib-pot/pot.api.json \
+api_DATA = \
+ ioam/lib-pot/pot.api.json \
ioam/lib-trace/trace.api.json \
ioam/export/ioam_export.api.json
-noinst_HEADERS = \
- ioam/lib-pot/pot_all_api_h.h \
- ioam/lib-pot/pot_msg_enum.h \
- ioam/lib-pot/pot.api.h \
- ioam/lib-pot/pot_util.h \
- ioam/lib-pot/math64.h
+########################################
+# iOAM Proof of Transit
+########################################
+
+IOAM_POT_SRC = \
+ ioam/lib-pot/pot_util.c \
+ ioam/encap/ip6_ioam_pot.c \
+ ioam/lib-pot/pot_util.h \
+ ioam/lib-pot/math64.h \
+ ioam/lib-pot/pot_api.c
+
+IOAM_POT_BUILT_SRC = \
+ ioam/lib-pot/pot.api.h \
+ ioam/lib-pot/pot.api.json
+
+IOAM_POT_NOINST_HDR = \
+ ioam/lib-pot/pot_all_api_h.h \
+ ioam/lib-pot/pot_msg_enum.h \
+ ioam/lib-pot/pot.api.h \
+ ioam/lib-pot/pot_util.h \
+ ioam/lib-pot/math64.h
-ioam_pot_test_plugin_la_SOURCES = \
+ioam_pot_test_plugin_la_SOURCES = \
ioam/lib-pot/pot_test.c \
ioam/lib-pot/pot_plugin.api.h
-vppapitestpluginsdir = ${libdir}/vpp_api_test_plugins
-vpppluginsdir = ${libdir}/vpp_plugins
-
vppapitestplugins_LTLIBRARIES = ioam_pot_test_plugin.la
-vppplugins_LTLIBRARIES = ioam_pot_plugin.la
########################################
# iOAM trace export for IPv6
########################################
-ioam_export_plugin_la_SOURCES = \
-ioam/export/ioam_export.c \
-ioam/export/node.c \
-ioam/export/ioam_export.api.h \
-ioam/export/ioam_export_thread.c
+IOAM_EXPORT_SRC = \
+ ioam/export/ioam_export.c \
+ ioam/export/node.c \
+ ioam/export/ioam_export.api.h \
+ ioam/export/ioam_export_thread.c
-BUILT_SOURCES += \
+IOAM_EXPORT_BUILT_SRC = \
ioam/export/ioam_export.api.h \
ioam/export/ioam_export.api.json
-noinst_HEADERS += \
- ioam/export/ioam_export_all_api_h.h \
- ioam/export/ioam_export_msg_enum.h \
- ioam/export/ioam_export.api.h
+IOAM_EXPORT_NOINST_HDR = \
+ ioam/export/ioam_export_all_api_h.h \
+ ioam/export/ioam_export_msg_enum.h \
+ ioam/export/ioam_export.api.h
-ioam_export_test_plugin_la_SOURCES = \
- ioam/export/ioam_export_test.c \
- ioam/export/ioam_export_plugin.api.h
+ioam_export_test_plugin_la_SOURCES = \
+ ioam/export/ioam_export_test.c \
+ ioam/export/ioam_export_plugin.api.h
vppapitestplugins_LTLIBRARIES += ioam_export_test_plugin.la
-vppplugins_LTLIBRARIES += ioam_export_plugin.la
########################################
# iOAM Trace
########################################
-libioam_trace_plugin_la_SOURCES = \
+IOAM_TRACE_SRC = \
ioam/lib-trace/trace_util.c \
ioam/encap/ip6_ioam_trace.c \
ioam/lib-trace/trace_util.h \
ioam/lib-trace/trace_api.c
-BUILT_SOURCES += \
+IOAM_TRACE_BUILT_SRC = \
ioam/lib-trace/trace.api.h \
ioam/lib-trace/trace.api.json
-noinst_HEADERS += \
+IOAM_TRACE_NOINST_HDR = \
ioam/export/ioam_export_all_api_h.h \
- ioam/lib-trace/trace_all_api_h.h \
- ioam/lib-trace/trace_msg_enum.h \
- ioam/lib-trace/trace.api.h \
+ ioam/lib-trace/trace_all_api_h.h \
+ ioam/lib-trace/trace_msg_enum.h \
+ ioam/lib-trace/trace.api.h \
ioam/lib-trace/trace_util.h
ioam_trace_test_plugin_la_SOURCES = \
- ioam/lib-trace/trace_test.c \
+ ioam/lib-trace/trace_test.c \
ioam/lib-trace/trace_plugin.api.h
vppapitestplugins_LTLIBRARIES += ioam_trace_test_plugin.la
-vppplugins_LTLIBRARIES += libioam_trace_plugin.la
########################################
# VxLAN-GPE
########################################
-libioam_vxlan_gpe_plugin_la_SOURCES = \
- ioam/lib-vxlan-gpe/ioam_encap.c \
- ioam/lib-vxlan-gpe/ioam_decap.c \
- ioam/lib-vxlan-gpe/ioam_transit.c \
- ioam/lib-vxlan-gpe/ioam_pop.c \
- ioam/lib-vxlan-gpe/vxlan_gpe_api.c \
- ioam/lib-vxlan-gpe/vxlan_gpe_ioam_trace.c \
- ioam/lib-vxlan-gpe/vxlan_gpe_ioam.c \
- ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.c \
- ioam/export-vxlan-gpe/vxlan_gpe_node.c \
- ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.api.h\
+IOAM_VXLAN_GPE_SRC = \
+ ioam/lib-vxlan-gpe/ioam_encap.c \
+ ioam/lib-vxlan-gpe/ioam_decap.c \
+ ioam/lib-vxlan-gpe/ioam_transit.c \
+ ioam/lib-vxlan-gpe/ioam_pop.c \
+ ioam/lib-vxlan-gpe/vxlan_gpe_api.c \
+ ioam/lib-vxlan-gpe/vxlan_gpe_ioam_trace.c \
+ ioam/lib-vxlan-gpe/vxlan_gpe_ioam.c \
+ ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.c \
+ ioam/export-vxlan-gpe/vxlan_gpe_node.c \
+ ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.api.h \
ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_thread.c
-BUILT_SOURCES += \
- ioam/lib-vxlan-gpe/vxlan_gpe.api.h \
- ioam/lib-vxlan-gpe/vxlan_gpe.api.json \
+IOAM_VXLAN_GPE_BUILT_SRC = \
+ ioam/lib-vxlan-gpe/vxlan_gpe.api.h \
+ ioam/lib-vxlan-gpe/vxlan_gpe.api.json \
ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.api.h \
ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.api.json
-noinst_HEADERS += \
- ioam/export/ioam_export_all_api_h.h \
- ioam/lib-vxlan-gpe/vxlan_gpe_all_api_h.h \
- ioam/lib-vxlan-gpe/vxlan_gpe_msg_enum.h \
- ioam/lib-vxlan-gpe/vxlan_gpe.api.h \
- ioam/lib-vxlan-gpe/vxlan_gpe_ioam_util.h \
- ioam/lib-vxlan-gpe/vxlan_gpe_ioam_packet.h \
- ioam/lib-vxlan-gpe/vxlan_gpe_ioam.h \
- ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_all_api_h.h \
- ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_msg_enum.h \
+IOAM_VXLAN_GPE_NOINST_HDR = \
+ ioam/export/ioam_export_all_api_h.h \
+ ioam/lib-vxlan-gpe/vxlan_gpe_all_api_h.h \
+ ioam/lib-vxlan-gpe/vxlan_gpe_msg_enum.h \
+ ioam/lib-vxlan-gpe/vxlan_gpe.api.h \
+ ioam/lib-vxlan-gpe/vxlan_gpe_ioam_util.h \
+ ioam/lib-vxlan-gpe/vxlan_gpe_ioam_packet.h \
+ ioam/lib-vxlan-gpe/vxlan_gpe_ioam.h \
+ ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_all_api_h.h \
+ ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_msg_enum.h \
ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.api.h
-ioam_vxlan_gpe_test_plugin_la_SOURCES = \
+ioam_vxlan_gpe_test_plugin_la_SOURCES = \
ioam/lib-vxlan-gpe/vxlan_gpe_test.c \
ioam/lib-vxlan-gpe/vxlan_gpe_plugin.api.h
-libioam_vxlan_gpe_plugin_la_LIBADD = libioam_trace_plugin.la
-
vppapitestplugins_LTLIBRARIES += ioam_vxlan_gpe_test_plugin.la
-vppplugins_LTLIBRARIES += libioam_vxlan_gpe_plugin.la
vxlan_gpe_ioam_export_test_plugin_la_SOURCES = \
ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_test.c \
@@ -170,26 +164,53 @@ vxlan_gpe_ioam_export_test_plugin_la_SOURCES = \
vppapitestplugins_LTLIBRARIES += vxlan_gpe_ioam_export_test_plugin.la
########################################
-# iOAM E2E plugin
+# iOAM E2E
########################################
-ioam_e2e_plugin_la_SOURCES = \
+IOAM_E2E_SRC = \
ioam/encap/ip6_ioam_e2e.c \
ioam/encap/ip6_ioam_seqno.c \
ioam/encap/ip6_ioam_seqno_analyse.c
-noinst_HEADERS += \
- ioam/encap/ip6_ioam_e2e.h \
+IOAM_E2E_BUILT_SRC = \
+ ioam/encap/ip6_ioam_e2e.h \
ioam/encap/ip6_ioam_seqno.h
-vppplugins_LTLIBRARIES += ioam_e2e_plugin.la
+########################################
+# iOAM plugins
+########################################
+
+vppapitestpluginsdir = ${libdir}/vpp_api_test_plugins
+vpppluginsdir = ${libdir}/vpp_plugins
+
+ioam_plugin_la_SOURCES = \
+ $(IOAM_POT_SRC) \
+ $(IOAM_EXPORT_SRC) \
+ $(IOAM_TRACE_SRC) \
+ $(IOAM_VXLAN_GPE_SRC) \
+ $(IOAM_E2E_SRC)
+
+BUILT_SOURCES = \
+ $(IOAM_POT_BUILT_SRC) \
+ $(IOAM_EXPORT_BUILT_SRC) \
+ $(IOAM_TRACE_BUILT_SRC) \
+ $(IOAM_VXLAN_GPE_BUILT_SRC) \
+ $(IOAM_E2E_BUILT_SRC)
+
+noinst_HEADERS = \
+ $(IOAM_POT_NOINST_HDR) \
+ $(IOAM_EXPORT_NOINST_HDR) \
+ $(IOAM_TRACE_NOINST_HDR) \
+ $(IOAM_VXLAN_GPE_NOINST_HDR) \
+ $(IOAM_E2E_NOINST_HDR)
+
+vppplugins_LTLIBRARIES = ioam_plugin.la
# Remove *.la files
install-data-hook:
@(cd $(vpppluginsdir) && $(RM) $(vppplugins_LTLIBRARIES))
@(cd $(vppapitestpluginsdir) && $(RM) $(vppapitestplugins_LTLIBRARIES))
-
#
# Java code generation
#
diff --git a/plugins/ioam-plugin/ioam/encap/ip6_ioam_e2e.c b/plugins/ioam-plugin/ioam/encap/ip6_ioam_e2e.c
index 0839cdceca7..2831a351d4f 100644
--- a/plugins/ioam-plugin/ioam/encap/ip6_ioam_e2e.c
+++ b/plugins/ioam-plugin/ioam/encap/ip6_ioam_e2e.c
@@ -25,8 +25,6 @@
#include <vppinfra/elog.h>
#include <vnet/ip/ip6_hop_by_hop.h>
-#include <vnet/plugin/plugin.h>
-
#include "ip6_ioam_e2e.h"
ioam_e2e_main_t ioam_e2e_main;
@@ -167,23 +165,6 @@ VLIB_CLI_COMMAND (ioam_show_e2e_cmd, static) = {
};
/*
- * This routine exists to convince the vlib plugin framework that
- * we haven't accidentally copied a random .dll into the plugin directory.
- *
- * Also collects global variable pointers passed from the vpp engine
- */
-clib_error_t *
-vlib_plugin_register (vlib_main_t * vm, vnet_plugin_handoff_t * h,
- int from_early_init)
-{
- clib_error_t * error = 0;
-
- ioam_e2e_main.vlib_main = vm;
- ioam_e2e_main.vnet_main = h->vnet_main;
- return error;
-}
-
-/*
* Init handler E2E headet handling.
* Init hanlder registers encap, decap, trace and Rewrite handlers.
*/
@@ -222,6 +203,9 @@ ioam_e2e_init (vlib_main_t * vm)
"HBH_OPTION_TYPE_IOAM_EDGE_TO_EDGE Flow handler failed"));
}
+ ioam_e2e_main.vlib_main = vm;
+ ioam_e2e_main.vnet_main = vnet_get_main();
+
return (0);
}
diff --git a/plugins/ioam-plugin/ioam/encap/ip6_ioam_trace.c b/plugins/ioam-plugin/ioam/encap/ip6_ioam_trace.c
index e63db6e4ec5..3a6758cd859 100644
--- a/plugins/ioam-plugin/ioam/encap/ip6_ioam_trace.c
+++ b/plugins/ioam-plugin/ioam/encap/ip6_ioam_trace.c
@@ -24,6 +24,7 @@
#include <vppinfra/hash.h>
#include <vppinfra/error.h>
#include <vppinfra/elog.h>
+#include <vnet/plugin/plugin.h>
#include <ioam/lib-trace/trace_util.h>
@@ -348,6 +349,18 @@ VLIB_CLI_COMMAND (ip6_show_ioam_trace_cmd, static) = {
};
/* *INDENT-ON* */
+/*
+ * This routine exists to convince the vlib plugin framework that
+ * we haven't accidentally copied a random .dll into the plugin directory.
+ *
+ * Also collects global variable pointers passed from the vpp engine
+ */
+clib_error_t *
+vlib_plugin_register (vlib_main_t * vm, vnet_plugin_handoff_t * h,
+ int from_early_init)
+{
+ return 0;
+}
static clib_error_t *
ip6_hop_by_hop_ioam_trace_init (vlib_main_t * vm)
diff --git a/plugins/ioam-plugin/ioam/export-common/ioam_export.h b/plugins/ioam-plugin/ioam/export-common/ioam_export.h
index a9ec8d00677..e6ab0344958 100644
--- a/plugins/ioam-plugin/ioam/export-common/ioam_export.h
+++ b/plugins/ioam-plugin/ioam/export-common/ioam_export.h
@@ -76,7 +76,8 @@ typedef struct
ioam_export_main_t ioam_export_main;
ioam_export_main_t vxlan_gpe_ioam_export_main;
-vlib_node_registration_t export_node;
+extern vlib_node_registration_t export_node;
+extern vlib_node_registration_t vxlan_export_node;
#define DEFAULT_EXPORT_SIZE (3 * CLIB_CACHE_LINE_BYTES)
/*
diff --git a/plugins/ioam-plugin/ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.c b/plugins/ioam-plugin/ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.c
index bab8d977062..0924d68f6ff 100644
--- a/plugins/ioam-plugin/ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.c
+++ b/plugins/ioam-plugin/ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.c
@@ -92,7 +92,7 @@ vxlan_gpe_ioam_export_enable_disable (ioam_export_main_t * em,
ip4_address_t * src_address)
{
vlib_main_t *vm = em->vlib_main;
- u32 node_index = export_node.index;
+ u32 node_index = vxlan_export_node.index;
vlib_node_t *vxlan_gpe_decap_ioam_node = NULL;
if (is_disable == 0)
diff --git a/plugins/ioam-plugin/ioam/export-vxlan-gpe/vxlan_gpe_node.c b/plugins/ioam-plugin/ioam/export-vxlan-gpe/vxlan_gpe_node.c
index 722c2b061c0..f75b7081c09 100644
--- a/plugins/ioam-plugin/ioam/export-vxlan-gpe/vxlan_gpe_node.c
+++ b/plugins/ioam-plugin/ioam/export-vxlan-gpe/vxlan_gpe_node.c
@@ -40,7 +40,7 @@ format_export_trace (u8 * s, va_list * args)
return s;
}
-vlib_node_registration_t export_node;
+vlib_node_registration_t vxlan_export_node;
#define foreach_export_error \
_(RECORDED, "Packets recorded for export")
@@ -137,7 +137,7 @@ vxlan_gpe_export_node_fn (vlib_main_t * vm,
* Node for VXLAN-GPE export
*/
/* *INDENT-OFF* */
-VLIB_REGISTER_NODE (export_node) =
+VLIB_REGISTER_NODE (vxlan_export_node) =
{
.function = vxlan_gpe_export_node_fn,
.name = "vxlan-gpe-ioam-export",
diff --git a/plugins/ioam-plugin/ioam/export/ioam_export.c b/plugins/ioam-plugin/ioam/export/ioam_export.c
index b122e445b28..06634baaf4b 100644
--- a/plugins/ioam-plugin/ioam/export/ioam_export.c
+++ b/plugins/ioam-plugin/ioam/export/ioam_export.c
@@ -81,26 +81,6 @@ do { \
#define foreach_ioam_export_plugin_api_msg \
_(IOAM_EXPORT_IP6_ENABLE_DISABLE, ioam_export_ip6_enable_disable)
-/*
- * This routine exists to convince the vlib plugin framework that
- * we haven't accidentally copied a random .dll into the plugin directory.
- *
- * Also collects global variable pointers passed from the vpp engine
- */
-
-clib_error_t *
-vlib_plugin_register (vlib_main_t * vm, vnet_plugin_handoff_t * h,
- int from_early_init)
-{
- ioam_export_main_t *em = &ioam_export_main;
- clib_error_t *error = 0;
-
- em->vlib_main = vm;
- em->vnet_main = h->vnet_main;
-
- return error;
-}
-
/* Action function shared between message handler and debug CLI */
int
@@ -250,6 +230,9 @@ ioam_export_init (vlib_main_t * vm)
u32 node_index = export_node.index;
vlib_node_t *ip6_hbyh_node = NULL;
+ em->vlib_main = vm;
+ em->vnet_main = vnet_get_main ();
+
name = format (0, "ioam_export_%08x%c", api_version, 0);
/* Ask for a correctly-sized block of API message decode slots */
diff --git a/plugins/ioam-plugin/ioam/lib-pot/pot_api.c b/plugins/ioam-plugin/ioam/lib-pot/pot_api.c
index d3af7b4036a..04c2aaa59a3 100644
--- a/plugins/ioam-plugin/ioam/lib-pot/pot_api.c
+++ b/plugins/ioam-plugin/ioam/lib-pot/pot_api.c
@@ -213,26 +213,6 @@ static void vl_api_pot_profile_del_t_handler
REPLY_MACRO(VL_API_POT_PROFILE_DEL_REPLY);
}
-
-/*
- * This routine exists to convince the vlib plugin framework that
- * we haven't accidentally copied a random .dll into the plugin directory.
- *
- * Also collects global variable pointers passed from the vpp engine
- */
-
-clib_error_t *
-vlib_plugin_register (vlib_main_t * vm, vnet_plugin_handoff_t * h,
- int from_early_init)
-{
- pot_main_t * sm = &pot_main;
- clib_error_t * error = 0;
-
- sm->vlib_main = vm;
- sm->vnet_main = h->vnet_main;
- return error;
-}
-
/* Set up the API message handling tables */
static clib_error_t *
pot_plugin_api_hookup (vlib_main_t *vm)
@@ -273,6 +253,10 @@ static clib_error_t * pot_init (vlib_main_t * vm)
bzero(sm, sizeof(pot_main));
(void)pot_util_init();
+
+ sm->vlib_main = vm;
+ sm->vnet_main = vnet_get_main();
+
name = format (0, "ioam_pot_%08x%c", api_version, 0);
/* Ask for a correctly-sized block of API message decode slots */
diff --git a/plugins/ioam-plugin/ioam/lib-trace/trace_api.c b/plugins/ioam-plugin/ioam/lib-trace/trace_api.c
index 7e0d708e155..2ada5b7e5af 100644
--- a/plugins/ioam-plugin/ioam/lib-trace/trace_api.c
+++ b/plugins/ioam-plugin/ioam/lib-trace/trace_api.c
@@ -165,25 +165,6 @@ static void vl_api_trace_profile_show_config_t_handler
}
}
-/*
- * This routine exists to convince the vlib plugin framework that
- * we haven't accidentally copied a random .dll into the plugin directory.
- *
- * Also collects global variable pointers passed from the vpp engine
- */
-
-clib_error_t *
-vlib_plugin_register (vlib_main_t * vm, vnet_plugin_handoff_t * h,
- int from_early_init)
-{
- trace_main_t *sm = &trace_main;
- clib_error_t *error = 0;
-
- sm->vlib_main = vm;
- sm->vnet_main = h->vnet_main;
- return error;
-}
-
/* Set up the API message handling tables */
static clib_error_t *
trace_plugin_api_hookup (vlib_main_t * vm)
@@ -225,6 +206,10 @@ trace_init (vlib_main_t * vm)
bzero (sm, sizeof (trace_main));
(void) trace_util_init ();
+
+ sm->vlib_main = vm;
+ sm->vnet_main = vnet_get_main ();
+
name = format (0, "ioam_trace_%08x%c", api_version, 0);
/* Ask for a correctly-sized block of API message decode slots */
diff --git a/plugins/ioam-plugin/ioam/lib-vxlan-gpe/vxlan_gpe_api.c b/plugins/ioam-plugin/ioam/lib-vxlan-gpe/vxlan_gpe_api.c
index 68752365f82..247bcf590f3 100644
--- a/plugins/ioam-plugin/ioam/lib-vxlan-gpe/vxlan_gpe_api.c
+++ b/plugins/ioam-plugin/ioam/lib-vxlan-gpe/vxlan_gpe_api.c
@@ -284,28 +284,6 @@ static void vl_api_vxlan_gpe_ioam_transit_disable_t_handler
VXLAN_GPE_REPLY_MACRO (VL_API_VXLAN_GPE_IOAM_TRANSIT_DISABLE_REPLY);
}
-
-/*
- * This routine exists to convince the vlib plugin framework that
- * we haven't accidentally copied a random .dll into the plugin directory.
- *
- * Also collects global variable pointers passed from the vpp engine
- */
-
-clib_error_t *
-vlib_plugin_register (vlib_main_t * vm, vnet_plugin_handoff_t * h,
- int from_early_init)
-{
- vxlan_gpe_ioam_main_t *sm = &vxlan_gpe_ioam_main;
- clib_error_t *error = 0;
-
- sm->vlib_main = vm;
- sm->vnet_main = h->vnet_main;
- sm->unix_time_0 = (u32) time (0); /* Store starting time */
- sm->vlib_time_0 = vlib_time_now (vm);
- return error;
-}
-
/* Set up the API message handling tables */
static clib_error_t *
vxlan_gpe_plugin_api_hookup (vlib_main_t * vm)
@@ -337,6 +315,11 @@ vxlan_gpe_init (vlib_main_t * vm)
vlib_node_t *vxlan_gpe_decap_node = NULL;
uword next_node = 0;
+ sm->vlib_main = vm;
+ sm->vnet_main = vnet_get_main ();
+ sm->unix_time_0 = (u32) time (0); /* Store starting time */
+ sm->vlib_time_0 = vlib_time_now (vm);
+
name = format (0, "ioam_vxlan_gpe_%08x%c", api_version, 0);
/* Ask for a correctly-sized block of API message decode slots */