From f5a0b8a5e24cede05e15ab696f0e15257a503525 Mon Sep 17 00:00:00 2001 From: Angelo Mantellini Date: Thu, 31 Jan 2019 18:20:48 +0100 Subject: [HICN24] Windows compatibility for hicn-light Change-Id: I8e19e52c9b4ec0fcbd7344c28765f5da1937569c Signed-off-by: Angelo Mantellini --- hicn-light/src/core/forwarder.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) (limited to 'hicn-light/src/core/forwarder.c') diff --git a/hicn-light/src/core/forwarder.c b/hicn-light/src/core/forwarder.c index e84351365..f3af85d6c 100644 --- a/hicn-light/src/core/forwarder.c +++ b/hicn-light/src/core/forwarder.c @@ -23,6 +23,11 @@ * the event scheduler */ +#ifndef _WIN32 +#include +#include +#include +#endif #include #include #include @@ -32,10 +37,6 @@ #include #include #include -#include - -#include -#include #define __STDC_FORMAT_MACROS #include @@ -80,7 +81,9 @@ struct forwarder { PARCEventSignal *signal_int; PARCEventSignal *signal_term; +#ifndef _WIN32 PARCEventSignal *signal_usr1; +#endif PARCEventTimer *keepalive_event; // will skew the virtual clock forward. In normal operaiton, it is 0. @@ -121,6 +124,7 @@ static void _keepalive_cb(int, PARCEventType, void *); * Reseed our pseudo-random number generator. */ static void forwarder_Seed(Forwarder *forwarder) { +#ifndef _WIN32 int fd; ssize_t res; @@ -139,6 +143,10 @@ static void forwarder_Seed(Forwarder *forwarder) { * on other platforms. */ seed48(forwarder->seed); +#else + forwarder->seed[1] = (unsigned short)getpid(); /* better than no entropy */ + forwarder->seed[2] = (unsigned short)time(NULL); +#endif } Logger *forwarder_GetLogger(const Forwarder *forwarder) { @@ -183,22 +191,25 @@ Forwarder *forwarder_Create(Logger *logger) { forwarder->signal_int = dispatcher_CreateSignalEvent( forwarder->dispatcher, _signal_cb, forwarder, SIGINT); dispatcher_StartSignalEvent(forwarder->dispatcher, forwarder->signal_int); - +#ifndef _WIN32 forwarder->signal_usr1 = dispatcher_CreateSignalEvent( forwarder->dispatcher, _signal_cb, forwarder, SIGPIPE); dispatcher_StartSignalEvent(forwarder->dispatcher, forwarder->signal_usr1); +#endif -#ifndef __APPLE__ +#if !defined(__APPLE__) && !defined(_WIN32) forwarder->hicnSocketHelper = hicn_create(); if (forwarder->hicnSocketHelper == NULL) return NULL; #endif /* __APPLE__ */ - /* ignore child */ + /* ignore child */ +#ifndef _WIN32 signal(SIGCHLD, SIG_IGN); /* ignore tty signals */ signal(SIGTSTP, SIG_IGN); signal(SIGTTOU, SIG_IGN); signal(SIGTTIN, SIG_IGN); +#endif // We no longer use this for ticks, but we need to have at least one event // schedule to keep Libevent happy. @@ -226,7 +237,7 @@ void forwarder_Destroy(Forwarder **ptr) { parcAssertNotNull(ptr, "Parameter must be non-null double pointer"); parcAssertNotNull(*ptr, "Parameter must dereference to non-null pointer"); Forwarder *forwarder = *ptr; -#if !defined(__APPLE__) && !defined(__ANDROID__) +#if !defined(__APPLE__) && !defined(__ANDROID__) && !defined(_WIN32) hicn_destroy(); #endif parcEventTimer_Destroy(&(forwarder->keepalive_event)); @@ -244,8 +255,10 @@ void forwarder_Destroy(Forwarder **ptr) { &(forwarder->signal_int)); dispatcher_DestroySignalEvent(forwarder->dispatcher, &(forwarder->signal_term)); +#ifndef _WIN32 dispatcher_DestroySignalEvent(forwarder->dispatcher, &(forwarder->signal_usr1)); +#endif parcClock_Release(&forwarder->clock); logger_Release(&forwarder->logger); @@ -463,10 +476,11 @@ static void _signal_cb(int sig, PARCEventType events, void *user_data) { __func__, "Caught an interrupt signal; exiting cleanly."); dispatcher_Stop(forwarder->dispatcher); break; - +#ifndef _WIN32 case SIGUSR1: // dump stats break; +#endif default: break; -- cgit 1.2.3-korg