diff --git a/source/RPL/rpl_control.c b/source/RPL/rpl_control.c index f8aacd7ae59..977d4d5ae6f 100644 --- a/source/RPL/rpl_control.c +++ b/source/RPL/rpl_control.c @@ -1125,7 +1125,7 @@ void rpl_control_transmit_dio(rpl_domain_t *domain, protocol_interface_info_entr } else { prefix->options &= ~ PIO_R; - if (rpl_dodag_mop(dodag) == RPL_MODE_NON_STORING && prefix->lifetime != 0) { + if (rpl_dodag_mop(dodag) == RPL_MODE_NON_STORING && (prefix->lifetime != 0 || !(prefix->options & PIO_A))) { continue; } } @@ -1163,7 +1163,7 @@ void rpl_control_transmit_dio(rpl_domain_t *domain, protocol_interface_info_entr ns_list_foreach_safe(prefix_entry_t, prefix, prefixes) { /* See equivalent checks in length calculation above */ if ((prefix->options & (PIO_L | RPL_PIO_PUBLISHED)) == PIO_L || - (!(prefix->options & PIO_R) && rpl_dodag_mop(dodag) == RPL_MODE_NON_STORING && prefix->lifetime != 0)) { + (!(prefix->options & PIO_R) && rpl_dodag_mop(dodag) == RPL_MODE_NON_STORING && (prefix->lifetime != 0 || !(prefix->options & PIO_A)))) { continue; }