fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmocore/+/19667 )
Change subject: vty: add program specific attributes to VTY commands ...................................................................... vty: add program specific attributes to VTY commands Change-Id: I2c6c7b317b2b28ce70784c0cabd1b913e721be02 Related: SYS#4937 --- M TODO-RELEASE M include/osmocom/vty/command.h M include/osmocom/vty/vty.h 3 files changed, 32 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/67/19667/1 diff --git a/TODO-RELEASE b/TODO-RELEASE index 8ccfa49..964d072 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -7,3 +7,5 @@ # If any interfaces have been added since the last public release: c:r:a + 1. # If any interfaces have been removed or changed since the last public release: c:r:0. #library what description / commit summary line +libosmovty ABI change struct cmd_element: add a field for program specific attributes +libosmovty ABI change struct vty_app_info: optional program specific attributes description diff --git a/include/osmocom/vty/command.h b/include/osmocom/vty/command.h index da8d202..ca9acff 100644 --- a/include/osmocom/vty/command.h +++ b/include/osmocom/vty/command.h @@ -149,7 +149,8 @@ unsigned int cmdsize; /*!< Command index count. */ char *config; /*!< Configuration string */ vector subconfig; /*!< Sub configuration string */ - unsigned char attr; /*!< Command attributes */ + unsigned char attr; /*!< Command attributes (global) */ + unsigned char usrattr; /*!< Command attributes (program specific) */ }; /*! Command description structure. */ @@ -200,6 +201,16 @@ .daemon = dnum, \ }; +#define DEFUN_CMD_ELEMENT_ATTR_USRATTR(funcname, cmdname, cmdstr, helpstr, attrs, usrattrs) \ + static struct cmd_element cmdname = \ + { \ + .string = cmdstr, \ + .func = funcname, \ + .doc = helpstr, \ + .attr = attrs, \ + .usrattr = usrattrs, \ + }; + #define DEFUN_CMD_FUNC_DECL(funcname) \ static int funcname (struct cmd_element *, struct vty *, int, const char *[]); \ @@ -240,6 +251,22 @@ #define DEFUN_DEPRECATED(funcname, cmdname, cmdstr, helpstr) \ DEFUN_ATTR (funcname, cmdname, cmdstr, helpstr, CMD_ATTR_DEPRECATED) +/*! Macro for defining a VTY node and function with global & program specific attributes. + * \param[in] funcname Name of the function implementing the node. + * \param[in] cmdname Name of the command node. + * \param[in] cmdstr String with syntax of node. + * \param[in] helpstr String with help message of node. + * \param[in] attr Global attributes (see CMD_ATTR_*). + * \param[in] usrattr Program specific attributes. + */ +#define DEFUN_ATTR_USRATTR(funcname, cmdname, cmdstr, helpstr, attr, usrattr) \ + DEFUN_CMD_FUNC_DECL(funcname) \ + DEFUN_CMD_ELEMENT_ATTR_USRATTR(funcname, cmdname, cmdstr, helpstr, attr, usrattr) \ + DEFUN_CMD_FUNC_TEXT(funcname) + +#define DEFUN_USRATTR(funcname, cmdname, cmdstr, helpstr, usrattr) \ + DEFUN_ATTR_USRATTR(funcname, cmdname, cmdstr, helpstr, 0, usrattr) + /* DEFUN_NOSH for commands that vtysh should ignore */ #define DEFUN_NOSH(funcname, cmdname, cmdstr, helpstr) \ DEFUN(funcname, cmdname, cmdstr, helpstr) diff --git a/include/osmocom/vty/vty.h b/include/osmocom/vty/vty.h index b63dc3b..710ef5b 100644 --- a/include/osmocom/vty/vty.h +++ b/include/osmocom/vty/vty.h @@ -192,6 +192,8 @@ " no longer called, ever, and can be left NULL."); /*! Check if the config is consistent before write */ int (*config_is_consistent)(struct vty *vty); + /*! Description of the application specific VTY attributes */ + const struct value_string *attr_desc; }; /* Prototypes. */ -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/19667 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I2c6c7b317b2b28ce70784c0cabd1b913e721be02 Gerrit-Change-Number: 19667 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanits...@sysmocom.de> Gerrit-MessageType: newchange