[Gauche-devel-jp] IPv6サポートへ向けて

アーカイブの一覧に戻る

Shiro Kawai shiro****@lava*****
2003年 5月 4日 (日) 12:25:59 JST


From: Kimura Fuyuki <fuyuk****@hadal*****>
Subject: Re: [Gauche-devel-jp] IPv6サポートへ向けて
Date: Sun, 04 May 2003 09:09:16 +0900

> At Fri, 02 May 2003 23:26:07 -1000 (HST),
> Shiro Kawai <shiro****@lava*****> wrote:
> > 
> > HAVE_IPV6でなくても AF_INET6 の定義はあったりするので、
> 
> 実はこれをひそかに恐れていました。やっぱりそういう環境がありましたか。
> (if ... define-enum ... ) をさらに if でくくっておきたかったのですが、
> それは今のところできないようなので。

(if "defined(HAVE_IPV6)&&defined(AF_INET6)" (define-enum AF_INET6))

という書き方はできますが、全部のシンボルについてこれを
やるのはちょっといやですね。

> > これはなかなか良いと思いますが、v6で通信できるのにv4を明示的に
> > 指定したい時ってあるのかな。サーバソケットなんかはどうなんでしょう。
> 
> たぶんあると思います。が、高レベルインターフェースをあまり複雑にしても
> しょうがないので、特定のアドレスを指定したいときには自力で名前解決して
> そのアドレスを渡してもらうということで。ただし、make-server-socket に
> ついてはこれができません(host引数がないから)。v4 だけで使う場合にも
> bindするアドレスは限定できたほうがいいと思うんですけどね。しかしhost引
> 数を追加すると互換性がなくなってしまうので困っています。

なるほどそうか。v4で使う場合でもアドレス:anyにしたくない場合は
あるわけですね。

あまり綺麗では無いですが、make-server-socketをポリモルフィックに
振る舞わせることはできると思います。

  ;; 現在サポートされている形式
  (make-serrer-socket 'unix (path <string>))
  (make-server-socket 'inet (port <integer>))
  (make-server-socket (port <integer>))

  ;; 追加でサポートする形式
  (make-server-socket 'inet (host <string>) (port <integer>))
  (make-server-socket (addr <sys-sockaddr>))

> > あと、make-hintsという名前はちょっと一般的すぎる気もします。
> > 思います。addrinfo絡みということがわかるような名前が
> > あるといいんですが。
> 
> 同感です。make-addrinfo-hints か make-ai-hints ですかね。

make-addrinfo-hintsにしましょうか。

--shiro



Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る