MonaでuIPが動作しない原因を探る会

Monaに無理やり移植したuIPを実行しても、動いていないように見える。
症状は


こういうときのデバッグの際に、どうやって犯人を追い詰めるかの過程を書いてみると、だめな点が分かったり他の人の助けになるかもしれない。


思考・デバッグの流れ

  1. pingに反応がない ARP はうまくいっているだろうか?
  2. Windows側で arp -a してみると・・・。ARPがキャッシュされていない。
  3. うーん。ARPがうまくいってないってことは、まずはARP リクエストを受信できているのだろうか?
  4. printfを受信っぽいところに埋め込む
  5. 受信できているっぽい
  6. じゃあ送信は?うーん。送信も一応しているなぁ。
  7. Ethrealでパケットを覗き見よう。
  8. まずはIPアドレス指定でMonaIPアドレスに関連してパケットを全部監視
  9. 再度ping送信
  10. む。Monaからの応答が記録されない。
  11. 今一度送信ロジックが呼ばれているか確認
  12. 呼ばれている
  13. 送信されたEther Frameの値を printfしてみるが正しそう
  14. 手詰まり感が漂う
  15. ふと、「送信されているけど、Windows側やEtherealに破棄されるほどパケットが壊れているかも」と思いつく。
  16. Mona側の送信ロジックでEther Frameを強制的にブロードキャストにする
  17. Ethereal の受信条件をARPに切り替える。(Ether FrameのプロトコルARPとして送られているのはprintfデバッグで確認済み)
  18. 受信してみる・・・。Ethereal上でMalformed Packet ARP/RARPと表示された
  19. 手がかりができたので今調べています(*A*  )

実況中継追記1


パケットダンプをじーーーっと見てくると見えてくる見えてくる。
まず赤丸の部分がおかしい。
HardwareTypeの値なんだけれども・・・。


それと青丸のところも怪しいなぁ。MACアドレスっぽいものが繰り返し現れる。

追記2

12byte程ずれている気がする。そしてすごい眠い(ぉ