Forums: Help (Thread #3309)

IPパケット (2003-09-06 22:22 by j_akita #5777)

秋田と申します。

uClinux上のソフトウエアを書いている中で、自前でDHCPクライアントを書いているのですが、それに関して1点、カーネルレベルの話っぽい問題に遭遇しましたので、こちらで質問させてください。

DHCPのDISCOVERパケットを自分で作ってブロードキャストあてに送っているのですが、DHCPサーバからのOFFERの応答が返ってこないのです。
(同じプログラムを、PC上(たとえばCygwin)でコンパイル・実行すると、OFFER応答はありますので
DHCPのDISCOVERパケット自体は間違っていないようです)

パケットをキャプチャして解析してみたところ、IPヘッダ内の「識別子」項目が、uClinux上のプログラムから投げたUDPパケット内では
常に「0」になっているようです。
PCのCygwin上でのプログラムから投げたものでは、「識別子」っぽく、いろいろな値(通し番号なんでしょうが)をとっています。

これが原因ではないのかもしれませんが、
投げているパケット内で、(MACアドレスやチェックサム以外では)両者の違いがここと、
もう1つIPヘッダ内の「フラグメント禁止」のフラグが立っていることだけでしたので、
もしかしてIPレベルのドライバのバグかもしれないと思い、ご質問させていただきました。

もしお心当たりの点、ありましたら教えていただければ幸いです。

Reply to #5777×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: IPパケット (2003-09-07 20:04 by ysato #5796)

linuxのプロトコルスタックがそういう仕様になっているようです。
(フラグメント禁止が立つのがすこし疑問ですが)
詳しい資料が手元にないので確認できませんが、RFC的にはこれでもよかったような気がします。

プロトコルスタックは普通のlinuxと同じなので、PCのlinuxで確認できれば確実なんですが。
Reply to #5777

Reply to #5796×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: IPパケット (2003-09-12 15:15 by j_akita #5868)

反応が遅くなり申し訳ありません。

その後いろいろ試したところ、
DHCPパケット内の秒数を書くところの次の
2バイト中のフラグ(Broadcastフラグ?)を
たてたら(0x8000にする)、無事DHCPできました。

結局IPヘッダの話は関係ありませんでした。
お騒がせしました。ありがとうございました。

Reply to #5796

Reply to #5868×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login