[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)は常に真になるから不要ですよね?


http://www.freewnn.org/ FreeWnn Project