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

Back to archive index

Kimura Fuyuki fuyuk****@hadal*****
2003年 5月 4日 (日) 09:09:16 JST


At Fri, 02 May 2003 23:26:07 -1000 (HST),
Shiro Kawai <shiro****@lava*****> wrote:
> 
> HAVE_IPV6でなくても AF_INET6 の定義はあったりするので、

実はこれをひそかに恐れていました。やっぱりそういう環境がありましたか。
(if ... define-enum ... ) をさらに if でくくっておきたかったのですが、
それは今のところできないようなので。

> かわりに
>   (define ipv6-capable (symbol-bound? 'sys-getaddrinfo))
> としたら通りました。

では当面こちらでいきましょうか。

> こういう、プラットフォーム依存な条件をどう処理するかですが、
> Scheme的にはsrfi-0の形に持って行くのが綺麗かなと思っています。
> つまり、
> 
>   (cond-expand
>     (ipv6-capable
>       (define (make-hints ...) ...))
>     (else #f))
> 
> みたいに書けるといいなと。(if ...) だと実行時の解釈に
> なるので、内部にマクロが入っていたりするとややこしいことに
> なります。cond-expandはマクロなので、条件が合わない場合は
> コードが実質的に消えてくれます。

なるほど、こういうときこそsrfi-0が使えるといいですね。実はこういう条件
をどう書けばいいのか全然わかっていませんでした。最初はwhen で書いて、
あれトップレベルで見えないぞとか… ;)

> これはなかなか良いと思いますが、v6で通信できるのにv4を明示的に
> 指定したい時ってあるのかな。サーバソケットなんかはどうなんでしょう。

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

> 自分で使ってないからそのへんさっぱりわかりません。

IPv6のしきいはそんなに高くないですよ。ちょっと試してみるだけなら6to4で
十分です。グローバルなv4アドレスが1個あればいけます。

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

同感です。make-addrinfo-hints か make-ai-hints ですかね。

-- 
木村 冬樹



Gauche-devel-jp メーリングリストの案内
Back to archive index