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>
This commit is contained in:

committed by
Florin Coras

parent
a8d476468d
commit
9779197f02
@ -16,12 +16,23 @@
|
|||||||
#include <vppinfra/cpu.h>
|
#include <vppinfra/cpu.h>
|
||||||
#include <vpp/app/version.h>
|
#include <vpp/app/version.h>
|
||||||
|
|
||||||
/* N.B. Variable is not static to ensure it's visible in core dumps, i.e.,
|
/** \file
|
||||||
* it doesn't go to rodata segment */
|
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 =
|
char *vpe_version_string =
|
||||||
"vpp v" VPP_BUILD_VER
|
"vpp v" VPP_BUILD_VER
|
||||||
" built by " VPP_BUILD_USER " on " VPP_BUILD_HOST " at " VPP_BUILD_DATE;
|
" built by " VPP_BUILD_USER " on " VPP_BUILD_HOST " at " VPP_BUILD_DATE;
|
||||||
|
|
||||||
|
/** The name of the compiler */
|
||||||
static char *vpe_compiler =
|
static char *vpe_compiler =
|
||||||
#if defined(__INTEL_COMPILER)
|
#if defined(__INTEL_COMPILER)
|
||||||
#define __(x) #x
|
#define __(x) #x
|
||||||
@ -37,12 +48,30 @@ static char *vpe_compiler =
|
|||||||
"unknown compiler";
|
"unknown compiler";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/** \brief Display image version info, a debug CLI command function
|
||||||
|
*/
|
||||||
static clib_error_t *
|
static clib_error_t *
|
||||||
show_vpe_version_command_fn (vlib_main_t * vm,
|
show_vpe_version_command_fn (vlib_main_t * vm,
|
||||||
unformat_input_t * input,
|
unformat_input_t * input,
|
||||||
vlib_cli_command_t * cmd)
|
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);
|
#define _(a,b,c) vlib_cli_output (vm, "%-25s " b, a ":", c);
|
||||||
_("Version", "%s", "v" VPP_BUILD_VER);
|
_("Version", "%s", "v" VPP_BUILD_VER);
|
||||||
@ -54,31 +83,79 @@ show_vpe_version_command_fn (vlib_main_t * vm,
|
|||||||
_("Current PID", "%d", getpid ());
|
_("Current PID", "%d", getpid ());
|
||||||
#undef _
|
#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);
|
vlib_cli_output (vm, "%s", vpe_version_string);
|
||||||
return 0;
|
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* */
|
/* *INDENT-OFF* */
|
||||||
VLIB_CLI_COMMAND (show_vpe_version_command, static) = {
|
VLIB_CLI_COMMAND (show_vpe_version_command, static) = {
|
||||||
.path = "show version",
|
.path = "show version",
|
||||||
.short_help = "show version information",
|
.short_help = "show version [verbose] [cmdline]",
|
||||||
.function = show_vpe_version_command_fn,
|
.function = show_vpe_version_command_fn,
|
||||||
};
|
};
|
||||||
/* *INDENT-ON* */
|
/* *INDENT-ON* */
|
||||||
|
|
||||||
|
/** Return the image build directory name */
|
||||||
char *
|
char *
|
||||||
vpe_api_get_build_directory (void)
|
vpe_api_get_build_directory (void)
|
||||||
{
|
{
|
||||||
return VPP_BUILD_TOPDIR;
|
return VPP_BUILD_TOPDIR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Return the image version string */
|
||||||
char *
|
char *
|
||||||
vpe_api_get_version (void)
|
vpe_api_get_version (void)
|
||||||
{
|
{
|
||||||
return VPP_BUILD_VER;
|
return VPP_BUILD_VER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** return the build date */
|
||||||
char *
|
char *
|
||||||
vpe_api_get_build_date (void)
|
vpe_api_get_build_date (void)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user