#include <windows.h>
 #include <time.h>
 
+#include <helper/types.h>
+
+/* Windows does not declare sockaddr_un */
+#define UNIX_PATH_LEN 108
+struct sockaddr_un {
+       uint16_t sun_family;
+       char sun_path[UNIX_PATH_LEN];
+};
+
 /* win32 systems do not support ETIMEDOUT */
 
 #ifndef ETIMEDOUT
 
 #include "config.h"
 #endif
 
-#include <sys/socket.h>
+#ifndef _WIN32
 #include <sys/un.h>
 #include <netdb.h>
+#endif
 #include <jtag/interface.h>
 #include "bitbang.h"
 
-/* from unix man page and sys/un.h: */
-#define UNIX_PATH_MAX 108
+#ifndef UNIX_PATH_LEN
+#define UNIX_PATH_LEN 108
+#endif
 
 /* arbitrary limit on host name length: */
 #define REMOTE_BITBANG_HOST_MAX 255
 
        struct sockaddr_un addr;
        addr.sun_family = AF_UNIX;
-       strncpy(addr.sun_path, remote_bitbang_host, UNIX_PATH_MAX);
-       addr.sun_path[UNIX_PATH_MAX-1] = '\0';
+       strncpy(addr.sun_path, remote_bitbang_host, UNIX_PATH_LEN);
+       addr.sun_path[UNIX_PATH_LEN-1] = '\0';
 
        if (connect(fd, (struct sockaddr *)&addr, sizeof(struct sockaddr_un)) < 0) {
                LOG_ERROR("connect: %s", strerror(errno));