[Openvpn-devel] [PATCH] openssl: be less verbose about cipher translation errors

2015-10-06 Thread Steffan Karger
Translation errors are usually not a real problem, since we don't maintain
the complete list of ciphers OpenSSL supports.  So, be less verbose if we
can not find a translation.

Also, add 'translations' for commonly used negated cipher suites to
suppress messages about those completely.

Signed-off-by: Steffan Karger 
---
 src/openvpn/ssl.c | 21 +++--
 src/openvpn/ssl_openssl.c |  2 +-
 2 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/openvpn/ssl.c b/src/openvpn/ssl.c
index 54a3e09..529d14d 100644
--- a/src/openvpn/ssl.c
+++ b/src/openvpn/ssl.c
@@ -232,18 +232,19 @@ static const tls_cipher_name_pair 
tls_cipher_name_translation_table[] = {
 {"SRP-RSA-AES-128-CBC-SHA", "TLS-SRP-SHA-RSA-WITH-AES-128-CBC-SHA"},
 {"SRP-RSA-AES-256-CBC-SHA", "TLS-SRP-SHA-RSA-WITH-AES-256-CBC-SHA"},
 #ifdef ENABLE_CRYPTO_OPENSSL
+/* OpenSSL-specific group names */
 {"DEFAULT", "DEFAULT"},
 {"ALL", "ALL"},
-{"HIGH", "HIGH"},
-{"MEDIUM", "MEDIUM"},
-{"LOW", "LOW"},
-{"ECDH", "ECDH"},
-{"ECDSA", "ECDSA"},
-{"EDH", "EDH"},
-{"EXP", "EXP"},
-{"RSA", "RSA"},
-{"kRSA", "kRSA"},
-{"SRP", "SRP"},
+{"HIGH", "HIGH"}, {"!HIGH", "!HIGH"},
+{"MEDIUM", "MEDIUM"}, {"!MEDIUM", "!MEDIUM"},
+{"LOW", "LOW"}, {"!LOW", "!LOW"},
+{"ECDH", "ECDH"}, {"!ECDH", "!ECDH"},
+{"ECDSA", "ECDSA"}, {"!ECDSA", "!ECDSA"},
+{"EDH", "EDH"}, {"!EDH", "!EDH"},
+{"EXP", "EXP"}, {"!EXP", "!EXP"},
+{"RSA", "RSA"}, {"!RSA", "!RSA"},
+{"kRSA", "kRSA"}, {"!kRSA", "!kRSA"},
+{"SRP", "SRP"}, {"!SRP", "!SRP"},
 #endif
 {NULL, NULL}
 };
diff --git a/src/openvpn/ssl_openssl.c b/src/openvpn/ssl_openssl.c
index df9fa87..a38c41b 100644
--- a/src/openvpn/ssl_openssl.c
+++ b/src/openvpn/ssl_openssl.c
@@ -272,7 +272,7 @@ tls_ctx_restrict_ciphers(struct tls_root_ctx *ctx, const 
char *ciphers)
   // Issue warning on missing translation
   // %.*s format specifier expects length of type int, so guarantee
   // that length is small enough and cast to int.
-  msg (M_WARN, "No valid translation found for TLS cipher '%.*s'",
+  msg (D_LOW, "No valid translation found for TLS cipher '%.*s'",
  constrain_int(current_cipher_len, 0, 256), current_cipher);
 }
   else
-- 
2.1.4




[Openvpn-devel] [PATCH] polarssl: Improve PolarSSL logging

2015-10-06 Thread Steffan Karger
Use the new polar_log_err() and polar_ok() functions introduced in the
previous commit to provide more log/debug output for polarssl errors.

Signed-off-by: Steffan Karger 
---
 src/openvpn/crypto_polarssl.c | 35 ---
 src/openvpn/ssl_polarssl.c| 89 +--
 src/openvpn/ssl_verify_polarssl.c | 26 +++-
 3 files changed, 64 insertions(+), 86 deletions(-)

diff --git a/src/openvpn/crypto_polarssl.c b/src/openvpn/crypto_polarssl.c
index 263b4dc..c038f8e 100644
--- a/src/openvpn/crypto_polarssl.c
+++ b/src/openvpn/crypto_polarssl.c
@@ -261,7 +261,8 @@ ctr_drbg_context * rand_ctx_get()
   /* Initialise PolarSSL RNG, and built-in entropy sources */
   entropy_init();

-  if (0 != ctr_drbg_init(_ctx, entropy_func, , BPTR(_string), 
BLEN(_string)))
+  if (!polar_ok(ctr_drbg_init(_ctx, entropy_func, ,
+   BPTR(_string), BLEN(_string
 msg (M_FATAL, "Failed to initialize random generator");

   gc_free();
@@ -472,10 +473,10 @@ cipher_ctx_init (cipher_context_t *ctx, uint8_t *key, int 
key_len,

   CLEAR (*ctx);

-  if (0 != cipher_init_ctx(ctx, kt))
+  if (!polar_ok(cipher_init_ctx(ctx, kt)))
 msg (M_FATAL, "PolarSSL cipher context init #1");

-  if (0 != cipher_setkey(ctx, key, key_len*8, enc))
+  if (!polar_ok(cipher_setkey(ctx, key, key_len*8, enc)))
 msg (M_FATAL, "PolarSSL cipher set key");

   /* make sure we used a big enough key */
@@ -484,7 +485,7 @@ cipher_ctx_init (cipher_context_t *ctx, uint8_t *key, int 
key_len,

 void cipher_ctx_cleanup (cipher_context_t *ctx)
 {
-  cipher_free_ctx(ctx);
+  ASSERT (polar_ok(cipher_free_ctx(ctx)));
 }

 int cipher_ctx_iv_length (const cipher_context_t *ctx)
@@ -514,36 +515,38 @@ cipher_ctx_get_cipher_kt (const cipher_ctx_t *ctx)

 int cipher_ctx_reset (cipher_context_t *ctx, uint8_t *iv_buf)
 {
-  int retval = cipher_reset(ctx);
+  if (!polar_ok(cipher_reset(ctx)))
+return 0;

-  if (0 == retval)
-retval = cipher_set_iv(ctx, iv_buf, ctx->cipher_info->iv_size);
+  if (!polar_ok(cipher_set_iv(ctx, iv_buf, ctx->cipher_info->iv_size)))
+return 0;

-  return 0 == retval;
+  return 1;
 }

 int cipher_ctx_update (cipher_context_t *ctx, uint8_t *dst, int *dst_len,
 uint8_t *src, int src_len)
 {
-  int retval = 0;
   size_t s_dst_len = *dst_len;

-  retval = cipher_update(ctx, src, (size_t)src_len, dst, _dst_len);
+  if (!polar_ok(cipher_update(ctx, src, (size_t)src_len, dst, _dst_len)))
+return 0;

   *dst_len = s_dst_len;

-  return 0 == retval;
+  return 1;
 }

 int cipher_ctx_final (cipher_context_t *ctx, uint8_t *dst, int *dst_len)
 {
-  int retval = 0;
   size_t s_dst_len = *dst_len;

-  retval = cipher_finish(ctx, dst, _dst_len);
+  if (!polar_ok(cipher_finish(ctx, dst, _dst_len)))
+return 0;
+
   *dst_len = s_dst_len;

-  return 0 == retval;
+  return 1;
 }

 void
@@ -553,8 +556,8 @@ cipher_des_encrypt_ecb (const unsigned char 
key[DES_KEY_LENGTH],
 {
 des_context ctx;

-des_setkey_enc(, key);
-des_crypt_ecb(, src, dst);
+ASSERT (polar_ok(des_setkey_enc(, key)));
+ASSERT (polar_ok(des_crypt_ecb(, src, dst)));
 }


diff --git a/src/openvpn/ssl_polarssl.c b/src/openvpn/ssl_polarssl.c
index 11c9ffb..2056735 100644
--- a/src/openvpn/ssl_polarssl.c
+++ b/src/openvpn/ssl_polarssl.c
@@ -218,13 +218,13 @@ tls_ctx_load_dh_params (struct tls_root_ctx *ctx, const 
char *dh_file,
 {
   if (!strcmp (dh_file, INLINE_FILE_TAG) && dh_inline)
 {
-  if (0 != dhm_parse_dhm(ctx->dhm_ctx, (const unsigned char *) dh_inline,
- strlen(dh_inline)))
+  if (!polar_ok(dhm_parse_dhm(ctx->dhm_ctx,
+ (const unsigned char *) dh_inline, strlen(dh_inline
msg (M_FATAL, "Cannot read inline DH parameters");
   }
 else
   {
-if (0 != dhm_parse_dhmfile(ctx->dhm_ctx, dh_file))
+if (!polar_ok(dhm_parse_dhmfile(ctx->dhm_ctx, dh_file)))
   msg (M_FATAL, "Cannot read DH parameters from file %s", dh_file);
   }

@@ -268,18 +268,15 @@ tls_ctx_load_cert_file (struct tls_root_ctx *ctx, const 
char *cert_file,

   if (!strcmp (cert_file, INLINE_FILE_TAG) && cert_inline)
 {
-  if (0 != x509_crt_parse(ctx->crt_chain,
- (const unsigned char *) cert_inline, strlen(cert_inline)))
+  if (!polar_ok(x509_crt_parse(ctx->crt_chain,
+ (const unsigned char *) cert_inline, strlen(cert_inline
 msg (M_FATAL, "Cannot load inline certificate file");
 }
   else
 {
-  int retval = x509_crt_parse_file(ctx->crt_chain, cert_file);
-  if (0 != retval)
+  if (!polar_ok(x509_crt_parse_file(ctx->crt_chain, cert_file)))
{
- char errstr[128];
- polarssl_strerror(retval, errstr, sizeof(errstr));
- msg (M_FATAL, "Cannot load certificate file %s (%s)", cert_file, 
errstr);
+ msg (M_FATAL, "Cannot load certificate file %s", cert_file);
}
 }
 }
@@ -317,7 +314,7 @@ tls_ctx_load_priv_file (struct tls_root_ctx 

Re: [Openvpn-devel] Help with build-testing a patched OpenVPN tree with Cygwin and Visual Studio?

2015-10-06 Thread Gert Doering
Hi,

jftr...

On Fri, Sep 25, 2015 at 03:01:01PM +0300, Samuli Seppänen wrote:
> We'd need some help build-testing a patched[*] OpenVPN version with 
> Cygwin and Visual Studio:
> 
> 
> 
> This tree already builds fine on mingw_w64 which is enough for doing the 
> official builds.

Heiko tested on Cygwin, Lev made it work on MSVC2013 (and the necessary
changes for that have been merged).

So, now this needs people to actually run IPv6-over-IPv6 to *use* the
functionality and report whether it breaks in their setup.

What you need: IPv6 connectivity between OpenVPN client and server, and
IPv6 routing *into* the tunnel, with a route that overlaps the IPv6 address
of the server - either using "redirect-gateway ipv6", or pushing things
like "route-ipv6 2000::/3" with a server inside 2000::/3...  if you do
this, you should see something like this in the log:

Tue Oct  6 13:28:57 2015 GDG6: remote_host_ipv6=2607:fc50:1001:5200::4
Tue Oct  6 13:28:57 2015 ROUTE6_GATEWAY 2001:608:4::1 IFACE=eth0
Tue Oct  6 13:28:57 2015 ROUTE6: 2607:fc50:1001::/48 overlaps IPv6 remote 
2607:fc50:1001:5200::4, adding host route to VPN endpoint
Tue Oct  6 13:28:57 2015 add_route_ipv6(2607:fc50:1001:5200::4/128 -> 
2001:608:4::1 metric 1) dev eth0
Tue Oct  6 13:28:57 2015 /bin/route -A inet6 add 2607:fc50:1001:5200::4/128 dev 
eth0 gw 2001:608:4::1 metric 1

the first line is "this is the IPv6 address of the VPN server", the
"ROUTE6_GATEWAY" line is "this is the gateway and interface we have
discovered!".  The "overlap" notice means the feature will actually
kick in - it won't, if you have no overlapping routes into the tunnel,
or connect over IPv4 - and the last two lines are the installing of
the /128 host route, which better should work as well :-)

I tested this for 6 scenarios on 9 (!) platforms, so I'm reasonably sure
it works for the common case - but there will be unexpected cases...

gert

-- 
USENET is *not* the non-clickable part of WWW!
   //www.muc.de/~gert/
Gert Doering - Munich, Germany g...@greenie.muc.de
fax: +49-89-35655025g...@net.informatik.tu-muenchen.de


signature.asc
Description: PGP signature


[Openvpn-devel] [PATCH applied] Re: Continuation of MSVS fixes

2015-10-06 Thread Gert Doering
ACK.  The need for this change was expected (because GetIpRoute2() is not
part of the "XP" API but needs VISTA), and thanks for testing that the
*rest* of the new stuff actually works on a MSVC build :-)

Your patch has been applied to the master branch.

commit b0fe94115fc4a75094d15452b7b89a0c0849087c
Author: Lev Stipakov
List-Post: openvpn-devel@lists.sourceforge.net
Date:   Tue Oct 6 14:15:13 2015 +0300

 Continuation of MSVS fixes

 Signed-off-by: Lev Stipakov 
 Acked-by: Gert Doering 
 Message-Id: <1444130113-23387-1-git-send-email-lstipa...@gmail.com>
 URL: http://article.gmane.org/gmane.network.openvpn.devel/10194
 Signed-off-by: Gert Doering 


--
kind regards,

Gert Doering




[Openvpn-devel] [PATCH] Continuation of MSVS fixes

2015-10-06 Thread Lev Stipakov
 * Upgrade API level to Vista to implement get_default_gateway_ipv6
 * Define HAVE_INET_NTOP/PTON since Vista has its own implementation of those

Signed-off-by: Lev Stipakov 
---
 config-msvc.h | 6 ++
 msvc-env.bat  | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/config-msvc.h b/config-msvc.h
index ffd35f4..07032ce 100644
--- a/config-msvc.h
+++ b/config-msvc.h
@@ -128,3 +128,9 @@ typedef __int8  int8_t;
 #include 
 #endif

+// Vista and above has implementation of inet_ntop / inet_pton
+#if _WIN32_WINNT >= _WIN32_WINNT_VISTA
+#define HAVE_INET_NTOP
+#define HAVE_INET_PTON
+#endif
+
diff --git a/msvc-env.bat b/msvc-env.bat
index 2dd0f00..aabed75 100644
--- a/msvc-env.bat
+++ b/msvc-env.bat
@@ -12,7 +12,7 @@ if "%VCHOME%"=="" SET VCHOME=%VSHOME%\VC
 set SOURCEBASE=%cd%
 set SOLUTION=openvpn.sln
 set 
CPPFLAGS=%CPPFLAGS%;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS
-set 
CPPFLAGS=%CPPFLAGS%;NTDDI_VERSION=NTDDI_WINXP;_WIN32_WINNT=_WIN32_WINNT_WINXP
+set 
CPPFLAGS=%CPPFLAGS%;NTDDI_VERSION=NTDDI_VISTA;_WIN32_WINNT=_WIN32_WINNT_VISTA
 set CPPFLAGS=%CPPFLAGS%;_USE_32BIT_TIME_T
 set CPPFLAGS=%CPPFLAGS%;%EXTRA_CPPFLAGS%

-- 
1.9.1




[Openvpn-devel] [PATCH applied] Re: polarssl: add easy logging for PolarSSL errors

2015-10-06 Thread Gert Doering
ACK.  This one is nicely trivial, as it just adds easily verifiable stuff
without *changing* anything.

Your patch has been applied to the master branch.

commit 6ef5df14917500f107fd843a6dba61355edaeea0
Author: Steffan Karger
List-Post: openvpn-devel@lists.sourceforge.net
Date:   Sun Mar 8 11:20:04 2015 +0100

 polarssl: add easy logging for PolarSSL errors

 Signed-off-by: Steffan Karger 
 Acked-by: Gert Doering 
 Message-Id: <1425810005-11893-1-git-send-email-stef...@karger.me>
 URL: http://article.gmane.org/gmane.network.openvpn.devel/9528
 Signed-off-by: Gert Doering 


--
kind regards,

Gert Doering




[Openvpn-devel] [PATCH v2] Fix MSVS 2013 compilation

2015-10-06 Thread Lev Stipakov
v2:
* Bump API level to Vista to for get_default_gateway_ipv6() implementation
* Define HAVE_INET_NTOP/PTON for Vista since it has own implementation of 
inet_ntop/pton

v1:
* Add comp/compstub to project files
* Bump tools version to 12
* define __attribute__

Signed-off-by: Lev Stipakov 
---
 config-msvc.h   |  9 +
 msvc-env.bat|  2 +-
 src/compat/compat.vcxproj   |  6 --
 src/openvpn/openvpn.vcxproj | 10 --
 src/openvpn/syshead.h   |  1 +
 src/openvpnserv/openvpnserv.vcxproj |  6 --
 6 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/config-msvc.h b/config-msvc.h
index 8294c2c..07032ce 100644
--- a/config-msvc.h
+++ b/config-msvc.h
@@ -90,7 +90,10 @@

 #define strncasecmp strnicmp
 #define strcasecmp _stricmp
+
+#if _MSC_VER<1900
 #define snprintf _snprintf
+#endif

 #if _MSC_VER < 1800
 #define strtoull strtoul
@@ -125,3 +128,9 @@ typedef __int8  int8_t;
 #include 
 #endif

+// Vista and above has implementation of inet_ntop / inet_pton
+#if _WIN32_WINNT >= _WIN32_WINNT_VISTA
+#define HAVE_INET_NTOP
+#define HAVE_INET_PTON
+#endif
+
diff --git a/msvc-env.bat b/msvc-env.bat
index 2dd0f00..aabed75 100644
--- a/msvc-env.bat
+++ b/msvc-env.bat
@@ -12,7 +12,7 @@ if "%VCHOME%"=="" SET VCHOME=%VSHOME%\VC
 set SOURCEBASE=%cd%
 set SOLUTION=openvpn.sln
 set 
CPPFLAGS=%CPPFLAGS%;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS
-set 
CPPFLAGS=%CPPFLAGS%;NTDDI_VERSION=NTDDI_WINXP;_WIN32_WINNT=_WIN32_WINNT_WINXP
+set 
CPPFLAGS=%CPPFLAGS%;NTDDI_VERSION=NTDDI_VISTA;_WIN32_WINNT=_WIN32_WINNT_VISTA
 set CPPFLAGS=%CPPFLAGS%;_USE_32BIT_TIME_T
 set CPPFLAGS=%CPPFLAGS%;%EXTRA_CPPFLAGS%

diff --git a/src/compat/compat.vcxproj b/src/compat/compat.vcxproj
index 42979c1..7fca62f 100644
--- a/src/compat/compat.vcxproj
+++ b/src/compat/compat.vcxproj
@@ -1,5 +1,5 @@
 
-http://schemas.microsoft.com/developer/msbuild/2003;>
+http://schemas.microsoft.com/developer/msbuild/2003;>
   
 
   Debug
@@ -20,10 +20,12 @@
 StaticLibrary
 MultiByte
 true
+v120
   
   
 StaticLibrary
 MultiByte
+v120
   
   
   
@@ -84,4 +86,4 @@
   
   
   
-
\ No newline at end of file
+
diff --git a/src/openvpn/openvpn.vcxproj b/src/openvpn/openvpn.vcxproj
index e349401..ad07a05 100755
--- a/src/openvpn/openvpn.vcxproj
+++ b/src/openvpn/openvpn.vcxproj
@@ -1,5 +1,5 @@
 
-http://schemas.microsoft.com/developer/msbuild/2003;>
+http://schemas.microsoft.com/developer/msbuild/2003;>
   
 
   Debug
@@ -20,10 +20,12 @@
 Application
 true
 Unicode
+v120
   
   
 Application
 Unicode
+v120
   
   
   
@@ -100,6 +102,8 @@
 
 
 
+
+
 
 
 
@@ -170,6 +174,8 @@
 
 
 
+
+
 
 
 
@@ -264,4 +270,4 @@
   
   
   
-
\ No newline at end of file
+
diff --git a/src/openvpn/syshead.h b/src/openvpn/syshead.h
index ba3b7e4..3aa5c5f 100644
--- a/src/openvpn/syshead.h
+++ b/src/openvpn/syshead.h
@@ -47,6 +47,7 @@

 #ifdef _MSC_VER // Visual Studio
 #define __func__ __FUNCTION__
+#define __attribute__(x)
 #endif

 #if defined(__APPLE__)
diff --git a/src/openvpnserv/openvpnserv.vcxproj 
b/src/openvpnserv/openvpnserv.vcxproj
index 0b75ed0..c6760da 100644
--- a/src/openvpnserv/openvpnserv.vcxproj
+++ b/src/openvpnserv/openvpnserv.vcxproj
@@ -1,5 +1,5 @@
 
-http://schemas.microsoft.com/developer/msbuild/2003;>
+http://schemas.microsoft.com/developer/msbuild/2003;>
   
 
   Debug
@@ -20,10 +20,12 @@
 Application
 MultiByte
 true
+v120
   
   
 Application
 MultiByte
+v120
   
   
   
@@ -109,4 +111,4 @@
   
   
   
-
\ No newline at end of file
+
-- 
1.9.1




[Openvpn-devel] [PATCH applied] Re: This fixes MSVS 2013 compilation.

2015-10-06 Thread Gert Doering
ACK.

Your patch has been applied to the master branch.

commit 123092a7a95f13f0509d2dc52ec049f91a02686d
Author: Lev Stipakov
List-Post: openvpn-devel@lists.sourceforge.net
Date:   Fri Oct 2 14:46:41 2015 +0300

 This fixes MSVS 2013 compilation.

 Acked-by: Gert Doering 
 Message-Id: <1443786401-30416-1-git-send-email-lstipa...@gmail.com>
 URL: http://article.gmane.org/gmane.network.openvpn.devel/10174
 Signed-off-by: Gert Doering 


--
kind regards,

Gert Doering




[Openvpn-devel] [PATCH applied] Re: Add custom check for inet_pton()/inet_ntop() on MinGW/WIN32

2015-10-06 Thread Gert Doering
Lazy-ACK rules have been applied ("nobody screamed for two weeks", and it
got tested on various mingw versions plus cygwin).

Patch has been applied to the master branch.

commit f96baabc6cf10edddedda1819a27a6927f274d8e
Author: Gert Doering
List-Post: openvpn-devel@lists.sourceforge.net
Date:   Tue Sep 22 22:31:24 2015 +0200

 Add custom check for inet_pton()/inet_ntop() on MinGW/WIN32

 Signed-off-by: Gert Doering 
 Lazy-ACK-by: Gert Doering 
 Tested-by: Heiko Hund 
 Tested-by: Samuli Seppänen 
 Message-Id: <1442953884-54602-1-git-send-email-g...@greenie.muc.de>
 URL: http://article.gmane.org/gmane.network.openvpn.devel/10165


--
kind regards,

Gert Doering




[Openvpn-devel] [PATCH applied] Re: get_default_gateway_ipv6(): Win32 implementation using GetBestRoute2()

2015-10-06 Thread Gert Doering
Lazy-ACK rules have been applied ("nobody screamed for two weeks", the
code is for a single platform, does not involve buffer management or 
crypto, and is trivial enough).

The "get default gateway" part has been tested by Samuli (mingw), Heiko 
(cygwin) and Lev (MSVC), the "... and install proper routes" part needs 
more real-world exposure...

Patch has been applied to the master branch.

commit 5fcd49336812053aa1503078c0ebb72a2737a6b8
Author: Gert Doering
List-Post: openvpn-devel@lists.sourceforge.net
Date:   Fri Sep 11 17:33:47 2015 +0200

 get_default_gateway_ipv6(): Win32 implementation using GetBestRoute2()

 Signed-off-by: Gert Doering 
 Lazy-ACK-by: Gert Doering 
 Message-Id: <1441985627-14822-11-git-send-email-g...@greenie.muc.de>
 URL: http://article.gmane.org/gmane.network.openvpn.devel/10085


--
kind regards,

Gert Doering




Re: [Openvpn-devel] russian language fixes

2015-10-06 Thread ValdikSS
I posted the similar patch a year ago directly to openvpn-gui sourceforge page 
and it seems to be gone.
So please apply this.

On 06.10.2015 11:45, Anatoly Pugachev wrote:
>
> Hello!
>
> Can you please apply patch from trac ticket 446. Thanks.
>
> https://community.openvpn.net/openvpn/ticket/446
>
>
>
> --
>
>
> ___
> Openvpn-devel mailing list
> Openvpn-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openvpn-devel



signature.asc
Description: OpenPGP digital signature


[Openvpn-devel] russian language fixes

2015-10-06 Thread Anatoly Pugachev
Hello!

Can you please apply patch from trac ticket 446. Thanks.

https://community.openvpn.net/openvpn/ticket/446