MonaでuIPが動作しない原因を探る会
Monaに無理やり移植したuIPを実行しても、動いていないように見える。
症状は
こういうときのデバッグの際に、どうやって犯人を追い詰めるかの過程を書いてみると、だめな点が分かったり他の人の助けになるかもしれない。
思考・デバッグの流れ
- pingに反応がない ARP はうまくいっているだろうか?
- Windows側で arp -a してみると・・・。ARPがキャッシュされていない。
- うーん。ARPがうまくいってないってことは、まずはARP リクエストを受信できているのだろうか?
- printfを受信っぽいところに埋め込む
- 受信できているっぽい
- じゃあ送信は?うーん。送信も一応しているなぁ。
- Ethrealでパケットを覗き見よう。
- まずはIPアドレス指定でMonaのIPアドレスに関連してパケットを全部監視
- 再度ping送信
- む。Monaからの応答が記録されない。
- 今一度送信ロジックが呼ばれているか確認
- 呼ばれている
- 送信されたEther Frameの値を printfしてみるが正しそう
- 手詰まり感が漂う
- ふと、「送信されているけど、Windows側やEtherealに破棄されるほどパケットが壊れているかも」と思いつく。
- Mona側の送信ロジックでEther Frameを強制的にブロードキャストにする
- Ethereal の受信条件をARPに切り替える。(Ether FrameのプロトコルがARPとして送られているのはprintfデバッグで確認済み)
- 受信してみる・・・。Ethereal上でMalformed Packet ARP/RARPと表示された
- 手がかりができたので今調べています(*A* )
実況中継追記1
パケットダンプをじーーーっと見てくると見えてくる見えてくる。
まず赤丸の部分がおかしい。
HardwareTypeの値なんだけれども・・・。
それと青丸のところも怪しいなぁ。MACアドレスっぽいものが繰り返し現れる。
追記2
12byte程ずれている気がする。そしてすごい眠い(ぉ