]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: Add more information to `show version`
authorDonald Sharp <sharpd@nvidia.com>
Sat, 22 Jan 2022 13:15:42 +0000 (08:15 -0500)
committerDonald Sharp <sharpd@nvidia.com>
Fri, 4 Feb 2022 15:29:38 +0000 (10:29 -0500)
Add to lib/command.c the ability to remember the
release/version/system information and to allow
`show version` to dump some of it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
lib/command.c
lib/command.h

index 9cf93ea19236b4a13c75fb1fa744ef46df72bbcc..ebdbf162d14286225f06656a8899ed32e2a1414c 100644 (file)
@@ -106,6 +106,21 @@ const char *cmd_domainname_get(void)
        return host.domainname;
 }
 
+const char *cmd_system_get(void)
+{
+       return host.system;
+}
+
+const char *cmd_release_get(void)
+{
+       return host.release;
+}
+
+const char *cmd_version_get(void)
+{
+       return host.version;
+}
+
 static int root_on_exit(struct vty *vty);
 
 /* Standard command node structures. */
@@ -1398,8 +1413,9 @@ DEFUN (show_version,
        SHOW_STR
        "Displays zebra version\n")
 {
-       vty_out(vty, "%s %s (%s).\n", FRR_FULL_NAME, FRR_VERSION,
-               cmd_hostname_get() ? cmd_hostname_get() : "");
+       vty_out(vty, "%s %s (%s) on %s(%s).\n", FRR_FULL_NAME, FRR_VERSION,
+               cmd_hostname_get() ? cmd_hostname_get() : "", cmd_system_get(),
+               cmd_release_get());
        vty_out(vty, "%s%s\n", FRR_COPYRIGHT, GIT_INFO);
 #ifdef ENABLE_VERSION_BUILD_CONFIG
        vty_out(vty, "configured with:\n    %s\n", FRR_CONFIG_ARGS);
@@ -2445,6 +2461,10 @@ void cmd_init(int terminal)
 
        /* Default host value settings. */
        host.name = XSTRDUP(MTYPE_HOST, names.nodename);
+       host.system = XSTRDUP(MTYPE_HOST, names.sysname);
+       host.release = XSTRDUP(MTYPE_HOST, names.release);
+       host.version = XSTRDUP(MTYPE_HOST, names.version);
+
 #ifdef HAVE_STRUCT_UTSNAME_DOMAINNAME
        if ((strcmp(names.domainname, "(none)") == 0))
                host.domainname = NULL;
@@ -2563,6 +2583,9 @@ void cmd_terminate(void)
        }
 
        XFREE(MTYPE_HOST, host.name);
+       XFREE(MTYPE_HOST, host.system);
+       XFREE(MTYPE_HOST, host.release);
+       XFREE(MTYPE_HOST, host.version);
        XFREE(MTYPE_HOST, host.domainname);
        XFREE(MTYPE_HOST, host.password);
        XFREE(MTYPE_HOST, host.password_encrypt);
index c888356d61bfd19f0fbca91121dcb1207b8bb4d3..a540bdc5c5bfa87782ec782f53edbce0f67e87f4 100644 (file)
@@ -55,6 +55,13 @@ struct host {
        /* Domainname of this router */
        char *domainname;
 
+       /*
+        * Some extra system data that is useful
+        */
+       char *system;
+       char *release;
+       char *version;
+
        /* Password for vty interface. */
        char *password;
        char *password_encrypt;
@@ -600,6 +607,9 @@ extern int cmd_domainname_set(const char *domainname);
 extern int cmd_hostname_set(const char *hostname);
 extern const char *cmd_hostname_get(void);
 extern const char *cmd_domainname_get(void);
+extern const char *cmd_system_get(void);
+extern const char *cmd_release_get(void);
+extern const char *cmd_version_get(void);
 
 /* NOT safe for general use; call this only if DEV_BUILD! */
 extern void grammar_sandbox_init(void);