# IPv6 support for mswin

**URL:** <https://www.ruby-forum.com/t/ipv6-support-for-mswin/135915>\
**Category:** Development\
**Created:** [April 26, 2008, 8:17am UTC](https://www.ruby-forum.com/t/ipv6-support-for-mswin/135915 "2008-04-26T08:17:54Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![MSKozuka](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/db5fbb/32.png) [@MSKozuka](https://www.ruby-forum.com/u/MSKozuka)\
**Post date:** [April 26, 2008, 8:17am UTC](https://www.ruby-forum.com/t/ipv6-support-for-mswin/135915/1 "2008-04-26T08:17:54Z")

</div>

ruby-dev MLe$B$N3’MM!"$O$8$a$^$7$F!#e(B  
e$B\>.DM$H$$$$$^$9!#e(B

e$B8=:\_!“e(B1.8e$B7O!“e(B1.9e$B7O6&$K!“e(Bmswine$B$G$O@596K!$G$Oe(BIPv6e$B$,e(B  
e$B$&$^$/;H$($:e(B(e$B%X%C%@$,ITE,@Z$J$?$ae(Bipv6e$B$NM-L5$,\>o$K\<:GT$9$ke(B)  
e$BHa$7$$;W$$$r$7$F$$$^$9!#e(B  
e$B0J2\<$N$h$&$JJQ99$GDL$k$h$&$K$J$k$H;W$$$^$9$,!”$I$&$G$7$g$&$+!#e(B  
(e$BB\>$N%W%i%C%H%U%)!\<%`$GIT6q9g$,$”$k$+$I$&$+L$8!\>Z$G$9!#e(B  
e$B$”$H!“e(BWinXPe$B$G:n$C$?%P%$%J%j$,e(B2ke$B$GF0$+$J$/$J$k$H$+$”$k$+$b$G$9e(B)

# Index: ext/socket/extconf.rb

— ext/socket/extconf.rb (revision 16197)  
+++ ext/socket/extconf.rb (working copy)  
@@ -30,9 +30,24 @@  
end

ipv6 = false  
-default\_ipv6 = /cygwin/ !~ RUBY\_PLATFORM  
-if enable\_config(“ipv6”, default\_ipv6)

- if checking\_for(“ipv6”) {try\_link(\<\<EOF)}  
+case RUBY\_PLATFORM  
+when /bccwin32|mswin32|mingw/

- if enable\_config(“ipv6”, true)
- if checking\_for(“ipv6”) {try\_link(\<\<EOF)}  
+#{COMMON\_HEADERS}  
+main()  
+{
- socket(AF\_INET6, SOCK\_STREAM, 0);  
+}  
+EOF
- 

```
 $defs << "-DENABLE_IPV6" << "-DINET6"

```

- 

```
 ipv6 = true

```

- end
- end  
+else
- default\_ipv6 = /cygwin/ !~ RUBY\_PLATFORM
- if enable\_config(“ipv6”, default\_ipv6)
- if checking\_for(“ipv6”) {try\_link(\<\<EOF)}  
#include \<sys/types.h\>  
#include \<sys/socket.h\>  
main()  
@@ -40,8 +55,9 @@  
socket(AF\_INET6, SOCK\_STREAM, 0);  
}  
EOF

- $defs \<\< “-DENABLE\_IPV6” \<\< “-DINET6”
- ipv6 = true

- 

```
 $defs << "-DENABLE_IPV6" << "-DINET6"

```

- 

```
 ipv6 = true

```

- end  
end  
end

@@ -105,7 +121,13 @@  
end

getaddr\_info\_ok = enable\_config(“wide-getaddrinfo”) do

- wsastartup = \<\<EOF if $mswin or $bccwin or $mingw
- WSADATA wsaData;
- if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
- goto bad;  
+EOF  
checking\_for(“wide getaddrinfo”) {try\_run(\<\<EOF)}  
+#{COMMON\_HEADERS}  
#{cpp\_include(headers)}  
#include \<stdlib.h\>

@@ -123,8 +145,9 @@  
main()  
{  
int passive, gaierr, inet4 = 0, inet6 = 0;

- struct addrinfo hints, \*ai, \*aitop;

- struct addrinfo hints, \*ai, \*aitop = NULL;  
char straddr[INET6\_ADDRSTRLEN], strport[16];  
+#{wsastartup}

$objs = [“socket.#{$OBJEXT}”]

# -unless getaddr\_info\_ok and have\_func(“getnameinfo”, “netdb.h”) and have\_func(“getaddrinfo”, “netdb.h”) +unless getaddr\_info\_ok and have\_func(“getnameinfo”, headers) and have\_func(“getaddrinfo”, headers) if have\_struct\_member(“struct in6\_addr”, “s6\_addr8”, headers) $defs[-1] = “-DHAVE\_ADDR8” end Index: include/ruby/win32.h

— include/ruby/win32.h (revision 16197)  
+++ include/ruby/win32.h (working copy)  
@@ -28,6 +28,7 @@  
// #include \<stdarg.h\> conflict with varargs.h?  
#if !defined(WSAAPI)  
#include \<winsock2.h\>  
+#include \<ws2tcpip.h\>  
#endif

# #define NT 1 /\* deprecated \*/ Index: win32/Makefile.sub

— win32/Makefile.sub (revision 16197)  
+++ win32/Makefile.sub (working copy)  
@@ -260,7 +260,7 @@  
COMMON\_MACROS = WIN32\_LEAN\_AND\_MEAN WIN32  
!endif  
!ifndef COMMON\_HEADERS  
-COMMON\_HEADERS = winsock2.h windows.h  
+COMMON\_HEADERS = winsock2.h ws2tcpip.h windows.h  
!endif

arch\_hdrdir = $(EXTOUT)/include/$(arch)

---

<div class="post-metadata">

**Author:** ![MSKozuka](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/db5fbb/32.png) [@MSKozuka](https://www.ruby-forum.com/u/MSKozuka)\
**Post date:** [April 28, 2008, 7:02am UTC](https://www.ruby-forum.com/t/ipv6-support-for-mswin/135915/2 "2008-04-28T07:02:59Z")

</div>

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:34517] IPv6 support for mswin”  
on Apr.26,2008 15:17:24, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> e$B8=:\_!"e(B1.8e$B7O!"e(B1.9e$B7O6&$K!“e(Bmswine$B$G$O@596K!$G$Oe(BIPv6e$B$,e(B  
> e$B$&$^$/;H$($:e(B(e$B%X%C%@$,ITE,@Z$J$?$ae(Bipv6e$B$NM-L5$,\>o$K\<:GT$9$ke(B)  
> e$BHa$7$$;W$$$r$7$F$$$^$9!#e(B  
> e$B0J2\<$N$h$&$JJQ99$GDL$k$h$&$K$J$k$H;W$$$^$9$,!”$I$&$G$7$g$&$+!#e(B

e$B;d$N\<j85$K$b;w$?$h$&$J%Q%C%A$,$"$j$^$9!#e(B

> (e$BB\>$N%W%i%C%H%U%)!\<%`$GIT6q9g$,$“$k$+$I$&$+L$8!\>Z$G$9!#e(B  
> e$B$”$H!“e(BWinXPe$B$G:n$C$?%P%$%J%j$,e(B2ke$B$GF0$+$J$/$J$k$H$+$”$k$+$b$G$9e(B)

IPv6e$BM-8z$H$7$F:n$C$?e(Bsocket.soe$B$Oe(BIPv6e$B$,L58z$J4D6-$GF0$-$^$;$s!#e(B  
e$B$H!“$$$&LdBj$,$”$k$N$Ge(Bcommite$B$7$F$J$$\>uBV$G$9!#e(B  
e$B$I$&$7$?$b$s$G$9$+$M$(!#e(B  
IPv6e$B\<+BN$OBP1~$5$;$F!“%G%U%)%k%He(Bdisablee$B$K$J$k$h$&$K$7$F$\*$1$Pe(B  
e$B$$$$$N$+$J$”!#e(B

e$B$=$l$G$O!#e(B

---

<div class="post-metadata">

**Author:** ![MSKozuka](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/db5fbb/32.png) [@MSKozuka](https://www.ruby-forum.com/u/MSKozuka)\
**Post date:** [April 28, 2008, 10:10am UTC](https://www.ruby-forum.com/t/ipv6-support-for-mswin/135915/3 "2008-04-28T10:10:52Z")

</div>

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:34534] Re: IPv6 support for mswin”  
on Apr.28,2008 16:56:49, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > IPv6e$BM-8z$H$7$F:n$C$?e(Bsocket.soe$B$Oe(BIPv6e$B$,L58z$J4D6-$GF0$-$^$;$s!#e(B  
> > e$B$H!“$$$&LdBj$,$”$k$N$Ge(Bcommite$B$7$F$J$$\>uBV$G$9!#e(B  
> > e$B$I$&$7$?$b$s$G$9$+$M$(!#e(B  
> > IPv6e$B\<+BN$OBP1~$5$;$F!“%G%U%)%k%He(Bdisablee$B$K$J$k$h$&$K$7$F$\*$1$Pe(B  
> > e$B$$$$$N$+$J$”!#e(B  
> > e$B$"$l!#e(BXPe$B0J9\_$G$O!"e(Bws2\_32.dlle$B$Ke(Bgetaddrinfo()e$B$,0\F0$7$F$$$k$N$G!"e(B  
> > IPv6e$BM-8z$Je(Bsocket.soe$B$re(BIPv6e$BL58z$J4D6-$K$b$C$F$$$C$F$b$&$4$/$h$&$J!#e(B  
> > e$B0J2\<!"e(BIPv6e$BL58z2=$7$?e(BXPSP2e$B$G$NF0:n$G$9!#e(B

e$B$“$”!"e(BXPe$B0J9\_$@$HBg\>fIW$J$s$G$9$+!#$J$k$[$I!#e(B

# e$B$D$^$j;d$,;n$7$F$?$N$Oe(BWin2Ke$B;~Be$G$9e(B…

> IPv6e$BM-8z2=$7$?e(Bsocket.soe$B$Oe(BXP or 2003e$B0JA0$Ne(BWine$B$G$Oe(B  
> e$BF0$+$J$/$J$k$H$O;W$$$^$9$,!"$$$^$5$i$$$j$^$9$+$M$'e(B?

e$B;d$NEz$($O!VMW$j$^$9!W$G$9$,e(B(e$B$D$^$j;d$,%P%$%J%j$r:n$k$J$i!"$=e(B  
e$B$l$Oe(BWin2Ke$BEy$G$bF0$/$b$N$G$J$$$H$$$1$J$$e(B)e$B!"e(BIPv6e$BBP1~%P%$%J%j$,e(B  
e$B$[$7$$?M$,\<+A0$G%3%s%Q%$%k$9$kJ,$K$O$+$^$o$J$$$G$7$g$&$M!#e(B  
e$BK\7o!"G\>Fb$NM%@hEY$r\>e$2$^$9!#e(B

e$B$=$l$G$O!#e(B

---

<div class="post-metadata">

**Author:** ![MSKozuka](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/db5fbb/32.png) [@MSKozuka](https://www.ruby-forum.com/u/MSKozuka)\
**Post date:** [April 28, 2008, 9:58am UTC](https://www.ruby-forum.com/t/ipv6-support-for-mswin/135915/4 "2008-04-28T09:58:14Z")

</div>

e$B$J$+$`$i$5$s!"\>.DM$G$9!#e(B

> > (e$BB\>$N%W%i%C%H%U%)!\<%`$GIT6q9g$,$"$k$+$I$&$+L$8!\>Z$G$9!#e(B  
> > e$B$"$H!“e(BWinXPe$B$G:n$C$?%P%$%J%j$,e(B2ke$B$GF0$+$J$/$J$k$H$+$”$k$+$b$G$9e(B)
> 
> IPv6e$BM-8z$H$7$F:n$C$?e(Bsocket.soe$B$Oe(BIPv6e$B$,L58z$J4D6-$GF0$-$^$;$s!#e(B  
> e$B$H!"$$$&LdBj$,$"$k$N$Ge(Bcommite$B$7$F$J$$\>uBV$G$9!#e(B  
> e$B$I$&$7$?$b$s$G$9$+$M$(!#e(B  
> IPv6e$B\<+BN$OBP1~$5$;$F!"%G%U%)%k%He(Bdisablee$B$K$J$k$h$&$K$7$F$\*$1$Pe(B  
> e$B$$$$$N$+$J$"!#e(B  
> e$B$"$l!#e(BXPe$B0J9\_$G$O!"e(Bws2\_32.dlle$B$Ke(Bgetaddrinfo()e$B$,0\F0$7$F$$$k$N$G!"e(B  
> IPv6e$BM-8z$Je(Bsocket.soe$B$re(BIPv6e$BL58z$J4D6-$K$b$C$F$$$C$F$b$&$4$/$h$&$J!#e(B  
> e$B0J2\<!"e(BIPv6e$BL58z2=$7$?e(BXPSP2e$B$G$NF0:n$G$9!#e(B

e$B!a!ae(B  
C:\Documents and Settings\kozuka\>ipv6 if  
Could not access IPv6 protocol stack - the stack is not installed.  
To install, please use ‘ipv6 install’.

C:\Documents and Settings\kozuka\>\ruby19\bin\ruby -rsocket   
-e “p udp=UDPSocket.new(Socket::AF\_INET)”  
#UDPSocket:0xc05904  
e$B!a!ae(B

w2ke$B$Ne(BIPv6  
Previewe$B$N;~Be$@$H!“e(Bgetaddrinfo()e$B$,e(Bwship6.dlle$B$K$”$C$F!"e(B  
e$B$=$C$A$r%j%s%/$7$J$$$H$$$1$J$+$C$?$N$G!“e(BIPv6e$BL58z$N4D6-$@$He(B  
e$B$&$4$+$J$/$J$k$H$$$&$3$H$O$”$j$^$7$?$,!"e(BXPe$B0J9\_$G$O$=$NLdBj$Oe(B  
e$B$J$$$O$:$G$9!#e(B

IPv6e$BM-8z2=$7$?e(Bsocket.soe$B$Oe(BXP or 2003e$B0JA0$Ne(BWine$B$G$Oe(B  
e$BF0$+$J$/$J$k$H$O;W$$$^$9$,!"$$$^$5$i$$$j$^$9$+$M$'e(B?
