我正在使用 NS-3 v3.28.1 来模拟 WiFi Mesh 网络。网格拓扑(实际上只有一条线,每个节点安装 IEEE 802.11s 堆栈,HWMP 协议)包含 3 个 WiFi Mesh 节点Node0、Node1和Node2。然后我在Node0中绑定一个 UDP 套接字(充当接收者),在Node2中绑定另一个(充当发送者) 。Node2每 10ms通过Node1向Node0发送一个 UDP 数据包。拓扑如下:
Node0(接收者)<--- Node1 <---- Node2(发送者)
10.1.1.1/24 10.1.1.2/24 10.1.1.3/24
然后我在Node1上设置 MonitorSnifferRx 函数来监听从Node2发送到Node0的 udp 数据包,使用Config::ConnectWithoutContext
:
Config::ConnectWithoutContext ("/NodeList/1/DeviceList/*/Phy/MonitorSnifferRx", MakeCallback (&DecodeRxPktCB));
在Node1回调函数 DecodeRxPktCB 中,我可以解码从Node2发送到Node0的 udp 数据包。
我的问题是:当在Node1的 MonitorSnifferRx 回调函数中捕获到特定的 UDP 数据包(内容与某些规则匹配)时,我怎样才能将其丢弃,因此它不会传输到Node0?我看到 MonitorSnifferRx 回调函数中的第一个参数是“Ptr< const Packet > packet”,只有 const 值才能读取。