Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/19:17/20
2024/05/18:20/24

2024/03/20より397/1411
人気モジュール
No.1: フォーラム 16
No.2: QualNet概要 1
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット17

No.1:どっかの巡回ロボット14
No.2:Google巡回ロボット2
No.3:Baidu巡回ロボット1

日曜日からの合計
メイン
   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の間で設定したところ問題なく動作しました!

ありがとうございました
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT