aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/vty/command.h15
-rw-r--r--src/vty/command.c40
2 files changed, 53 insertions, 2 deletions
diff --git a/include/osmocom/vty/command.h b/include/osmocom/vty/command.h
index 92701fcb..eb7ee35e 100644
--- a/include/osmocom/vty/command.h
+++ b/include/osmocom/vty/command.h
@@ -29,6 +29,7 @@
#include "vector.h"
#include <osmocom/core/defs.h>
+#include <osmocom/core/utils.h>
/*! \defgroup command VTY Command
* @{
@@ -460,6 +461,18 @@ void print_version(int print_copyright);
extern void *tall_vty_cmd_ctx;
-int vty_dump_xml_ref(FILE *stream);
+/*! VTY reference generation mode. */
+enum vty_ref_gen_mode {
+ /*! Default mode: all commands except deprecated and hidden. */
+ VTY_REF_GEN_MODE_DEFAULT = 0,
+ /*! Expert mode: all commands including hidden, excluding deprecated. */
+ VTY_REF_GEN_MODE_EXPERT,
+};
+
+extern const struct value_string vty_ref_gen_mode_names[];
+extern const struct value_string vty_ref_gen_mode_desc[];
+
+int vty_dump_xml_ref_mode(FILE *stream, enum vty_ref_gen_mode mode);
+int vty_dump_xml_ref(FILE *stream) OSMO_DEPRECATED("Use vty_dump_xml_ref_mode() instead");
/*! @} */
diff --git a/src/vty/command.c b/src/vty/command.c
index 53ebcd86..b83522f4 100644
--- a/src/vty/command.c
+++ b/src/vty/command.c
@@ -876,13 +876,51 @@ static int print_func_stream(void *data, const char *format, ...)
return rc;
}
+const struct value_string vty_ref_gen_mode_names[] = {
+ { VTY_REF_GEN_MODE_DEFAULT, "default" },
+ { VTY_REF_GEN_MODE_EXPERT, "expert" },
+ { 0, NULL }
+};
+
+const struct value_string vty_ref_gen_mode_desc[] = {
+ { VTY_REF_GEN_MODE_DEFAULT, "all commands except deprecated and hidden" },
+ { VTY_REF_GEN_MODE_EXPERT, "all commands including hidden, excluding deprecated" },
+ { 0, NULL }
+};
+
/*! Print the XML reference of all VTY nodes to the given stream.
+ * \param[out] stream Output stream to print the XML reference to.
+ * \param[in] mode The XML reference generation mode.
+ * \returns always 0 for now, no errors possible.
*/
-int vty_dump_xml_ref(FILE *stream)
+int vty_dump_xml_ref_mode(FILE *stream, enum vty_ref_gen_mode mode)
{
+ switch (mode) {
+ case VTY_REF_GEN_MODE_EXPERT:
+ host.expert_mode = true;
+ break;
+ case VTY_REF_GEN_MODE_DEFAULT:
+ default:
+ host.expert_mode = false;
+ break;
+ }
+
return vty_dump_nodes(print_func_stream, stream, "\n");
}
+/*! Print the XML reference of all VTY nodes to the given stream.
+ * \param[out] stream Output stream to print the XML reference to.
+ * \returns always 0 for now, no errors possible.
+ *
+ * NOTE: this function is deprecated because it does not allow to
+ * specify the XML reference generation mode (default mode
+ * is hard-coded). Use vty_dump_xml_ref_mode() instead.
+ */
+int vty_dump_xml_ref(FILE *stream)
+{
+ return vty_dump_xml_ref_mode(stream, VTY_REF_GEN_MODE_DEFAULT);
+}
+
/* Check if a command with given string exists at given node */
static int check_element_exists(struct cmd_node *cnode, const char *cmdstring)
{