From: Junji S. <js...@mc...> - 2005-05-23 17:33:23
|
佐藤です. 違うネットワークで試してもやはり同じ結果(0x200200)でした. で,route.cを見てみたのですが,このフラグってip6_null_entry のrt6i_flagsのような気がします. struct rt6_info ip6_null_entry = { .u = { .dst = { .__refcnt = ATOMIC_INIT(1), .__use = 1, .dev = &loopback_dev, .obsolete = -1, .error = -ENETUNREACH, .metrics = { [RTAX_HOPLIMIT - 1] = 255, }, .input = ip6_pkt_discard, .output = ip6_pkt_discard_out, .ops = &ip6_dst_ops, .path = (struct dst_entry*)&ip6_null_entry, } }, .rt6i_flags = (RTF_REJECT | RTF_NONEXTHOP), .rt6i_metric = ~(u32) 0, .rt6i_ref = ATOMIC_INIT(1), }; struct fib6_node ip6_routing_table = { .leaf = &ip6_null_entry, .fn_flags = RTN_ROOT | RTN_TL_ROOT | RTN_RTINFO, }; xcast6_branch() -> ip6_route_input_byaddr() -> fib6_lookup() -> fib6_lookup_1() と呼ばれるが,該当するエントリがないのでルートエントリ (ip6_route_table)が返ってきて,ルートエントリに対して forで回すが,skb->dev->ifindexがxcst6tnl0のifindexのため デフォルトルートが選択されないのかな,という気がします. #ルーティングテーブルの構造があまり理解していないので #かなりあてずっぽうですが... From: Junji SATO <js...@mc...> Subject: Re: [xcast-linux-dev-ja] vic patch - enable to receive Date: Sun, 22 May 2005 18:37:17 +0900 (JST) > Date: Sun, 22 May 2005 13:06:54 +0900 > > > > xcast6_branch()内のip6_route_input_byaddr()で返ってきた > > > rt6_infoのフラグ判別の部分で,同一リンクではないノードの > > > 場合,なぜかRTF_UPのフラグが立っていないため,ビットマッ > > > プがクリアされ,xcast6_forward()に飛んでいないみたいです. > > > > > > 同一リンクのノードへのxsend > > > - dst=B src=A rt6i_flags=10c0001 > > > ^ > > > > > > 違うリンクのノードへのxsend > > > - dst=C src=A rt6i_flags=200200 > > > ^ > > > *ノードCに対するv6 reachabilityはあり,ping6は正常 > > > に送信されます. > > > > 0x200200 = RTF_NONEXTHOP | RTF_REJECT > > > > のようです. > > ノード C に対する reachability はあるとなると,A と C の > > スコープが違うとか,フィルタの類でそうなっているとかくらい > > しか今のところ考えつかないです. > > > > # ただ,フィルタがルーティングエントリに作用するとは思えない > > # んですよね. > > > > ノード C へはデフォルトルートでない static な経路だったり > > しますか? > > RAで取得した経路で,netstatで見ると,UGDAのフラグが見えます. > v6フィルタはほとんど設定していない :-p ので,上記フラグが > セットされないと思うのですが... > > もしかしたら,環境依存かもしれないので,明日違うネットワーク > でも試してみたいと思います. |