[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freewnn:00743] Re: cpp patch + v6 patch
表と申します。はじめまして。
From: Katsuomi Hamajima/濱嶋克臣 <hamajima@nagoya.ydc.co.jp>
Subject: [freewnn:00690] Re: cpp patch + v6 patch (Re: IPv6 patch)
Date: Wed, 15 Aug 2001 11:44:29 +0900 (JST)
> IPv6はKAME以外使ったことがなく、またKAME以外の環境も持っていませんので、
> IPv6対応コードはKAMEを前提としています。
(snip)
> また、jserverを-N付きで起動したときに"netstat -an"で意図としたポート(通
> 常は22273+サーバ番号)でlistenしているか教えてください。
USAGI環境で動作できましましたので、報告します。
環境: Debian unstable(glibc 2.2.4) + USAGI snap 2001/08/20(2.4.9 base)
(getaddrinfo,getnameinfoはUSAGI libinet6ではなくglibcのものを使用)
# ./jserver -N 0
(略)
# ./jserver -N 1
(略)
# ./jserver -N 2
(略)
# ./jserver -N 3
(略)
# ./jserver -N 4
(略)
# ./jserver -N 5
(略)
% netstat -A inet6 -na |grep LISTEN|grep 222
tcp 0 0 :::22273 :::* LISTEN
tcp 0 0 :::22274 :::* LISTEN
tcp 0 0 :::22275 :::* LISTEN
tcp 0 0 :::22276 :::* LISTEN
tcp 0 0 :::22277 :::* LISTEN
tcp 0 0 :::22278 :::* LISTEN
% netstat -A inet -na |grep LISTEN|grep 222
tcp 0 0 0.0.0.0:22273 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22274 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22275 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22276 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22277 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22278 0.0.0.0:* LISTEN
% ./wnnstat -E ip6-localhost:5
Env No. 環境名 参照数 付属語 辞書数(辞書No.) ファイル
0 omote 2 12 12(0 1 2 3 4 5 6 7 8 9 10 11 ) 12 1 13 2 14
3 15 4 16 5 17 6 18 7 19 8 20 9 10 21 11 22 23
ただ、オリジナルのIPv6 patchだとLinuxの場合、wildcard IPv6とwildcard IPv4を
同時にbindすることができない(defaultではPF_INET6側でIPv4パケットを吸い込む)
ので、添付してあるpatchを適用して回避しています。(起動optionやjserverrcで
判別をちゃんとやるべきものなのかな?)
--
Masahito Omote(omote@sapmed.ac.jp)
Sapporo Medical University School of Medicine 3rd grade student.
--- Xsi.orig/Wnn/jserver/de.c Mon Jun 18 01:09:37 2001
+++ Xsi/Wnn/jserver/de.c Sat Sep 8 05:33:48 2001
@@ -1011,6 +1011,13 @@
#endif /* SO_DONTLINGER */
#ifdef INET6
+#if defined(INET6) && defined(IPV6_BINDV6ONLY) && !defined(IPV6_V6ONLY)
+#define IPV6_V6ONLY IPV6_BINDV6ONLY
+#endif
+#ifdef IPV6_V6ONLY
+ if (res->ai_family == AF_INET6)
+ setsockopt(sock_d_in, IPPROTO_IPV6, IPV6_V6ONLY,(char *)&on, sizeof(on));
+#endif /* IPV6_V6ONLY */
if (bind (sock_d_in, res->ai_addr, res->ai_addrlen) == ERROR)
#else
if (bind (sock_d_in, (struct sockaddr *) &saddr_in, sizeof (saddr_in)) == ERROR)