続々・uIPでUDP
前回(http://d.hatena.ne.jp/yasunoxx/20090902/1251898033)
の続き
ここまでのあらすじ:
・オプティマイズ社製品(http://www.itplaza.co.jp/opti/spi_ether/spi_ether.htm)で
ARMとENC28J60で稼働実績がある(と思われる)uIP-0.9を
CQ-STARM基板で動かすべくゴニョゴニョしているぞ
・でもbroadcastでしか動かないぞ
・ARPはどないなってんねん
ここまでにやったこと:
・DHCPは動くようになった
renewalは付けない事にしたw
・uip_process()内部でunicast前提になっている所を
フラグでバイパスするのをやめた
・その代わりARP(uip_arp.c)にいくつか改造を施した
broadcastについてはAd-hocな手で逃げた
(ヒント:ARPテーブルの初期値)
気を付けておく事:
・ARP requestはuip_arp_out()で出している
・ARPテーブルに無い送信先の場合
ARP requestだけ送信してくれるので
本来送信したいパケットが出ない
(ウソだと思ったらuip_arp_out()の
『if( i == UIP_ARPTAB_SIZE )』以降を読んでみよう
・上記はbroadcast(前述の改造を含む)なら問題ないのだけど
unicastの時は応答待ちしてリトライするような
工夫が必要になるね
(TCPならハンドシェークするから問題ないかも)
今思っている事:
・uIP-1.0はどうなっているんだろう?