aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/osi/node.c
diff options
context:
space:
mode:
authorJoel Ahn <joeahn@cisco.com>2024-11-28 13:54:10 -0800
committerDave Wallace <dwallacelf@gmail.com>2024-12-06 22:18:42 +0000
commit72bd2e585d75b88911956d721753682dfa24001a (patch)
treebed016a036da7966897c19316a465b30376b38ad /src/plugins/osi/node.c
parent41ae1e20e6cc768e5562ad89d1f35c63d471b9b9 (diff)
misc: move ppp to a plugin
Type: refactor Move PPP folder under vnet to the plugin folder, and modify some of path of the #inlude<header> to the new path. Add a plugin.c file to register a plugin. Resolve ip4_input and ip6_input's dependency on PPP functions by moving those calls to PPP's initialization. Resolve osi's inter-plugin dependency on PPP by having it retrieve the function pointer Add ppp to the list of valid spelling words JIRA: VPP-2052 Change-Id: I1a26ef0663a91857d13f7d87a3bb14bc38893194 Signed-off-by: Joel Ahn <joeahn@cisco.com>
Diffstat (limited to 'src/plugins/osi/node.c')
-rw-r--r--src/plugins/osi/node.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/plugins/osi/node.c b/src/plugins/osi/node.c
index a36b1525e0e..51a3dc6424d 100644
--- a/src/plugins/osi/node.c
+++ b/src/plugins/osi/node.c
@@ -40,9 +40,10 @@
#include <vlib/vlib.h>
#include <vnet/pg/pg.h>
#include <osi/osi.h>
-#include <vnet/ppp/ppp.h>
+#include <plugins/ppp/ppp.h>
#include <vnet/hdlc/hdlc.h>
#include <vnet/llc/llc.h>
+#include <vnet/plugin/plugin.h>
#define foreach_osi_input_next \
_ (PUNT, "error-punt") \
@@ -271,11 +272,24 @@ osi_setup_node (vlib_main_t *vm, u32 node_index)
pn->unformat_edit = unformat_pg_osi_header;
}
+typedef void (*ppp_register_input_protocol_fn) (vlib_main_t *vm,
+ ppp_protocol_t protocol,
+ u32 node_index);
+
static clib_error_t *
osi_input_init (vlib_main_t * vm)
{
clib_error_t *error = 0;
osi_main_t *lm = &osi_main;
+ ppp_register_input_protocol_fn ppp_register_input_protocol_fn_ptr;
+
+ ppp_register_input_protocol_fn_ptr =
+ vlib_get_plugin_symbol ("ppp_plugin.so", "ppp_register_input_protocol");
+ if (ppp_register_input_protocol_fn_ptr == 0)
+ {
+ error = clib_error_return (0, "ppp_plugin.so is not loaded");
+ return error;
+ }
if ((error = vlib_call_init_function (vm, osi_init)))
return error;
@@ -288,7 +302,8 @@ osi_input_init (vlib_main_t * vm)
lm->input_next_by_protocol[i] = OSI_INPUT_NEXT_DROP;
}
- ppp_register_input_protocol (vm, PPP_PROTOCOL_osi, osi_input_node.index);
+ ppp_register_input_protocol_fn_ptr (vm, PPP_PROTOCOL_osi,
+ osi_input_node.index);
hdlc_register_input_protocol (vm, HDLC_PROTOCOL_osi, osi_input_node.index);
llc_register_input_protocol (vm, LLC_PROTOCOL_osi_layer1,
osi_input_node.index);