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

Reply via email to