Я не уверен, должен ли это быть комментарий или ответ, но так как мне не хватает репутации, чтобы комментировать, здесь все сказано:
Ни er-rest-client, ни er-rest-server setячеистой сети для RPL, поэтому примеры включают в себя граничный маршрутизатор, который делает это.Если вы зайдете в core / net / ip / tcpip.c и включите DEBUG, я предполагаю, что вы видите следующий вывод:
tcpip_ipv6_output: no route found, using default route
tcpip_ipv6_output: Destination off-link but no route
Для аналогичного проекта, над которым я работаю, добавьте следующие строкичтобы серверный процесс решил эту проблему:
root_if = uip_ds6_addr_lookup(&ipaddr);
if(root_if != NULL){
rpl_dag_t* dag;
dag = rpl_set_root(RPL_DEFAULT_INSTANCE, (uip_ip6addr_t*)&ipaddr);
uip_ip6addr(&ipaddr, UIP_DS6_DEFAULT_PREFIX, 0, 0, 0, 0, 0, 0, 0);
rpl_set_prefix(dag, &ipaddr, 64);
printf("created new RPL dag\n");
}
else{
printf("RPL dag creation failed\n");
}
Вам также нужно будет включить «net / rpl / rpl.h» и объявить переменную «struct uip_ds6_addr * root_if». Этот код извлекается из ipv6 /Примеры RPL, предоставленные contiki.