メイン Routing Protocols Implementation & Model Development ipProtocolNumberについて | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
nagao | 投稿日時: 2006/11/15 15:55 |
半人前 登録日: 2006/10/24 居住地: 投稿: 22 |
ipProtocolNumberについて 新しいプロトコルを実装するため、
Programer's Guideの4.4.5に沿って、Myprotocolという名のプロトコルを QualNetに組み込む作業をしています。 新しいプロトコルとしてはAODVを改良したものを考えているので、 とりあえずMyprotocolがAODVとして動作するように設定を行いました。 一通り設定を終え、シナリオを実行という段階にきたのですが、 ip.cppのDeliverPacket関数内最後の ERROR_ReportError("Invalid switch value"); が実行されシミュレーションがストップしてしまいます。 このエラーはip.cppのDeliberPacket関数内のipProtocolNumberが switch分による各プロトコル番号にマッチしなかった場合に出力されるエラーかと思います。 Programer's Guideの4.4.5.8.1-FIGURE 4-48,4-49で示されている通り、 MyprotocolのIP protocol numberを999に設定し、DeliberPacket関数の swich文でIPPROTO_MYPROTOCOLとして選択されるように変更を加えました。 なので、本来であればMyprotocolでシミュレーションを実行した場合 ipProtocolNumberは999として指定されているはずだと思うのですが、 実際は231というIPプロトコル番号がipProtocolNumberとして指定されています。 ここで質問なのですが、この231というIPプロトコル番号はどこで 指定されるものなのでしょうか? 非常にわかりづらい説明かと思いますが、返答お待ちしています。 よろしくお願いします。 |
ipoten | 投稿日時: 2006/11/15 17:29 |
一人前 登録日: 2005/7/12 居住地: 投稿: 102 |
Re: ipProtocolNumberについて コードを見ると、ip.cpp の関数 DeliberPacket() の ipProtocolNumber の型も、IpHeaderType構造体のメンバ ip_p の型も unsigned char ですね。
つまり0〜255までしか表現できないので、999を代入するとオーバーフローして、256で割ったあまりである231になります。 Programmer's Guide の記述例が誤っていますね 0〜255の間で設定しましょう |
nagao | 投稿日時: 2006/11/15 18:01 |
半人前 登録日: 2006/10/24 居住地: 投稿: 22 |
Re: ipProtocolNumberについて >ipotenさん
お返事ありがとうございます。 早速0〜255の間で設定したところ問題なく動作しました! ありがとうございました |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |