Subject: | [PATCH] Cygwin 1.5 doesn't have ip_mreq_source |
Socket.xs fails to compile under Cygwin 1.5. Cygwin 1.5 has ip_mreq, but
does not have ip_mreq_source. (Cygwin 1.7 has both.) The attached patch
fixes this by adding a probe for ip_mreq_source (in addition to the probe
for ip_mreq).
Subject: | Socket.patch |
# Cygwin 1.5 doesn't have ip_mreq_source
--- Socket-2.004/Makefile.PL-orig 2012-08-16 10:10:08.389133300 -0400
+++ Socket-2.004/Makefile.PL 2012-08-16 10:14:25.134203700 -0400
@@ -116,6 +116,12 @@
);
check_for(
+ confkey => "d_ip_mreq_source",
+ define => "HAS_IP_MREQ_SOURCE",
+ main => "struct ip_mreq_source mreq; mreq.imr_multiaddr.s_addr = INADDR_ANY;"
+);
+
+check_for(
confkey => "d_ipv6_mreq",
define => "HAS_IPV6_MREQ",
main => "struct ipv6_mreq mreq; mreq.ipv6mr_interface = 0;"
--- Socket-2.004/Socket.xs-orig 2012-08-16 10:10:18.170195500 -0400
+++ Socket-2.004/Socket.xs 2012-08-16 10:14:39.493303000 -0400
@@ -1026,7 +1026,7 @@
SV * interface
CODE:
{
-#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP)
+#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP)
struct ip_mreq_source mreq;
char * multiaddrbytes;
char * sourcebytes;
@@ -1069,7 +1069,7 @@
SV * mreq_sv
PPCODE:
{
-#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP)
+#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP)
struct ip_mreq_source mreq;
STRLEN mreqlen;
char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);