FreeBSD 8のカーネルのmld6.cとmld6_var.hを修正して、
Allow_new_sources
Block_old_sources
をしゃべれるようにしようとしている。
両方実装されているようなのだが、
(1)Changed to include をむりやり上記2つに書き換える
(2)最初からある上記2つの実装ぽい関数を呼ぶように変更する
の2つをやってみた。
まずは(1)は、ジョイン側、すなわち、Allow_new_sourcesは簡単に出せたが、リーブ側、Block old sourcesは簡単にはいかなかった。しかたがないので、(2)にも挑戦することにした。
ついでに、カーネルコンパイル時に
options KTR
をやってみた。IPv6でKTRを有効にするために、
/etc/sysctl.conf
に以下を設定した。これは、IPv6のマスクである。
debug.ktr.mask=0x10000000
FreeBSDのVirtualBoxを作ってやっているので、コンパイルはCPUを2つうまくつかえないみたいだが、再起動の時間ははやい。VBOX側にはEmacsとtsharkだけをいれた。
KTRは、mld6.c のKTR_MLDを自分で宣言しないと、ちゃんと/var/log/messagesにでてくれない。
#define KTR_MLD KTR_INET6
をいれることにした。