Fix bugs in emacs plugin templates
use api_helper_macros.h declare plugin_main_t external in the header file declare plugin_main_t instance in plugin.c setup main_t->vlib_main, main_t->vnet_main in the init routine Change-Id: Ib8c742a60c63adfe9724447e1a2acc8c7723e90c Signed-off-by: Dave Barach <dave@barachs.net>
This commit is contained in:

committed by
Damjan Marion

parent
a46b4c9b5e
commit
104404348f
@ -21,6 +21,7 @@ nil
|
|||||||
'(if (not (boundp 'plugin-name))
|
'(if (not (boundp 'plugin-name))
|
||||||
(setq plugin-name (read-string "Plugin name: ")))
|
(setq plugin-name (read-string "Plugin name: ")))
|
||||||
'(setq PLUGIN-NAME (upcase plugin-name))
|
'(setq PLUGIN-NAME (upcase plugin-name))
|
||||||
|
'(setq capital-oh-en "ON")
|
||||||
"
|
"
|
||||||
/*
|
/*
|
||||||
* " plugin-name ".h - skeleton vpp engine plug-in header file
|
* " plugin-name ".h - skeleton vpp engine plug-in header file
|
||||||
@ -63,4 +64,13 @@ typedef struct {
|
|||||||
vlib_node_registration_t " plugin-name "_node;
|
vlib_node_registration_t " plugin-name "_node;
|
||||||
|
|
||||||
#endif /* __included_" plugin-name "_h__ */
|
#endif /* __included_" plugin-name "_h__ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fd.io coding-style-patch-verification: " capital-oh-en "
|
||||||
|
*
|
||||||
|
* Local Variables:
|
||||||
|
* eval: (c-set-style \"gnu\")
|
||||||
|
* End:
|
||||||
|
*/
|
||||||
|
|
||||||
")
|
")
|
||||||
|
@ -71,29 +71,10 @@ nil
|
|||||||
#include <" plugin-name "/" plugin-name "_all_api_h.h>
|
#include <" plugin-name "/" plugin-name "_all_api_h.h>
|
||||||
#undef vl_api_version
|
#undef vl_api_version
|
||||||
|
|
||||||
/*
|
#define REPLY_MSG_ID_BASE sm->msg_id_base
|
||||||
* A handy macro to set up a message reply.
|
#include <vlibapi/api_helper_macros.h>
|
||||||
* Assumes that the following variables are available:
|
|
||||||
* mp - pointer to request message
|
|
||||||
* rmp - pointer to reply message type
|
|
||||||
* rv - return value
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define REPLY_MACRO(t) \\
|
|
||||||
do { \\
|
|
||||||
unix_shared_memory_queue_t * q = \\
|
|
||||||
vl_api_client_index_to_input_queue (mp->client_index); \\
|
|
||||||
if (!q) \\
|
|
||||||
return; \\
|
|
||||||
\\
|
|
||||||
rmp = vl_msg_api_alloc (sizeof (*rmp)); \\
|
|
||||||
rmp->_vl_msg_id = ntohs((t)+sm->msg_id_base); \\
|
|
||||||
rmp->context = mp->context; \\
|
|
||||||
rmp->retval = ntohl(rv); \\
|
|
||||||
\\
|
|
||||||
vl_msg_api_send_shmem (q, (u8 *)&rmp); \\
|
|
||||||
} while(0);
|
|
||||||
|
|
||||||
|
extern " plugin-name "_main_t " plugin-name "_main;
|
||||||
|
|
||||||
/* List of message types that this plugin understands */
|
/* List of message types that this plugin understands */
|
||||||
|
|
||||||
@ -234,6 +215,9 @@ static clib_error_t * " plugin-name "_init (vlib_main_t * vm)
|
|||||||
clib_error_t * error = 0;
|
clib_error_t * error = 0;
|
||||||
u8 * name;
|
u8 * name;
|
||||||
|
|
||||||
|
sm->vlib_main = vm;
|
||||||
|
sm->vnet_main = vnet_get_main();
|
||||||
|
|
||||||
name = format (0, \"" plugin-name "_%08x%c\", api_version, 0);
|
name = format (0, \"" plugin-name "_%08x%c\", api_version, 0);
|
||||||
|
|
||||||
/* Ask for a correctly-sized block of API message decode slots */
|
/* Ask for a correctly-sized block of API message decode slots */
|
||||||
@ -265,6 +249,7 @@ VNET_FEATURE_INIT (" plugin-name ", static) =
|
|||||||
VLIB_PLUGIN_REGISTER () =
|
VLIB_PLUGIN_REGISTER () =
|
||||||
{
|
{
|
||||||
.version = VPP_BUILD_VER,
|
.version = VPP_BUILD_VER,
|
||||||
|
.description = \"" plugin-name " plugin description goes here\",
|
||||||
};
|
};
|
||||||
/* *INDENT-ON* */
|
/* *INDENT-ON* */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user