diff options
-rw-r--r-- | include/osmocom/vty/command.h | 15 | ||||
-rw-r--r-- | src/vty/command.c | 40 |
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) { |