vici: Add Windows support

This commit is contained in:
Martin Willi
2014-06-04 15:53:12 +02:00
parent 7659f67af3
commit dfb23fa159
7 changed files with 55 additions and 14 deletions
+4 -4
View File
@@ -43,7 +43,7 @@ typedef struct {
typedef enum { typedef enum {
WAIT_IDLE = 0, WAIT_IDLE = 0,
WAIT_SUCCESS, WAIT_SUCCESS,
WAIT_FAILED, WAIT_FAILURE,
WAIT_READ_ERROR, WAIT_READ_ERROR,
} wait_state_t; } wait_state_t;
@@ -242,7 +242,7 @@ CALLBACK(on_read, bool,
return wait_result(conn, WAIT_SUCCESS); return wait_result(conn, WAIT_SUCCESS);
case VICI_CMD_UNKNOWN: case VICI_CMD_UNKNOWN:
case VICI_EVENT_UNKNOWN: case VICI_EVENT_UNKNOWN:
return wait_result(conn, WAIT_FAILED); return wait_result(conn, WAIT_FAILURE);
case VICI_CMD_REQUEST: case VICI_CMD_REQUEST:
case VICI_EVENT_REGISTER: case VICI_EVENT_REGISTER:
case VICI_EVENT_UNREGISTER: 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: case WAIT_READ_ERROR:
errno = conn->error; errno = conn->error;
break; break;
case WAIT_FAILED: case WAIT_FAILURE:
default: default:
errno = ENOENT; errno = ENOENT;
break; 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: case WAIT_READ_ERROR:
errno = conn->error; errno = conn->error;
break; break;
case WAIT_FAILED: case WAIT_FAILURE:
default: default:
errno = ENOENT; errno = ENOENT;
break; break;
@@ -20,7 +20,11 @@
#include <unistd.h> #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) static void event_cb(void *user, char *name, vici_res_t *ev)
{ {
@@ -20,7 +20,11 @@
#include <unistd.h> #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) static void encode_section(vici_req_t *req)
{ {
@@ -61,11 +61,13 @@ static struct {
{ "tcp://127.0.0.1:6543", 2 }, { "tcp://127.0.0.1:6543", 2 },
{ "tcp://127.0.0.1:6543", 3 }, { "tcp://127.0.0.1:6543", 3 },
{ "tcp://127.0.0.1:6543", 7 }, { "tcp://127.0.0.1:6543", 7 },
#ifndef WIN32
{ "unix:///tmp/strongswan-tests-vici-socket", ~0 }, { "unix:///tmp/strongswan-tests-vici-socket", ~0 },
{ "unix:///tmp/strongswan-tests-vici-socket", 1 }, { "unix:///tmp/strongswan-tests-vici-socket", 1 },
{ "unix:///tmp/strongswan-tests-vici-socket", 2 }, { "unix:///tmp/strongswan-tests-vici-socket", 2 },
{ "unix:///tmp/strongswan-tests-vici-socket", 3 }, { "unix:///tmp/strongswan-tests-vici-socket", 3 },
{ "unix:///tmp/strongswan-tests-vici-socket", 7 }, { "unix:///tmp/strongswan-tests-vici-socket", 7 },
#endif /* !WIN32 */
}; };
START_TEST(test_echo) START_TEST(test_echo)
-1
View File
@@ -24,7 +24,6 @@
#include <collections/linked_list.h> #include <collections/linked_list.h>
#include <stdio.h> #include <stdio.h>
#include <netdb.h>
/** /**
* Magic value for an undefined lifetime * Magic value for an undefined lifetime
+5 -1
View File
@@ -29,7 +29,11 @@ typedef enum vici_operation_t vici_operation_t;
/** /**
* Default socket URI of vici service * 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 * Kind of vici operation
+34 -6
View File
@@ -17,7 +17,9 @@
#include "vici_builder.h" #include "vici_builder.h"
#include <inttypes.h> #include <inttypes.h>
#ifndef WIN32
#include <sys/utsname.h> #include <sys/utsname.h>
#endif
#include <daemon.h> #include <daemon.h>
@@ -786,7 +788,6 @@ CALLBACK(list_certs, vici_message_t*,
CALLBACK(version, vici_message_t*, CALLBACK(version, vici_message_t*,
private_vici_query_t *this, char *name, u_int id, vici_message_t *request) private_vici_query_t *this, char *name, u_int id, vici_message_t *request)
{ {
struct utsname utsname;
vici_builder_t *b; vici_builder_t *b;
b = vici_builder_create(); 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, "daemon", "%s", lib->ns);
b->add_kv(b, "version", "%s", VERSION); b->add_kv(b, "version", "%s", VERSION);
if (uname(&utsname) == 0) #ifdef WIN32
{ {
b->add_kv(b, "sysname", "%s", utsname.sysname); OSVERSIONINFOEX osvie;
b->add_kv(b, "release", "%s", utsname.release);
b->add_kv(b, "machine", "%s", utsname.machine);
}
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); return b->finalize(b);
} }