[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freewnn:00744] Re: cpp patch + v6 patch
濱嶋です。
Sat, 08 Sep 2001 06:58:05 +0900 (JST) に
Masahito Omote <omote@sapmed.ac.jp> さんが書かれた
<20010908.065805.112619867.omote@sapmed.ac.jp> を引用しています
>> IPv6はKAME以外使ったことがなく、またKAME以外の環境も持っていませんので、
>> IPv6対応コードはKAMEを前提としています。
>
> USAGI環境で動作できましましたので、報告します。
>
> 環境: Debian unstable(glibc 2.2.4) + USAGI snap 2001/08/20(2.4.9 base)
> (getaddrinfo,getnameinfoはUSAGI libinet6ではなくglibcのものを使用)
素晴らしいです。
> ので、添付してあるpatchを適用して回避しています。(起動optionやjserverrcで
> 判別をちゃんとやるべきものなのかな?)
どのタイミングで判断すべきかはわからないのですが、IPV6_V6ONLYが該当箇
所でしか使っていないのなら
#ifdef INET6
#if defined(IPV6_BINDV6ONLY)
if (res->ai_family == AF_INET6)
setsockopt(sock_d_in, IPPROTO_IPV6, IPV6_BINDV6ONLY, (char *)&on, sizeof(on));
#endif /* IPV6_BINDV6ONLY */
if (bind (sock_d_in, res->ai_addr, res->ai_addrlen) == ERROR)
だけで済むし、他でも使っているのならもっと上の方(includeの後くらい)で
#if defined(INET6) && defined(IPV6_BINDV6ONLY) && !defined(IPV6_V6ONLY)
#define IPV6_V6ONLY IPV6_BINDV6ONLY
#endif
して、
#ifdef INET6
#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
で済みませんか?
少なくとも
#ifdef INET6
#if defined(INET6) && defined(IPV6_BINDV6ONLY) && !defined(IPV6_V6ONLY)
このdefined(INET6)は常に真になるから不要ですよね?