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

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I2c6c7b317b2b28ce70784c0cabd1b913e721be02 </div>
<div style="display:none"> Gerrit-Change-Number: 19667 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>