Я редактирую модуль AODV в NS-3.
Когда узел пересылает пакет данных на следующий узел, я хочу, чтобы мой модуль AODV прослушивал прослушивание процесса переадресации следующего узла, чтобы убедиться, что он пересылает его правильно.
Файл pcap корректно отслеживает передачу следующего узла, но я не могу достать его из модуля AODV.
Я предполагаю, что пакет отбрасывается, поскольку он не должен быть включен в него, поэтому я хочу знать, как это изменить.
Может кто-нибудь дать мне подсказку, где искать, чтобы изменить какие-либо соответствующие коды?
Спасибо
Подслушивание может быть достигнуто путем подключения одного из источников трассировки устройства Wi-Fi. MonitorSnifferRx в объекте WifiPhy, вероятно, то, что вы хотите. Есть два шага: 1) получить указатель на Phy Wi-Fi и 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 () для перехвата источника трассировки с обратным вызовом, который имеет сигнатуру функции, совпадающую с ожидаемой трассировкой MonitorSniffRx.
phy->TraceConnectWithoutContext ("MonitorSniffRx", MakeCallback (&InsertYourCallbackFunctionHere));
Посмотрите, как источник трассировки уровня Mac «TxErrHeader» аналогичным образом подключается в том же методе.
Других решений пока нет …