Cygwin で IPv6 を楽しむ

Cygwin で IPv6 したいと思うと、けっこう難しい。メモ書き。

まず、Cygwin/w32api IPv6 extension をとってくる。こいつを手順に従ってインストールすれば、cygwin 本体は IPv6 対応になる。これは簡単。 問題はアプリケーションをどうするか。基本的には再コンパイルである。

cygwin の setup.exe で「ソース」を指定して取ってくると、/usr/src 以下に入る。で、それを ./configure ; make ; make install すりゃあいい、はずなのだが、なかなかうまくいかんのだ。

自分が ssh と wget しか使わないので、これだけ。

openssh
README.platform にこんなことが書いてあるので、この通りにするといい。個人的には minires-devel に気づかなくてはまった。setup.exe のパッケージ一覧ではView ボタンを押してアルファベット順にすると探しやすい。
To build on Cygwin, OpenSSH requires the following packages:
gcc, gcc-mingw-core, mingw-runtime, binutils, make, openssl,
openssl-devel, zlib, minires, minires-devel.
openssh 3.9p1-2 で動作確認。
wget
素直にコンパイルが通る・・・のだが、どういうわけか何もゲットできないバイナリができる。 しょうがないので原因を探しました。sockaddr_in6 の scope とかのフィールドを未初期化のまま使っているのが原因っぽい。ついでに mapped ipv4 アドレスとも相性悪いみたいだったので回避するルーチンを追加して、パッチを作りました。
wget-1.9.1.cygwin-ipv6-patch.diff (3,788 bytes)