]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
vici: Add Windows support
authorMartin Willi <martin@revosec.ch>
Thu, 20 Feb 2014 10:29:35 +0000 (11:29 +0100)
committerMartin Willi <martin@revosec.ch>
Wed, 4 Jun 2014 13:53:12 +0000 (15:53 +0200)
src/libcharon/plugins/vici/libvici.c
src/libcharon/plugins/vici/suites/test_event.c
src/libcharon/plugins/vici/suites/test_request.c
src/libcharon/plugins/vici/suites/test_socket.c
src/libcharon/plugins/vici/vici_config.c
src/libcharon/plugins/vici/vici_dispatcher.h
src/libcharon/plugins/vici/vici_query.c

index 6e3b85a7208a05577ae855bb57a3a11f51a79593..d1dadddcbf17e6dde900bf08d48c1dd7e9dc54e8 100644 (file)
@@ -43,7 +43,7 @@ typedef struct {
 typedef enum {
        WAIT_IDLE = 0,
        WAIT_SUCCESS,
-       WAIT_FAILED,
+       WAIT_FAILURE,
        WAIT_READ_ERROR,
 } wait_state_t;
 
@@ -242,7 +242,7 @@ CALLBACK(on_read, bool,
                        return wait_result(conn, WAIT_SUCCESS);
                case VICI_CMD_UNKNOWN:
                case VICI_EVENT_UNKNOWN:
-                       return wait_result(conn, WAIT_FAILED);
+                       return wait_result(conn, WAIT_FAILURE);
                case VICI_CMD_REQUEST:
                case VICI_EVENT_REGISTER:
                case VICI_EVENT_UNREGISTER:
@@ -403,7 +403,7 @@ vici_res_t* vici_submit(vici_req_t *req, vici_conn_t *conn)
                case WAIT_READ_ERROR:
                        errno = conn->error;
                        break;
-               case WAIT_FAILED:
+               case WAIT_FAILURE:
                default:
                        errno = ENOENT;
                        break;
@@ -712,7 +712,7 @@ int vici_register(vici_conn_t *conn, char *name, vici_event_cb_t cb, void *user)
                case WAIT_READ_ERROR:
                        errno = conn->error;
                        break;
-               case WAIT_FAILED:
+               case WAIT_FAILURE:
                default:
                        errno = ENOENT;
                        break;
index 12fd03107781fcad650878c886259a365fe3ef38..b923ad393ce27606e344d9140d91309e639dbfd5 100644 (file)
 
 #include <unistd.h>
 
-#define URI "unix:///tmp/strongswan-vici-event-test"
+#ifdef WIN32
+# define URI "tcp://127.0.0.1:6543"
+#else /* !WIN32 */
+# define URI "unix:///tmp/strongswan-vici-event-test"
+#endif /* !WIN32 */
 
 static void event_cb(void *user, char *name, vici_res_t *ev)
 {
index 8cb11a7ea58afe276300faf0d413bcee1c367290..8eeb37bc96846ccca50a76594ee50e698a2201c4 100644 (file)
 
 #include <unistd.h>
 
-#define URI "unix:///tmp/strongswan-vici-request-test"
+#ifdef WIN32
+# define URI "tcp://127.0.0.1:6543"
+#else /* !WIN32 */
+# define URI "unix:///tmp/strongswan-vici-request-test"
+#endif /* !WIN32 */
 
 static void encode_section(vici_req_t *req)
 {
index 032445bb08f0c684305e208ba30233eedae3ae22..8d545c6c1951a469ef315ced572d95af52681bc5 100644 (file)
@@ -61,11 +61,13 @@ static struct {
        { "tcp://127.0.0.1:6543",  2 },
        { "tcp://127.0.0.1:6543",  3 },
        { "tcp://127.0.0.1:6543",  7 },
+#ifndef WIN32
        { "unix:///tmp/strongswan-tests-vici-socket", ~0 },
        { "unix:///tmp/strongswan-tests-vici-socket",  1 },
        { "unix:///tmp/strongswan-tests-vici-socket",  2 },
        { "unix:///tmp/strongswan-tests-vici-socket",  3 },
        { "unix:///tmp/strongswan-tests-vici-socket",  7 },
+#endif /* !WIN32 */
 };
 
 START_TEST(test_echo)
index 3f2fec4447fb1578438b46ed440bd83223facf1c..2319bddafb483615823013a0f009557b56e616d3 100644 (file)
@@ -24,7 +24,6 @@
 #include <collections/linked_list.h>
 
 #include <stdio.h>
-#include <netdb.h>
 
 /**
  * Magic value for an undefined lifetime
index effe5a6704c838a77009a965b9a4adf38a72ac8f..2297a80bd2ca4b1c57fb8d67c7d7a1cddb0264ab 100644 (file)
@@ -29,7 +29,11 @@ typedef enum vici_operation_t vici_operation_t;
 /**
  * Default socket URI of vici service
  */
-#define VICI_DEFAULT_URI "unix://" IPSEC_PIDDIR "/charon.vici"
+#ifdef WIN32
+# define VICI_DEFAULT_URI "tcp://127.0.0.1:4502"
+#else
+# define VICI_DEFAULT_URI "unix://" IPSEC_PIDDIR "/charon.vici"
+#endif
 
 /**
  * Kind of vici operation
index 9a8e9a4d646d7cadfe69934bf96cfdcd0165d548..e7c48f4aa0d3587a8906dfdf456218ef89cebfb9 100644 (file)
@@ -17,7 +17,9 @@
 #include "vici_builder.h"
 
 #include <inttypes.h>
+#ifndef WIN32
 #include <sys/utsname.h>
+#endif
 
 #include <daemon.h>
 
@@ -786,7 +788,6 @@ CALLBACK(list_certs, vici_message_t*,
 CALLBACK(version, vici_message_t*,
        private_vici_query_t *this, char *name, u_int id, vici_message_t *request)
 {
-       struct utsname utsname;
        vici_builder_t *b;
 
        b = vici_builder_create();
@@ -794,13 +795,40 @@ CALLBACK(version, vici_message_t*,
        b->add_kv(b, "daemon", "%s", lib->ns);
        b->add_kv(b, "version", "%s", VERSION);
 
-       if (uname(&utsname) == 0)
+#ifdef WIN32
        {
-               b->add_kv(b, "sysname", "%s", utsname.sysname);
-               b->add_kv(b, "release", "%s", utsname.release);
-               b->add_kv(b, "machine", "%s", utsname.machine);
+               OSVERSIONINFOEX osvie;
+
+               memset(&osvie, 0, sizeof(osvie));
+               osvie.dwOSVersionInfoSize = sizeof(osvie);
+
+               if (GetVersionEx((LPOSVERSIONINFO)&osvie))
+               {
+                       b->add_kv(b, "sysname", "Windows %s",
+                               osvie.wProductType == VER_NT_WORKSTATION ? "Client" : "Server");
+                       b->add_kv(b, "release", "%d.%d.%d (SP %d.%d)",
+                               osvie.dwMajorVersion, osvie.dwMinorVersion, osvie.dwBuildNumber,
+                               osvie.wServicePackMajor, osvie.wServicePackMinor);
+                       b->add_kv(b, "machine", "%s",
+#ifdef WIN64
+                               "x86_64");
+#else
+                               "x86");
+#endif /* !WIN64 */
+               }
        }
+#else /* !WIN32 */
+       {
+               struct utsname utsname;
 
+               if (uname(&utsname) == 0)
+               {
+                       b->add_kv(b, "sysname", "%s", utsname.sysname);
+                       b->add_kv(b, "release", "%s", utsname.release);
+                       b->add_kv(b, "machine", "%s", utsname.machine);
+               }
+       }
+#endif /* !WIN32 */
        return b->finalize(b);
 }