hamayan です。
どうも、先日は連絡有難うございました。
terumitsu> ども
terumitsu> 電源いれた後の最初のdhcpが失敗するのは
terumitsu> sample/lib/tcpip/link.c の受信部で IPと比較してから、 IP層に投げているの
terumitsu> ですが
terumitsu> dhcpd からあたらしいIPをもらっても、自分へのパケットでないと判定して、パ
terumitsu> ケットを
terumitsu> 破棄しているため。
switch ( ef->type )
{
case TYPEIP : /*IPプロトコル*/
/*IP領域の先頭アドレスを取得*/
ip = IPTopAddress( ipr );
/*自己宛ての要求の時*/
if( IP_COMPAER(ip->head.dIP,ThisIs) )
ここの事ですね。先日の連絡の後も考えていたのですが、変数ThisIsは
グローバル変数で、DHCPのDISCOVERを送る前に0クリアされています。
これに対して、サーバーからの応答は、ブロードキャストIPを返して来
ますので、
/*ブロードキャスト*/
else if( IP_COMPAER(ip->head.dIP,BroadCast) ) IPRcv( ipr );
ここで引き取れるはずです。これはPACK、PNAKについても同じです。
まさかの話ですが、電源立ちあがり直後でDHCPが効かない時って、電源
を入れる前にLANケーブルは差さっていますよね。
------------------------------------------------------------
)^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^(
☆☆☆☆☆☆☆☆☆☆☆☆designed by hamayan☆☆☆☆☆☆☆☆☆
from はまやん
アドレスは
hamayan@xxxxxxxxxxxxxxxx
URL
http://www003.upp.so-net.ne.jp/hamayan/
The Embeded Protocol Engine
Navajo
http://hamayan.ddo.jp:8080/
★★★★★★★★★end of message and thank you★★★★★★★