首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RPL儿童-list Contiki

RPL儿童-list Contiki
EN

Stack Overflow用户
提问于 2017-05-02 19:11:01
回答 2查看 1.1K关注 0票数 0

我正在尝试测试文件rpl-icmp6.c中的DIO消息是否来自接收DIO的节点的子节点。有谁可以帮我?

我见过康蒂基没有保存孩子的名单,只有父母。所以,我不知道怎么做呢?

伪码:

代码语言:javascript
复制
if(senderOfDIO is child) {

   check the rank of the packet

}

有谁可以帮我?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-02 20:13:25

如果在存储模式下运行RPL,则可以通过查看指向RPL的路由并检查路由的下一个节点是否与端点addess相同,来判断哪些节点直接连接。

这是遍历直接子级的代码的一个示例:

代码语言:javascript
复制
#include "ipv6/uip-ds6-route.h"

static void
iterate_children(void)
{
  uip_ds6_route_t *route;

  /* Loop over routing entries */
  route = uip_ds6_route_head();
  while(route != NULL) {
    const uip_ipaddr_t *address = &route->ipaddr;
    const uip_ipaddr_t *nexthop = uip_ds6_route_nexthop(route);
    if(uip_ipaddr_cmp(&address, &nexthop)) {
       /* direct child: do somehting */
    }

    route = uip_ds6_route_next(route);
  }
}

要具体地解决您的问题,请使用以下内容:

代码语言:javascript
复制
static uint8_t
is_direct_child(uip_ipaddr_t *address)
{
  uip_ds6_route_t *route;

  route = uip_ds6_route_lookup(address);
  if(route != NULL) {
    const uip_ipaddr_t *nexthop = uip_ds6_route_nexthop(route);
    if(uip_ipaddr_cmp(&address, &nexthop)) {
       /* nexthop and the address are the same */
       return 1;
    }
  }
  return 0;
}
票数 0
EN

Stack Overflow用户

发布于 2017-05-18 07:37:52

无论是在RPL存储模式还是非存储模式下,从父节点到子节点的DIO将在两个传感器中发送。1在形成DODAG 2之前,在DODAG形成后周期性地发送DIO。

每次DIO都会被多个抛出,除了响应子节点外,还会发送DIS。

为了测试孩子是否正在接收DIO消息,可以在COOJA中看到,这是一个虚拟仿真。

在非存储模式下,除路由器以外的所有节点都不会存储子地址。在此,包转发将由承载所有地址的源路由报头(SRH)完成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43745521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档