2017-11-24 9 views
0

NS-3のAODVモジュールを編集中です。NS-3パッシブACKをスニッフィングする

ノードがデータパケットを次のノードに転送するとき、自分のAODVモジュールが次のノードの転送プロセスを聴取して正しい方向に転送することを確認します。

pcapファイルは次のノードの送信を正しくスニッフィングしますが、私はAODVモジュールから手を差し伸べることができません。

私はパケットがそれに巻き込まれていないと考えているので、私はそれを変更する方法を知りたいと思います。

誰でも関連コードを変更する場所を私に伝えることができますか?

おかげ

答えて

0

傍受はのWi-Fiデバイスのトレースソースのいずれかをフックすることによって達成することができます。 WifiPhyオブジェクトのMonitorSnifferRxはおそらくあなたが望むものです。 2つのステップがあります:1)何とかWi-Fi Phyへのポインタを取得し、2)そのトレースソースにコールバック関数をアタッチします。

ステップ1)は、すでにほとんどの既存の方法ではAODVで行われます。

RoutingProtocol::NotifyInterfaceUp() 
... 
// Allow neighbor manager use this interface for layer 2 feedback if possible 
Ptr<WifiNetDevice> wifi = dev->GetObject<WifiNetDevice>(); 

この時点から、あなたはPhyのオブジェクトポインタを取得することができます:ここから

Ptr<WifiPhy> phy = wifi->GetPhy(); 

を、あなたがお勧めしますTraceConnectWithoutContext()を使用してTraceSourceをフックし、MonitorSniffRxトレースが期待するものに一致する関数シグネチャを持つコールバックを使用します。

phy->TraceConnectWithoutContext ("MonitorSniffRx", MakeCallback (&InsertYourCallbackFunctionHere)); 

は、Macレベルのトレースソース「TxErrHeaderは」同様に、同じ方法でフックされ方法を参照してください。

+0

ありがとう、私はそれを解決しました。 –

+0

公然と投票することができないことを許してくれます.. :( –

関連する問題