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

Back to archive index

Shiro Kawai shiro****@lava*****
2003年 5月 3日 (土) 18:26:07 JST


From: Kimura Fuyuki <fuyuk****@hadal*****>
Subject: Re: [Gauche-devel-jp] IPv6サポートへ向けて
Date: Sat, 03 May 2003 12:29:26 +0900

> 考えがまとまったので、先にこっちをやりました。テストをお願いします。
> http://www.hadaly.org/fuyuki/gauche-ipv6.patch-2

HAVE_IPV6でなくても AF_INET6 の定義はあったりするので、
かわりに
  (define ipv6-capable (symbol-bound? 'sys-getaddrinfo))
としたら通りました。

こういう、プラットフォーム依存な条件をどう処理するかですが、
Scheme的にはsrfi-0の形に持って行くのが綺麗かなと思っています。
つまり、

  (cond-expand
    (ipv6-capable
      (define (make-hints ...) ...))
    (else #f))

みたいに書けるといいなと。(if ...) だと実行時の解釈に
なるので、内部にマクロが入っていたりするとややこしいことに
なります。cond-expandはマクロなので、条件が合わない場合は
コードが実質的に消えてくれます。

現在のsrfi-0の実装はfeature identifierを後から追加できない
のでこういう目的にあまり使えないのですが、いずれ改造しようと
思っています。

> make-client-socket, make-server-socket 共に、IPv6が有効な場合は、
> getaddrinfo で得られたアドレスのうち、最初に connect/listen に成功した
> ものを使います。後者については「成功したものすべて」のほうが正しい動作
> かもしれませんが、それが必要なら make-server-sockets を新設すべきでしょ
> う。
> 
> 要するに、make-client/server-socket を使った既存のコードがそのままで
> 「IPv6対応」になるようにしたわけです。

これはなかなか良いと思いますが、v6で通信できるのにv4を明示的に
指定したい時ってあるのかな。サーバソケットなんかはどうなんでしょう。
自分で使ってないからそのへんさっぱりわかりません。

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

--shiro






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