diff --git a/dist/IO/poll.h b/dist/IO/poll.h
index 08de2506cdb2..0b025c0ad20d 100644
--- a/dist/IO/poll.h
+++ b/dist/IO/poll.h
@@ -10,7 +10,7 @@
 #ifndef POLL_H
 #  define POLL_H
 
-#if (defined(HAS_POLL) && defined(I_POLL)) || defined(POLLWRBAND)
+#if (defined(HAS_POLL) && defined(I_POLL)) || (defined(POLLWRBAND) && !defined(_WIN32))
 #  include <poll.h>
 #elif (defined(HAS_POLL) && defined(I_SYS_POLL))
 #  include <sys/poll.h>
@@ -22,11 +22,16 @@
 
 #define EMULATE_POLL_WITH_SELECT
 
+#ifdef _WIN32
+#  include <winsock2.h>
+#endif
+
 #ifdef poll
 # undef poll
 #endif
 #define poll Perl_my_poll
 
+#if WINVER < 0x0600
 typedef struct pollfd {
     int fd;
     short events;
@@ -48,6 +53,8 @@ typedef struct pollfd {
 #define	POLLHUP		0x0010
 #define	POLLNVAL	0x0020
 
+#endif
+
 int poll (struct pollfd *, unsigned long, int);
 
 #ifndef HAS_POLL
diff --git a/win32/config.gc b/win32/config.gc
index 9d44768f64d1..6005e72bfa60 100644
--- a/win32/config.gc
+++ b/win32/config.gc
@@ -307,8 +307,8 @@ d_ilogbl='define'
 d_inc_version_list='undef'
 d_index='undef'
 d_inetaton='undef'
-d_inetntop='undef'
-d_inetpton='undef'
+d_inetntop='define'
+d_inetpton='define'
 d_int64_t='undef'
 d_ip_mreq='undef'
 d_ip_mreq_source='undef'
diff --git a/win32/config_H.gc b/win32/config_H.gc
index 3644377b7973..2533efd05908 100644
--- a/win32/config_H.gc
+++ b/win32/config_H.gc
@@ -2809,13 +2809,13 @@
  *	This symbol, if defined, indicates that the inet_ntop() function
  *	is available to parse IPv4 and IPv6 strings.
  */
-/*#define HAS_INETNTOP		/ **/
+#define HAS_INETNTOP		/**/
 
 /* HAS_INETPTON:
  *	This symbol, if defined, indicates that the inet_pton() function
  *	is available to parse IPv4 and IPv6 strings.
  */
-/*#define HAS_INETPTON		/ **/
+#define HAS_INETPTON		/**/
 
 /* HAS_INT64_T:
  *	This symbol will defined if the C compiler supports int64_t.