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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/04/28:1/1
2024/04/27:21/24

2024/02/28より284/1375
人気Browser&OS
No.1:巡回ロボット1

No.1:どっかの巡回ロボット1

日曜日からの合計
メイン
   Network Layer Settings: IP, QoS, Queuing & Scheduling
     IPアドレスの扱いに関して
投稿するにはまず登録を

題名 投稿者 日時
   IPアドレスの扱いに関して TakaoIto 2011/10/12 19:20
   » Re: IPアドレスの扱いに関して mast 2011/10/12 20:59
       Re: IPアドレスの扱いに関して TakaoIto 2011/10/13 15:38
         Re: IPアドレスの扱いに関して mast 2011/10/13 20:49
           Re: IPアドレスの扱いに関して TakaoIto 2011/10/17 18:12
             Re: IPアドレスの扱いに関して 7208op 2011/10/21 18:12
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
mast
投稿日時: 2011/10/12 20:59
一人前
登録日: 2005/4/7
居住地:
投稿: 93
Re: IPアドレスの扱いに関して
こんにちは。

■IP-ADDRESSパラメータ行の読み込み箇所について

引用:

そこで,この関数が誰から呼ばれているのか遡っているのですが,

NetworkIpAddNewInterface():network_ip.cpp

MacAddNewInterface():mac.cpp

AddNodeToSubnet():mac.cpp

ProcessSubnetLine():mac.cpp

MAC_Initialize():mac.cpp

PARTITION_InitializeNodes():partition.cpp

今ここです

一向に終着地点が見つかりません.

どこで"IP-ADDRESS"というkeyからファイル読み込みを行っているのでしょうか?
それとも,ずっと気になっていたのですが,
ノードに関するファイル入力情報を管理しているらしいNodeInput(fileio.h)という人が何かを先にやっているのでしょうか?


以下に、ProcessSubnetLine()関数のコードを一部抜粋します。
5634行目のAddNodeToSubnet()関数の第4引数が今設定されようとしているIPアドレスの値が入った変数。
その変数に値を設定しているのは5567行目。
5567行目の右辺のinterfaceAddress変数に値を代入しているのは、
5542行目のMAPPING_GetInterfaceInfoForInterface()関数。
MAPPING_GetInterfaceInfoForInterface()関数は非公開ソース。


5489     for (count = 0; count < addCount; count++)
5490     {
5491         NodeAddress interfaceAddress = (unsigned int)ANY_ADDRESS;
5492         NodeAddress subnetAddress = 0;
5493         NodeAddress subnetMask = 0;
5494         int hostBits = 0;
             ... 略 ...
5538         if (netProtoType == IPV4_ONLY || netProtoType == DUAL_IP
5539             || netProtoType == GSM_LAYER3 || netProtoType == CELLULAR)
5540         {
5541 
5542             MAPPING_GetInterfaceInfoForInterface(
5543                 firstNode,
5544                 subnetList[count].nodeId,
5545                 intfIndex,
5546                 &interfaceAddress,
5547                 &subnetAddress,
5548                 &subnetMask,
5549                 &hostBits);
5550 
5551             if (interfaceAddress == ANY_ADDRESS)
5552             {
5553                 char buff[MAX_STRING_LENGTH];
5554                 sprintf(buff,
5555                   "IPv4 address is not configured for"
5556                   "interface %d of Node %d\n",
5557                   intfIndex,
5558                   subnetList[count].nodeId);
5559                 ERROR_ReportError(buff);
5560             }
                 ... 略 ...
5567             subnetList[count].address.interfaceAddr.ipv4 = interfaceAddress;
5568             subnetList[count].address.networkType = NETWORK_IPV4;
5569         }
             ... 略 ...
5619         if (subnetList[count].node != NULL)
5620         {
                ... 略 ...
5631            if (netProtoType == IPV4_ONLY || netProtoType == DUAL_IP
5632             || netProtoType == GSM_LAYER3 || netProtoType == CELLULAR)
5633            {
5634                 AddNodeToSubnet(subnetList[count].node,
5635                                 nodeInput,
5636                                 subnetAddress,
5637                                 subnetList[count].address.interfaceAddr.ipv4,
5638                                 hostBits,
5639                                 macProtocolName,
5640                                 subnetList,
5641                                 addCount,
5642                                 count,
5643                                 isNewInterface,
5644                                 (short)subnetIndex);
5645            }

というわけで、残念ながらIP-ADDRESS行の読み込みを行っているコードに
辿り着くことはできないようです。
(読み込み処理は、恐らくご推察のとおりNodeInputさんがコッソリとやっている
と思います。そしてMAPPING_GetInterfaceInfoForInterface()関数は、単に
NodeInputから情報を取得する関数かと思われます。いずれもコードが見えない
ので推測になりますが。)


■D_NodeAddress型について

引用:

何故かと思い調べてみたのですが,右辺はNodeAddress型で左辺はD_NodeAddress型である,というくらいの違いしか分かりませんでした.
NodeAddress型はmain.hで定義されているのですが,D_NodeAddress型はどこで定義されているのでしょうか?
そもそもこのD_とは何者なのでしょうか?

D_NodeAddress型はinclude/dynamic_vars.hで定義されています。
D_*変数というのはDynamicオブジェクト変数のことで、シミュレーション実行中に外部
プログラムから動的に値を取得・変更可能な変数のことです。プログラマーズガイドの
7章のDynamic APIの冒頭に少し説明があります。QualNet5.1のGUIからも、添付画像の
ようにして実行時のこれらの変数の値を確認することができます。

DynamicParameters.PNG
フラット表示 前のトピック | 次のトピック
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT