This patch enables the building of OpenVPN for the 2.4 and master 
branches using MSVC (Visual Studio 2013 / MSVC v120), which currently 
doesn't work with 2.4 or a clone of master. 2013 is being used as it 
reduces the complexity of the redistributable requirements and has 
mostly complete C99 support. Further changes will be necessary for 2015 
support when the switch is made.

Note the changes to config-msvc-version.h.in are more of a work around. 
It was a simpler approach when compared to modifying msvc-generate.js to 
handle m4 syntax, and so it may be dropped if there is an intention to 
update the javascript generator.

Signed-off by: Eric Thorpe <e...@sparklabs.com>
---
diff --git a/config-msvc-version.h.in b/config-msvc-version.h.in
index 4bc89e7..7977cb8 100644
--- a/config-msvc-version.h.in
+++ b/config-msvc-version.h.in
@@ -1,8 +1,12 @@
  #define PACKAGE_NAME "@PRODUCT_NAME@"
-#define PACKAGE_STRING "@PRODUCT_NAME@ @PRODUCT_VERSION@"
+#define PACKAGE_STRING "@PRODUCT_NAME@ 
@PRODUCT_VERSION_MAJOR@.@PRODUCT_VERSION_MINOR@@PRODUCT_VERSION_PATCH@"
  #define PACKAGE_TARNAME "@PRODUCT_TARNAME@"
  #define PACKAGE "@PRODUCT_TARNAME@"
-#define PACKAGE_VERSION "@PRODUCT_VERSION@"
+#define PRODUCT_VERSION_MAJOR "@PRODUCT_VERSION_MAJOR@"
+#define PRODUCT_VERSION_MINOR "@PRODUCT_VERSION_MINOR@"
+#define PRODUCT_VERSION_PATCH "@PRODUCT_VERSION_PATCH@"
+#define PACKAGE_VERSION 
"@PRODUCT_VERSION_MAJOR@.@PRODUCT_VERSION_MINOR@.@PRODUCT_VERSION_PATCH@"
+#define PRODUCT_VERSION 
"@PRODUCT_VERSION_MAJOR@.@PRODUCT_VERSION_MINOR@.@PRODUCT_VERSION_PATCH@"
  #define PRODUCT_BUGREPORT "@PRODUCT_BUGREPORT@"
  #define OPENVPN_VERSION_RESOURCE @PRODUCT_VERSION_RESOURCE@
  #define TAP_WIN_COMPONENT_ID "@PRODUCT_TAP_WIN_COMPONENT_ID@"
diff --git a/config-msvc.h b/config-msvc.h
index 3e71c85..9b97e71 100644
--- a/config-msvc.h
+++ b/config-msvc.h
@@ -126,6 +126,7 @@ typedef __int64 int64_t;
  typedef __int32 int32_t;
  typedef __int16 int16_t;
  typedef __int8 int8_t;
+typedef uint16_t in_port_t;

  #ifdef HAVE_CONFIG_MSVC_LOCAL_H
  #include <config-msvc-local.h>
diff --git a/src/openvpn/crypto_openssl.c b/src/openvpn/crypto_openssl.c
index 5549d70..bed39f3 100644
--- a/src/openvpn/crypto_openssl.c
+++ b/src/openvpn/crypto_openssl.c
@@ -287,7 +287,12 @@ show_available_ciphers()

      /* If we ever exceed this, we must be more selective */
      const size_t cipher_list_len = 1000;
+#ifdef _MSC_VER
+    //While GCC will allow you to use a const, MSVC won't (at least 
with a simple declaration). Use a compile time constant for now
+    const EVP_CIPHER *cipher_list[1000];
+#else
      const EVP_CIPHER *cipher_list[cipher_list_len];
+#endif
      size_t num_ciphers = 0;
  #ifndef ENABLE_SMALL
      printf("The following ciphers and cipher modes are available for 
use\n"
diff --git a/src/openvpn/openvpn.vcxproj b/src/openvpn/openvpn.vcxproj
index 8dfbea5..e8a48e2 100644
--- a/src/openvpn/openvpn.vcxproj
+++ b/src/openvpn/openvpn.vcxproj
@@ -99,13 +99,16 @@
      </Link>
    </ItemDefinitionGroup>
    <ItemGroup>
+    <ClCompile Include="argv.c" />
      <ClCompile Include="base64.c" />
+    <ClCompile Include="block_dns.c" />
      <ClCompile Include="buffer.c" />
      <ClCompile Include="clinat.c" />
      <ClCompile Include="comp-lz4.c" />
      <ClCompile Include="comp.c" />
      <ClCompile Include="compstub.c" />
      <ClCompile Include="console.c" />
+    <ClCompile Include="console_builtin.c" />
      <ClCompile Include="crypto.c" />
      <ClCompile Include="crypto_openssl.c" />
      <ClCompile Include="cryptoapi.c" />
@@ -164,12 +167,15 @@
      <ClCompile Include="ssl_verify.c" />
      <ClCompile Include="ssl_verify_openssl.c" />
      <ClCompile Include="status.c" />
+    <ClCompile Include="tls_crypt.c" />
      <ClCompile Include="tun.c" />
      <ClCompile Include="win32.c" />
    </ItemGroup>
    <ItemGroup>
+    <ClInclude Include="argv.h" />
      <ClInclude Include="base64.h" />
      <ClInclude Include="basic.h" />
+    <ClInclude Include="block_dns.h" />
      <ClInclude Include="buffer.h" />
      <ClInclude Include="circ_list.h" />
      <ClInclude Include="clinat.h" />
@@ -249,6 +255,7 @@
      <ClInclude Include="ssl_verify_openssl.h" />
      <ClInclude Include="status.h" />
      <ClInclude Include="syshead.h" />
+    <ClInclude Include="tls_crypt.h" />
      <ClInclude Include="tun.h" />
      <ClInclude Include="win32.h" />
    </ItemGroup>
@@ -268,4 +275,4 @@
    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
    <ImportGroup Label="ExtensionTargets">
    </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/src/openvpn/openvpn.vcxproj.filters 
b/src/openvpn/openvpn.vcxproj.filters
index 8b6a269..30df5ec 100644
--- a/src/openvpn/openvpn.vcxproj.filters
+++ b/src/openvpn/openvpn.vcxproj.filters
@@ -216,6 +216,18 @@
      <ClCompile Include="comp-lz4.c">
        <Filter>Source Files</Filter>
      </ClCompile>
+    <ClCompile Include="argv.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="block_dns.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="console_builtin.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="tls_crypt.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
    </ItemGroup>
    <ItemGroup>
      <ClInclude Include="base64.h">
@@ -464,10 +476,22 @@
      <ClInclude Include="win32.h">
        <Filter>Header Files</Filter>
      </ClInclude>
+    <ClInclude Include="compstub.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="argv.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="block_dns.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="tls_crypt.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
    </ItemGroup>
    <ItemGroup>
      <ResourceCompile Include="openvpn_win32_resources.rc">
        <Filter>Resource Files</Filter>
      </ResourceCompile>
    </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/src/openvpn/ssl_openssl.h b/src/openvpn/ssl_openssl.h
index c64c65f..a974e7e 100644
--- a/src/openvpn/ssl_openssl.h
+++ b/src/openvpn/ssl_openssl.h
@@ -49,7 +49,11 @@
   */
  struct tls_root_ctx {
      SSL_CTX *ctx;
+#ifdef _MSC_VER
+    struct timeval crl_last_mtime;
+#else
      struct timespec crl_last_mtime;
+#endif
      off_t crl_last_size;
  };


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to