X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=extras%2Femacs%2Fplugin-main-skel.el;h=e8969c85488a14a4de72acc5467b426fadf6484f;hb=7c0eb56f4;hp=31b258eb11fdf123ae4cab550c26fcde2c8a03f3;hpb=35465dc0be7d4e607f5bc3d094e2e845e61cea70;p=vpp.git diff --git a/extras/emacs/plugin-main-skel.el b/extras/emacs/plugin-main-skel.el index 31b258eb11f..e8969c85488 100644 --- a/extras/emacs/plugin-main-skel.el +++ b/extras/emacs/plugin-main-skel.el @@ -47,41 +47,16 @@ nil #include #include #include +#include -/* define message IDs */ -#include <" plugin-name "/" plugin-name "_msg_enum.h> - -/* define message structures */ -#define vl_typedefs -#include <" plugin-name "/" plugin-name "_all_api_h.h> -#undef vl_typedefs - -/* define generated endian-swappers */ -#define vl_endianfun -#include <" plugin-name "/" plugin-name "_all_api_h.h> -#undef vl_endianfun - -/* instantiate all the print functions we know about */ -#define vl_print(handle, ...) vlib_cli_output (handle, __VA_ARGS__) -#define vl_printfun -#include <" plugin-name "/" plugin-name "_all_api_h.h> -#undef vl_printfun - -/* Get the API version number */ -#define vl_api_version(n,v) static u32 api_version=(v); -#include <" plugin-name "/" plugin-name "_all_api_h.h> -#undef vl_api_version +#include <" plugin-name "/" plugin-name ".api_enum.h> +#include <" plugin-name "/" plugin-name ".api_types.h> #define REPLY_MSG_ID_BASE " main-p "->msg_id_base #include " plugin-name "_main_t " plugin-name "_main; -/* List of message types that this plugin understands */ - -#define foreach_" plugin-name "_plugin_api_msg \\ -_(" PLUGIN-NAME "_ENABLE_DISABLE, " plugin-name "_enable_disable) - /* Action function shared between message handler and debug CLI */ int " plugin-name "_enable_disable (" plugin-name "_main_t * " main-p ", u32 sw_if_index, @@ -100,14 +75,16 @@ int " plugin-name "_enable_disable (" plugin-name "_main_t * " main-p ", u32 sw_ if (sw->type != VNET_SW_INTERFACE_TYPE_HARDWARE) return VNET_API_ERROR_INVALID_SW_IF_INDEX; + " plugin-name "_create_periodic_process (" main-p "); + vnet_feature_enable_disable (\"device-input\", \"" plugin-name "\", sw_if_index, enable_disable, 0, 0); /* Send an event to enable/disable the periodic scanner process */ - vlib_process_signal_event (" main-p "->vlib_main, " plugin-name"_periodic_node.index, - " PLUGIN-NAME"_EVENT_PERIODIC_ENABLE_DISABLE, + vlib_process_signal_event (" main-p "->vlib_main, + " main-p"->periodic_node_index, + " PLUGIN-NAME"_EVENT_PERIODIC_ENABLE_DISABLE, (uword)enable_disable); - return rv; } @@ -183,59 +160,19 @@ static void vl_api_" plugin-name "_enable_disable_t_handler REPLY_MACRO(VL_API_" PLUGIN-NAME "_ENABLE_DISABLE_REPLY); } -/* Set up the API message handling tables */ -static clib_error_t * -" plugin-name "_plugin_api_hookup (vlib_main_t *vm) -{ - " plugin-name "_main_t * " main-p " = &" plugin-name "_main; -#define _(N,n) \\ - vl_msg_api_set_handlers((VL_API_##N + " main-p "->msg_id_base), \\ - #n, \\ - vl_api_##n##_t_handler, \\ - vl_noop_handler, \\ - vl_api_##n##_t_endian, \\ - vl_api_##n##_t_print, \\ - sizeof(vl_api_##n##_t), 1); - foreach_" plugin-name "_plugin_api_msg; -#undef _ - - return 0; -} - -#define vl_msg_name_crc_list -#include <" plugin-name "/" plugin-name "_all_api_h.h> -#undef vl_msg_name_crc_list - -static void -setup_message_id_table (" plugin-name "_main_t * " main-p ", api_main_t * am) -{ -#define _(id,n,crc) \ - vl_msg_api_add_msg_name_crc (am, #n \"_\" #crc, id + " main-p "->msg_id_base); - foreach_vl_msg_name_crc_" plugin-name" ; -#undef _ -} +/* API definitions */ +#include <" plugin-name "/" plugin-name ".api.c> static clib_error_t * " plugin-name "_init (vlib_main_t * vm) { " plugin-name "_main_t * " main-p " = &" plugin-name "_main; clib_error_t * error = 0; - u8 * name; " main-p "->vlib_main = vm; " main-p "->vnet_main = vnet_get_main(); - name = format (0, \"" plugin-name "_%08x%c\", api_version, 0); - - /* Ask for a correctly-sized block of API message decode slots */ - " main-p "->msg_id_base = vl_msg_api_get_msg_ids - ((char *) name, VL_MSG_FIRST_AVAILABLE); - - error = " plugin-name "_plugin_api_hookup (vm); - /* Add our API messages to the global name_crc hash table */ - setup_message_id_table (" main-p ", &api_main); - - vec_free(name); + " main-p "->msg_id_base = setup_message_id_table (); return error; }