Browse code

Complete push-peer-info documentation and allow IV_PLAT_VER for other platforms than Windows if the client UI supplies it.

Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <1455624280-3165-1-git-send-email-arne@rfc2549.org>
URL: http://article.gmane.org/gmane.network.openvpn.devel/11175

Signed-off-by: Gert Doering <gert@greenie.muc.de>

Arne Schwabe authored on 2016/02/16 21:04:40
Showing 2 changed files
... ...
@@ -3000,16 +3000,41 @@ option with the new value.
3000 3000
 .\"*********************************************************
3001 3001
 .TP
3002 3002
 .B \-\-push\-peer\-info
3003
-Push additional information about the client to server.  The additional information
3004
-consists of the following data:
3003
+Push additional information about the client to server.
3004
+The following data is always pushed to the server:
3005 3005
 
3006 3006
 IV_VER=<version> -- the client OpenVPN version
3007 3007
 
3008 3008
 IV_PLAT=[linux|solaris|openbsd|mac|netbsd|freebsd|win] -- the client OS platform
3009 3009
 
3010
+IV_LZO_STUB=1 -- if client was built with LZO stub capability
3011
+
3012
+IV_LZ4=1 -- if the client supports LZ4 compressions.
3013
+
3014
+IV_RGI6=1 -- if the client supports
3015
+.B \-\-redirect\-gateway
3016
+for ipv6
3017
+
3018
+IV_PROTO=2 -- if the client supports peer-id floating mechansim
3019
+
3020
+IV_NCP=2 -- negotiable ciphers, client supports
3021
+.B \-\-cipher
3022
+pushed by the server, a value of 2 or greater indicates client
3023
+supports AES-GCM-128 and AES-GCM-256.
3024
+
3025
+IV_UI_VER=<gui_id> <version> -- the UI version of a UI if one is
3026
+running, for example "de.blinkt.openvpn 0.5.47" for the
3027
+Android app.
3028
+
3029
+When
3030
+.B \-\-push\-peer\-info
3031
+is enabled the additional information consists of the following data:
3032
+
3010 3033
 IV_HWADDR=<mac address> -- the MAC address of clients default gateway
3011 3034
 
3012
-IV_LZO_STUB=1 -- if client was built with LZO stub capability
3035
+IV_SSL=<version string> -- the ssl version used by the client, e.g. "OpenSSL 1.0.2f 28 Jan 2016".
3036
+
3037
+IV_PLAT_VER=x.y - the version of the operating system, e.g. 6.1 for Windows 7.
3013 3038
 
3014 3039
 UV_<name>=<value> -- client environment variables whose names start with "UV_"
3015 3040
 .\"*********************************************************
... ...
@@ -1906,12 +1906,14 @@ push_peer_info(struct buffer *buf, struct tls_session *session)
1906 1906
 #endif
1907 1907
         }
1908 1908
 
1909
-      /* push env vars that begin with UV_ and IV_GUI_VER */
1909
+      /* push env vars that begin with UV_, IV_PLAT_VER and IV_GUI_VER */
1910 1910
       for (e=es->list; e != NULL; e=e->next)
1911 1911
 	{
1912 1912
 	  if (e->string)
1913 1913
 	    {
1914
-	      if (((strncmp(e->string, "UV_", 3)==0 && session->opt->push_peer_info_detail >= 2)
1914
+	      if ((((strncmp(e->string, "UV_", 3)==0 ||
1915
+		     strncmp(e->string, "IV_PLAT_VER=", sizeof("IV_PLAT_VER=")-1)==0)
1916
+		    && session->opt->push_peer_info_detail >= 2)
1915 1917
 		   || (strncmp(e->string,"IV_GUI_VER=",sizeof("IV_GUI_VER=")-1)==0))
1916 1918
 		  && buf_safe(&out, strlen(e->string)+1))
1917 1919
 		buf_printf (&out, "%s\n", e->string);