aboutsummaryrefslogtreecommitdiffstats
path: root/extras/emacs
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2018-04-03 14:58:14 -0400
committerDamjan Marion <dmarion.lists@gmail.com>2018-04-03 19:56:11 +0000
commit104404348fdb54504e65c39182d405bdcee926fd (patch)
tree840a913ac70393290c9847d65fe7fbe6a5a8d313 /extras/emacs
parenta46b4c9b5ed1d14719d1d33b4586ab83b1e8b976 (diff)
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>
Diffstat (limited to 'extras/emacs')
-rw-r--r--extras/emacs/plugin-h-skel.el10
-rw-r--r--extras/emacs/plugin-main-skel.el29
2 files changed, 17 insertions, 22 deletions
diff --git a/extras/emacs/plugin-h-skel.el b/extras/emacs/plugin-h-skel.el
index 8bf9b6fed23..94f60afcfa0 100644
--- a/extras/emacs/plugin-h-skel.el
+++ b/extras/emacs/plugin-h-skel.el
@@ -21,6 +21,7 @@ nil
'(if (not (boundp 'plugin-name))
(setq plugin-name (read-string "Plugin name: ")))
'(setq PLUGIN-NAME (upcase plugin-name))
+'(setq capital-oh-en "ON")
"
/*
* " plugin-name ".h - skeleton vpp engine plug-in header file
@@ -63,4 +64,13 @@ typedef struct {
vlib_node_registration_t " plugin-name "_node;
#endif /* __included_" plugin-name "_h__ */
+
+/*
+ * fd.io coding-style-patch-verification: " capital-oh-en "
+ *
+ * Local Variables:
+ * eval: (c-set-style \"gnu\")
+ * End:
+ */
+
")
diff --git a/extras/emacs/plugin-main-skel.el b/extras/emacs/plugin-main-skel.el
index db1147e75e5..47f030c44f1 100644
--- a/extras/emacs/plugin-main-skel.el
+++ b/extras/emacs/plugin-main-skel.el
@@ -71,29 +71,10 @@ nil
#include <" plugin-name "/" plugin-name "_all_api_h.h>
#undef vl_api_version
-/*
- * A handy macro to set up a message reply.
- * 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);
+#define REPLY_MSG_ID_BASE sm->msg_id_base
+#include <vlibapi/api_helper_macros.h>
+extern " plugin-name "_main_t " plugin-name "_main;
/* 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;
u8 * name;
+ sm->vlib_main = vm;
+ sm->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 */
@@ -265,6 +249,7 @@ VNET_FEATURE_INIT (" plugin-name ", static) =
VLIB_PLUGIN_REGISTER () =
{
.version = VPP_BUILD_VER,
+ .description = \"" plugin-name " plugin description goes here\",
};
/* *INDENT-ON* */