我试图做以下事情:
a)以混杂模式设置Contiki。
b)然后检索所有UDP和RPL数据包,不仅发送到当前节点,还发送到通信范围内的其他两个节点之间。
我有以下代码:
NETSTACK_RADIO.set_value(RADIO_PARAM_RX_MODE, 0);
simple_udp_register(&unicast_connection, 3001,
NULL, 3000, receiver);
其中receiver是一个合适的回调函数。我能够收集发送到当前节点的UDP数据包,但仍然无法接收通信范围内其他节点之间发送的数据包。
答案 0 :(得分:2)
设置EXAMPLE
仅控制无线电驱动程序筛选出的数据包。 OS网络堆栈中有多个层,其中无线电驱动程序只是第一个层。接下来的是RDC和MAC,它们仍会过滤掉发往其他节点的数据包,并且没有API可以禁用它。
解决方案是修改MAC以禁止丢弃未寻址到本地模式的数据包或编写自己的简单MAC。后者是Sensniff(Contiki数据包嗅探器)does - see its README and source code。顺便说一句,如果您只想记录所有收到的数据包,只需使用Sensniff!