[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
ping でcrash
- Subject: ping でcrash
- From: hiramatu@boreas.dti.ne.jp
- To: tech-misc-ja@jp.netbsd.org
- Date: Mon, 22 Oct 2001 00:56:48 +0900
- Message-ID: <87g08drnpb.wl@river.my.domain>
- Delivered-To: mailing list tech-misc-ja@jp.netbsd.org
- Mailing-List: contact tech-misc-ja-help@jp.netbsd.org; run by ezmlm-idx
- User-Agent: Wanderlust/2.6.0 (Twist And Shout) SEMI/1.14.3 (Ushinoya)FLIM/1.14.3 (Unebigoryōmae) APEL/10.3 Emacs/20.7(i386--netbsd) MULE/4.0 (HANANOEN)
平松です。
NetBSD/i386(10月17日くらいの1.5Y)がインストールされているPCで、
ネットワークインターフェースが初期状態のままで以下のようにコマンドを
入力します。
# ifconfig fxp0 192.168.111.100
# route add default 192.168.111.1
# netstat -rn -f inet
Routing tables
Internet:
Destination Gateway Flags Refs Use Mtu Interface
default 192.168.111.1 UGS 0 0 - fxp0
127 127.0.0.1 UGRS 0 0 33220 lo0
127.0.0.1 127.0.0.1 UH 1 0 33220 lo0
192.168.111 link#1 UC 1 0 - fxp0
192.168.111.1 link#1 UHLc 1 0 - fxp0
# ifconfig fxp0 delete 192.168.111.100
# netstat -rn -f inet
Routing tables
Internet:
Destination Gateway Flags Refs Use Mtu Interface
default 192.168.111.1 UGS 0 0 - fxp0
127 127.0.0.1 UGRS 0 0 33220 lo0
127.0.0.1 127.0.0.1 UH 1 0 33220 lo0
と、fxp0にはIPアドレスが無く、通信できないインターフェースなのにもかかわら
ずルーティングテーブルからfxp0が消えません。
ここで
# ping 224.1.1.1
# ping 255.255.255.255
などを実行するとip_output.cの317行目
/*
* If source address not specified yet, use an address
* of outgoing interface.
*/
if (in_nullhost(ip->ip_src)) {
struct in_ifaddr *ia;
IFP_TO_IA(ifp, ia);
ここ --> ip->ip_src = ia->ia_addr.sin_addr;
}
で、実はNULLポインタらしいiaにアクセスしてcrashします。落ちるのはここ
なのですが、元々は206行目のrtallocでfxp0が戻って来るのが悪く、これは
fxp0のIPアドレスを消してもデフォルトルートに残っているのがそもそもの
原因な感じです。
ここまでは分かったのですが、どう直すのが正しいのかよく分からないので
メールしてみました。
なお、FreeBSDではインターフェースのIPアドレスと一緒にデフォルトルートも
消えます。またLinuxの場合、ifconfigを使ってはIPv4のアドレスは消せない(?)
のか、同じような操作ができませんでした。
----
// 平松 祥史
// hiramatu@boreas.dti.ne.jp