diff options
author | 2024-11-28 13:54:10 -0800 | |
---|---|---|
committer | 2024-12-06 22:18:42 +0000 | |
commit | 72bd2e585d75b88911956d721753682dfa24001a (patch) | |
tree | bed016a036da7966897c19316a465b30376b38ad /src/plugins/osi/node.c | |
parent | 41ae1e20e6cc768e5562ad89d1f35c63d471b9b9 (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.c | 19 |
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); |