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

パスワード:


パスワード紛失

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

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

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

日曜日からの合計
メイン
   Scenario Setup & Configuration
     クロスレイヤ処理に関する過去ログについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
beginner
投稿日時: 2012/7/8 18:33
半人前
登録日: 2011/10/10
居住地:
投稿: 30
クロスレイヤ処理に関する過去ログについて
過去ログで、MAC層からTCPの情報を取得する方法に関するmastさんの記事を拝見しました。

http://simweb.kke.co.jp/qualnet/forum/modules/newbb/viewtopic.php?viewmode=thread&topic_id=360&forum=29&post_id=1351#1351

この記事の ■3 のコードで、
msg->transport_hdr = MESSAGE_ReturnPacket(msg); // Newly added
という行がありますが、ここで MESSAGE_ReturnPacket(msg) が何を返しているのかが分かりませんでした。
(msg->transport_hdr は、この記事で新たに定義されている void 型のポインタです)

上記の行が実行されたことで、TCPヘッダの情報(ポート番号やシーケンス番号、ウィンドウサイズ etc..)が全て取得可能になっているということでしょうか?

どなたかご教示いただければ幸いです。
よろしくお願い致します。


※MESSAGE_ReturnPacket(msg) について実際に出力させて確かめようとも思ったのですが、返り値が代入されているmsg->transport_hdr が void 型で定義されていたため、どのように確かめればよいか分かりませんでした。
hiro
投稿日時: 2012/7/22 14:26
長老
登録日: 2005/7/16
居住地:
投稿: 452
Re: クロスレイヤ処理に関する過去ログについて
放置されていたようですが、解決しましたか?

まず、message(というかヘッダ)の構造を把握する必要があります。
QualNet Hacksの第2章 イベント処理が参考になりますよ。
http://simweb.kke.co.jp/download/QualNetHacks-02-Event.pdf

で、概要箇所の上の方で、
MESSAGE_RemoveHeader (node, msg, sizeof(struct ipovly), TRACE_TCP);
して、
memcpy (MESSAGE_ReturnPacket(msg), &ti->ti_t, sizeof (struct tcphdr));
してますよね。
そして、問題の個所が以下の部分。
msg->transport_hdr = MESSAGE_ReturnPacket(msg);
これらを見れば自明ですが、
ti->ti_tから、sizeof (struct tcphdr)だけmemcpyされているわけです。
部分的に書き直せば、

{
	struct tcphdr *transport_hdr;
	transport_hdr = (struct tcphdr *)MESSAGE_ReturnPacket(msg);
	msg->transport_hdr = transport_hdr;
}


となります。これならわかりますよね。

> ※MESSAGE_ReturnPacket(msg) について実際に出力させて
> 確かめようとも思ったのですが、返り値が代入されている
> msg->transport_hdr が void 型で定義されていたため、
> どのように確かめればよいか分かりませんでした。

ほとんどの場合void *の定義は『いろんなもの』を示す場所になるので、
そこに何が入っているのかは、入れた場所で特定するしかありません。
例えばmallocもvoid *ですよね。
慣れるまでは難しい概念かもしれませんけど、じっくりとソースコードを
読めば答えは必ず見つかります。頑張って下さい。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT