aboutsummaryrefslogtreecommitdiff
path: root/src/openvpn/manage.c
diff options
context:
space:
mode:
authorSelva Nair2018-01-25 14:41:00 -0500
committerGert Doering2018-01-29 20:14:18 +0100
commit686fe9ce54c6913f638b80dd7c28d393aa0cadb1 (patch)
tree7985b12c2ec36f69fdbe3e8a9e26600db66e5b9f /src/openvpn/manage.c
parent4229243563bcb22990f71d50e25be9ea6d44f519 (diff)
downloadopenvpn-686fe9ce54c6913f638b80dd7c28d393aa0cadb1.zip
openvpn-686fe9ce54c6913f638b80dd7c28d393aa0cadb1.tar.gz
Add management client version
- "version" command from client to management can now set the version of management interface supported by the client by specifying an optional integer parameter. If no parameter is specified the version of OpenVPN and its management interface is returned (current behaviour). The client version defaults to 1 which is the current version of the Management Interface. Signed-off-by: Selva Nair <selva.nair@gmail.com> Acked-by: Arne Schwabe <arne@rfc2549.org> Message-Id: <1516909261-31623-1-git-send-email-selva.nair@gmail.com> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg16363.html Signed-off-by: Gert Doering <gert@greenie.muc.de>
Diffstat (limited to 'src/openvpn/manage.c')
-rw-r--r--src/openvpn/manage.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/openvpn/manage.c b/src/openvpn/manage.c
index 650f9e0..c36d94d 100644
--- a/src/openvpn/manage.c
+++ b/src/openvpn/manage.c
@@ -123,7 +123,7 @@ man_help(void)
msg(M_CLIENT, "test n : Produce n lines of output for testing/debugging.");
msg(M_CLIENT, "username type u : Enter username u for a queried OpenVPN username.");
msg(M_CLIENT, "verb [n] : Set log verbosity level to n, or show if n is absent.");
- msg(M_CLIENT, "version : Show current version number.");
+ msg(M_CLIENT, "version [n] : Set client's version to n or show current version of daemon.");
msg(M_CLIENT, "END");
}
@@ -1241,6 +1241,15 @@ man_network_change(struct management *man, bool samenetwork)
#endif
static void
+set_client_version(struct management *man, const char *version)
+{
+ if (version)
+ {
+ man->connection.client_version = atoi(version);
+ }
+}
+
+static void
man_dispatch_command(struct management *man, struct status_output *so, const char **p, const int nparms)
{
struct gc_arena gc = gc_new();
@@ -1255,6 +1264,10 @@ man_dispatch_command(struct management *man, struct status_output *so, const cha
{
man_help();
}
+ else if (streq(p[0], "version") && p[1])
+ {
+ set_client_version(man, p[1]);
+ }
else if (streq(p[0], "version"))
{
msg(M_CLIENT, "OpenVPN Version: %s", title_string);
@@ -2508,6 +2521,8 @@ man_connection_init(struct management *man)
man->connection.es = event_set_init(&maxevents, EVENT_METHOD_FAST);
}
+ man->connection.client_version = 1; /* default version */
+
/*
* Listen/connect socket
*/