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

アーカイブの一覧に戻る

Kimura Fuyuki fuyuk****@hadal*****
2003年 5月 3日 (土) 12:29:26 JST


At Thu, 01 May 2003 13:10:55 +0900,
Kimura Fuyuki <fuyuk****@hadal*****> wrote:
> 
> 高レベルインターフェースにどうやってIPv6を混ぜこむかはまだ考えていませ
> ん。基本的にはv6からv4にフォールバックするべきだろうと思うんですが、ど
> ちらかに強制できたほうがいい場合もありそうです。

考えがまとまったので、先にこっちをやりました。テストをお願いします。

(ipv6-capableというのは暫定のフラグです。いまだにどのタイミングで何が
束縛されるのか理解してない…)

http://www.hadaly.org/fuyuki/gauche-ipv6.patch-2

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

要するに、make-client/server-socket を使った既存のコードがそのままで
「IPv6対応」になるようにしたわけです。

たとえば、次のようなスクリプトでIPv6 で接続しているかどうかを判定でき
ます。

(use rfc.http)
(define (main args)
  (let* ((html (values-ref (http-get "www.ipv6.org" "/") 2))
	 (m (rxmatch #/You are using IPv./ html)))
    (print (rxmatch-substring m))))

サーバのテストには examples/echo-server.scm がいいでしょう。IPv6が有効
になっている環境でこれを起動すると、[::]:3131 を listen するはずです。

-- 
木村 冬樹



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