aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2018-07-13 09:59:45 -0400
committerFlorin Coras <florin.coras@gmail.com>2018-07-13 17:58:59 +0000
commit9779197f02b9ab5f4a1afc1292ec8e95d0740855 (patch)
tree2081d5bb34c5b429849fc9f138269ebfd0263ae2 /src
parenta8d476468d6dad10f0d55423eded2a2a065f8478 (diff)
Improve the "show version" command
Add "show version cmdline" to display the command line Add doxygen tags to the source code Change-Id: I0205b373062fd88f176d9c8086d89d7784a5172f Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'src')
-rw-r--r--src/vpp/app/version.c87
1 files changed, 82 insertions, 5 deletions
diff --git a/src/vpp/app/version.c b/src/vpp/app/version.c
index d99f875e12e..58ac9bad2a2 100644
--- a/src/vpp/app/version.c
+++ b/src/vpp/app/version.c
@@ -16,12 +16,23 @@
#include <vppinfra/cpu.h>
#include <vpp/app/version.h>
-/* N.B. Variable is not static to ensure it's visible in core dumps, i.e.,
- * it doesn't go to rodata segment */
+/** \file
+ Display image version information
+*/
+
+/*? %%clicmd:group_label Image Version Information %% ?*/
+
+/*
+ * Version variables are static to ensure that they're visible in core
+ * dumps, i.e., not in the rodata segment
+ */
+
+/** The image version string */
char *vpe_version_string =
"vpp v" VPP_BUILD_VER
" built by " VPP_BUILD_USER " on " VPP_BUILD_HOST " at " VPP_BUILD_DATE;
+/** The name of the compiler */
static char *vpe_compiler =
#if defined(__INTEL_COMPILER)
#define __(x) #x
@@ -37,12 +48,30 @@ static char *vpe_compiler =
"unknown compiler";
#endif
+/** \brief Display image version info, a debug CLI command function
+ */
static clib_error_t *
show_vpe_version_command_fn (vlib_main_t * vm,
unformat_input_t * input,
vlib_cli_command_t * cmd)
{
- if (unformat (input, "verbose"))
+ int i;
+ int verbose = 0;
+ int cmdline = 0;
+ int indent = 2;
+ char **argv = (char **) vm->argv;
+
+ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
+ {
+ if (unformat (input, "verbose %=", &verbose, 1))
+ ;
+ else if (unformat (input, "cmdline %=", &cmdline, 1))
+ ;
+ else
+ break;
+ }
+
+ if (verbose)
{
#define _(a,b,c) vlib_cli_output (vm, "%-25s " b, a ":", c);
_("Version", "%s", "v" VPP_BUILD_VER);
@@ -54,31 +83,79 @@ show_vpe_version_command_fn (vlib_main_t * vm,
_("Current PID", "%d", getpid ());
#undef _
}
- else
+ if (cmdline)
+ {
+ vlib_cli_output (vm, "%-25s", "Command line arguments:");
+
+ for (i = 0; argv[i]; i++)
+ {
+ if (strstr (argv[i], "{"))
+ indent += 2;
+ vlib_cli_output (vm, "%U%s", format_white_space, indent, argv[i]);
+ if (strstr (argv[i], "}"))
+ indent -= 2;
+ }
+ }
+ if ((verbose + cmdline) == 0)
vlib_cli_output (vm, "%s", vpe_version_string);
return 0;
}
+/*?
+ * This commmand displays image version and command line arguments
+ *
+ * @cliexpar
+ * How to display the image version string:
+ * @cliexstart{show version}
+ * vpp v18.07-rc0~509-gb9124828 built by vppuser on vppbuild at date
+ * @cliexend
+ *
+ * @cliexpar
+ * How to display verbose image version information:
+ * @cliexstart{show version verbose}
+ * Version: v18.07-rc0~509-gb9124828
+ * Compiled by: vppuser
+ * Compile host: vppbuild
+ * Compile date: Fri Jul 13 09:05:37 EDT 2018
+ * Compile location: /scratch/vpp-showversion
+ * Compiler: GCC 7.3.0
+ * Current PID: 5334
+ * @cliexend
+ *
+ * @cliexpar
+ * How to display the vpp command line arguments:
+ * @cliexstart{show version cmdline}
+ * vpp# show version cmdline
+ * Command line arguments:
+ * /scratch/vpp-showversion/build-root/install-vpp_debug-native/vpp/bin/vpp
+ * unix
+ * interactive
+ * @cliexend
+?*/
+
/* *INDENT-OFF* */
VLIB_CLI_COMMAND (show_vpe_version_command, static) = {
.path = "show version",
- .short_help = "show version information",
+ .short_help = "show version [verbose] [cmdline]",
.function = show_vpe_version_command_fn,
};
/* *INDENT-ON* */
+/** Return the image build directory name */
char *
vpe_api_get_build_directory (void)
{
return VPP_BUILD_TOPDIR;
}
+/** Return the image version string */
char *
vpe_api_get_version (void)
{
return VPP_BUILD_VER;
}
+/** return the build date */
char *
vpe_api_get_build_date (void)
{