prevent the rpl root from dropping packets bound for outside the dodag while in NS mode
@@ -644,11 +644,17 @@ rpl_update_header(void)
/* At the root, remove headers if any, and insert SRH or HBH
* (SRH is inserted only if the destination is in the DODAG) */
rpl_remove_header();
+ if(rpl_get_dag(&UIP_IP_BUF->destipaddr) != NULL) {
+ /* dest is in a DODAG; the packet is going down. */
if(RPL_IS_NON_STORING(default_instance)) {
return insert_srh_header();
} else {
return insert_hbh_header(default_instance);
}
+ } else {
+ /* dest is outside of DODAGs; no ext header is needed. */
+ return 1;
+ }
} else {
if(uip_ds6_is_my_addr(&UIP_IP_BUF->srcipaddr)
&& UIP_IP_BUF->ttl == uip_ds6_if.cur_hop_limit) {
