X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=extras%2Femacs%2Fplugin-main-skel.el;h=e8969c85488a14a4de72acc5467b426fadf6484f;hb=e5d34919b4561a5ee11e41dec6b0184537b39696;hp=632a1329c2d2c009d73b48734a8a5a06654ca829;hpb=913f4c9a8824c1bd167d3a103aec902a14c08697;p=vpp.git diff --git a/extras/emacs/plugin-main-skel.el b/extras/emacs/plugin-main-skel.el index 632a1329c2d..e8969c85488 100644 --- a/extras/emacs/plugin-main-skel.el +++ b/extras/emacs/plugin-main-skel.el @@ -49,40 +49,14 @@ nil #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, @@ -186,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; }