The network filter / snapshot / hooks code introduced some non-portable pices that broke the win32 build * configure.ac: Check for net/ethernet.h required by nwfile config parsing code * src/conf/nwfilter_conf.c: Define ethernet protocol constants if net/ethernet.h is missing * src/util/hooks.c: Disable hooks build on Win32 since it lacks fork/exec/pipe * src/util/threads-win32.c: Fix unchecked return value * tools/virsh.c: Disable SIGPIPE on Win32 since it doesn't exist. Fix non-portable strftime() formats --- configure.ac | 2 +- src/conf/nwfilter_conf.c | 20 ++++++++++++++++++++ src/util/hooks.c | 16 ++++++++++++++++ src/util/threads-win32.c | 2 +- tools/virsh.c | 7 ++++++- 5 files changed, 44 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index e13961e..9a133e4 100644 --- a/configure.ac +++ b/configure.ac @@ -111,7 +111,7 @@ dnl Availability of various not common threadsafe functions AC_CHECK_FUNCS([strerror_r strtok_r getmntent_r getgrnam_r getpwuid_r]) dnl Availability of various common headers (non-fatal if missing). -AC_CHECK_HEADERS([pwd.h paths.h regex.h sys/syslimits.h sys/utsname.h sys/wait.h winsock2.h sched.h termios.h sys/poll.h syslog.h mntent.h]) +AC_CHECK_HEADERS([pwd.h paths.h regex.h sys/syslimits.h sys/utsname.h sys/wait.h winsock2.h sched.h termios.h sys/poll.h syslog.h mntent.h net/ethernet.h]) dnl Where are the XDR functions? dnl If portablexdr is installed, prefer that. diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index 16c1a25..0fe51e4 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -26,9 +26,13 @@ #include <config.h> +#include <sys/types.h> +#include <sys/stat.h> #include <fcntl.h> #include <dirent.h> +#if HAVE_NET_ETHERNET_H #include <net/ethernet.h> +#endif #include "internal.h" @@ -41,6 +45,22 @@ #include "domain_conf.h" +/* XXX + * The config parser/struts should not be using platform specific + * constants. Win32 lacks these constants, breaking the parser, + * so temporarily define them until this can be re-written to use + * locally defined enums for all consants + */ +#ifndef ETHERTYPE_IP +#define ETHERTYPE_IP 0x0800 +#endif +#ifndef ETHERTYPE_ARP +#define ETHERTYPE_ARP 0x0806 +#endif +#ifndef ETHERTYPE_IPV6 +#define ETHERTYPE_IPV6 0x86dd +#endif + #define VIR_FROM_THIS VIR_FROM_NWFILTER diff --git a/src/util/hooks.c b/src/util/hooks.c index 755679d..bcab4eb 100644 --- a/src/util/hooks.c +++ b/src/util/hooks.c @@ -24,7 +24,9 @@ #include <config.h> #include <sys/types.h> +#if HAVE_SYS_WAIT_H #include <sys/wait.h> +#endif #include <sys/stat.h> #include <unistd.h> #include <stdlib.h> @@ -188,6 +190,19 @@ virHookPresent(int driver) { * Returns: 0 if the execution succeeded, 1 if the script was not found or * invalid parameters, and -1 if script returned an error */ +#ifdef WIN32 +int +virHookCall(int driver ATTRIBUTE_UNUSED, + const char *id ATTRIBUTE_UNUSED, + int op ATTRIBUTE_UNUSED, + int sub_op ATTRIBUTE_UNUSED, + const char *extra ATTRIBUTE_UNUSED, + const char *input ATTRIBUTE_UNUSED) { + virReportSystemError(ENOSYS, "%s", + _("spawning hooks not supported on this platform")); + return -1; +} +#else int virHookCall(int driver, const char *id, int op, int sub_op, const char *extra, const char *input) { @@ -447,3 +462,4 @@ no_memory: #undef ADD_ENV_LIT #undef ADD_ENV_SPACE } +#endif diff --git a/src/util/threads-win32.c b/src/util/threads-win32.c index b1d1571..a30bccf 100644 --- a/src/util/threads-win32.c +++ b/src/util/threads-win32.c @@ -69,7 +69,7 @@ void virThreadOnExit(void) int virMutexInit(virMutexPtr m) { - virMutexInitRecursive(m); + return virMutexInitRecursive(m); } int virMutexInitRecursive(virMutexPtr m) diff --git a/tools/virsh.c b/tools/virsh.c index aaae7ca..8017beb 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -414,6 +414,7 @@ out: */ static int disconnected = 0; /* we may have been disconnected */ +#ifdef SIGPIPE /* * vshCatchDisconnect: * @@ -442,6 +443,10 @@ vshSetupSignals(void) { sigaction(SIGPIPE, &sig_action, NULL); } +#else +static void +vshSetupSignals(void) {} +#endif /* * vshReconnect: @@ -8425,7 +8430,7 @@ cmdSnapshotList(vshControl *ctl, const vshCmd *cmd) &creation) < 0) continue; localtime_r(&creation, &time_info); - strftime(timestr, sizeof(timestr), "%F %T %z", &time_info); + strftime(timestr, sizeof(timestr), "%Y-%m-%d %H:%M:%S %z", &time_info); vshPrint(ctl, " %-20s %-25s %s\n", names[i], timestr, state); } -- 1.6.6.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list