forked from contiki-ng/contiki-ng
-
Notifications
You must be signed in to change notification settings - Fork 1
文档:NullNet
fengjikui edited this page Jun 8, 2020
·
1 revision
Contiki-NG提供了NullNet,它的网络层什么都不做。 NullNet对于测试较低层协议或一般而言无IPv6的网络最为有用。 NullNet通过MAKE_NET
变量启用,请参阅doc:configuration。
使用NullNet,网络层数据包由应用程序直接创建,并按原样发送到MAC层。 在接收方,MAC层会将数据包传递给NullNet,NullNet随后将通过回调调用应用程序。
要使用NullNet发送数据包,首先将nullnet_buf
(在nullnet.h中声明)指向缓冲区,然后将nullnet_len
设置为有效数据长度。 然后,以目标链接层地址为参数调用NETSTACK_NETWORK.output
。 使用NULL
或linkaddr_null
发送广播。 例如:
#include "net/nullnet/nullnet.h"
...
uint8_t payload[64] = { 0 };
nullnet_buf = payload; /* Point NullNet buffer to 'payload' */
nullnet_len = 2; /* Tell NullNet that the payload length is two bytes */
NETSTACK_NETWORK.output(NULL); /* Send as broadcast */
NullNet将按原样发送您的有效负载。 未添加新的报头,甚至连端口的概念没有。 --请注意--:这也意味着NullNet不会为您隔离多个连接。
若要接收数据,请将NullNet应用程序的回调设置为您自己的函数。 这是通过nullnet_set_input_callback
完成的。 该函数的类型必须为nullnet_input_callback
。 例如:
#include "net/nullnet/nullnet.h"
...
void input_callback(const void *data, uint16_t len,
const linkaddr_t *src, const linkaddr_t *dest)
{
...
}
...
/* At process initialization */
nullnet_set_input_callback(input_callback);
每次接收到单播或广播的数据包时,NullNet都会调用函数input_callback
。 函数参数提供指向有效负载,有效负载长度以及源和目标的链路层地址的指针。 对于广播,将dest
设置为linkaddr_null
即可。