From 913f4c9a8824c1bd167d3a103aec902a14c08697 Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Wed, 29 May 2019 09:59:51 -0400 Subject: emacs-skeleton: improve generated .api files Type cleanups: s/u8/bool/ for "enable_disable" s/u32/vl_api_interface_index_t/ for "sw_if_index" Add an API version stamp. Add a doxygen tag for the binary API. Add Apache-2 licence text. Change-Id: I2fa168336efb0f1d9b9b6dec945589cbc5fd5595 Signed-off-by: Dave Barach --- extras/emacs/plugin-api-skel.el | 53 ++++++++++++++++++++++++++++++---------- extras/emacs/plugin-main-skel.el | 1 + extras/emacs/plugin-test-skel.el | 33 +++++++++++++------------ 3 files changed, 58 insertions(+), 29 deletions(-) (limited to 'extras') diff --git a/extras/emacs/plugin-api-skel.el b/extras/emacs/plugin-api-skel.el index 74519e70d83..f776ce2a44c 100644 --- a/extras/emacs/plugin-api-skel.el +++ b/extras/emacs/plugin-api-skel.el @@ -21,10 +21,45 @@ nil '(if (not (boundp 'plugin-name)) (setq plugin-name (read-string "Plugin name: "))) '(setq PLUGIN-NAME (upcase plugin-name)) -" -/* Define a simple enable-disable binary API to control the feature */ +"/* + * " plugin-name ".api - binary API skeleton + * + * Copyright (c) + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ -define " plugin-name "_enable_disable { +/** + * @file " plugin-name ".api + * @brief VPP control-plane API messages. + * + * This file defines VPP control-plane binary API messages which are generally + * called through a shared memory interface. + */ + +/* Version and type recitations */ + +option version = \"0.1.0\"; +import \"vnet/interface_types.api\"; + + +/** @brief API to enable / disable " plugin-name " on an interface + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param enable_disable - 1 to enable, 0 to disable the feature + @param sw_if_index - interface handle +*/ + +autoreply define " plugin-name "_enable_disable { /* Client identifier, set from api_main.my_client_index */ u32 client_index; @@ -32,17 +67,9 @@ define " plugin-name "_enable_disable { u32 context; /* Enable / disable the feature */ - u8 enable_disable; + bool enable_disable; /* Interface handle */ - u32 sw_if_index; -}; - -define " plugin-name "_enable_disable_reply { - /* From the request */ - u32 context; - - /* Return value, zero means all OK */ - i32 retval; + vl_api_interface_index_t sw_if_index; }; ") diff --git a/extras/emacs/plugin-main-skel.el b/extras/emacs/plugin-main-skel.el index 873f72da39d..632a1329c2d 100644 --- a/extras/emacs/plugin-main-skel.el +++ b/extras/emacs/plugin-main-skel.el @@ -47,6 +47,7 @@ nil #include #include #include +#include /* define message IDs */ #include <" plugin-name "/" plugin-name "_msg_enum.h> diff --git a/extras/emacs/plugin-test-skel.el b/extras/emacs/plugin-test-skel.el index 1de1b9861af..6357a3d7d4d 100644 --- a/extras/emacs/plugin-test-skel.el +++ b/extras/emacs/plugin-test-skel.el @@ -24,7 +24,7 @@ nil '(setq capital-oh-en "ON") '(setq main-p (concat (substring plugin-name 0 1) "tmp")) "/* - * " plugin-name ".c - skeleton vpp-api-test plug-in + * " plugin-name ".c - skeleton vpp-api-test plug-in * * Copyright (c) * Licensed under the Apache License, Version 2.0 (the \"License\"); @@ -43,6 +43,7 @@ nil #include #include #include +#include uword unformat_sw_if_index (unformat_input_t * input, va_list * args); @@ -51,19 +52,19 @@ uword unformat_sw_if_index (unformat_input_t * input, va_list * args); /* define message structures */ #define vl_typedefs -#include <" plugin-name "/" plugin-name "_all_api_h.h> +#include <" plugin-name "/" plugin-name "_all_api_h.h> #undef vl_typedefs /* declare message handlers for each api */ #define vl_endianfun /* define message structures */ -#include <" plugin-name "/" plugin-name "_all_api_h.h> +#include <" plugin-name "/" plugin-name "_all_api_h.h> #undef vl_endianfun /* instantiate all the print functions we know about */ #define vl_print(handle, ...) #define vl_printfun -#include <" plugin-name "/" plugin-name "_all_api_h.h> +#include <" plugin-name "/" plugin-name "_all_api_h.h> #undef vl_printfun /* Get the API version number. */ @@ -72,7 +73,7 @@ uword unformat_sw_if_index (unformat_input_t * input, va_list * args); #undef vl_api_version -typedef struct +typedef struct { /* API message ID base */ u16 msg_id_base; @@ -103,7 +104,7 @@ _(" plugin-name "_enable_disable_reply) foreach_standard_reply_retval_handler; #undef _ -/* +/* * Table of message reply handlers, must include boilerplate handlers * we just generated */ @@ -120,7 +121,7 @@ static int api_" plugin-name "_enable_disable (vat_main_t * vam) int ret; /* Parse args required to build the message */ - while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) + while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT) { if (unformat (i, \"%U\", unformat_sw_if_index, vam, &sw_if_index)) ; @@ -131,13 +132,13 @@ static int api_" plugin-name "_enable_disable (vat_main_t * vam) else break; } - - if (sw_if_index == ~0) + + if (sw_if_index == ~0) { errmsg (\"missing interface name / explicit sw_if_index number \\n\"); return -99; } - + /* Construct the API message */ M(" PLUGIN-NAME "_ENABLE_DISABLE, mp); mp->sw_if_index = ntohl (sw_if_index); @@ -151,7 +152,7 @@ static int api_" plugin-name "_enable_disable (vat_main_t * vam) return ret; } -/* +/* * List of messages that the api test plugin sends, * and that the data plane plugin processes */ @@ -169,15 +170,15 @@ static void " plugin-name "_api_hookup (vat_main_t *vam) vl_noop_handler, \\ vl_api_##n##_t_endian, \\ vl_api_##n##_t_print, \\ - sizeof(vl_api_##n##_t), 1); + sizeof(vl_api_##n##_t), 1); foreach_vpe_api_reply_msg; #undef _ /* API messages we can send */ #define _(n,h) hash_set_mem (vam->function_by_name, #n, api_##n); foreach_vpe_api_msg; -#undef _ - +#undef _ + /* Help strings */ #define _(n,h) hash_set_mem (vam->help_by_name, #n, h); foreach_vpe_api_msg; @@ -197,9 +198,9 @@ clib_error_t * vat_plugin_register (vat_main_t *vam) if (" main-p "->msg_id_base != (u16) ~0) " plugin-name "_api_hookup (vam); - + vec_free(name); - + return 0; } /* -- cgit 1.2.3-korg