diff --git a/sys/net/gnrc/network_layer/ndp/internal/gnrc_ndp_internal.c b/sys/net/gnrc/network_layer/ndp/internal/gnrc_ndp_internal.c index fe6a892076..4a3158a2cd 100644 --- a/sys/net/gnrc/network_layer/ndp/internal/gnrc_ndp_internal.c +++ b/sys/net/gnrc/network_layer/ndp/internal/gnrc_ndp_internal.c @@ -346,8 +346,9 @@ void gnrc_ndp_internal_send_rtr_sol(kernel_pid_t iface, ipv6_addr_t *dst) static bool _pio_from_iface_addr(gnrc_pktsnip_t **res, gnrc_ipv6_netif_addr_t *addr, gnrc_pktsnip_t *next) { - if (((addr->prefix_len - 1U) < 127U) && /* 0 < prefix_len < 128 */ - !ipv6_addr_is_unspecified(&addr->addr) && + assert(((uint8_t) addr->prefix_len) <= 128U); + + if (!ipv6_addr_is_unspecified(&addr->addr) && !ipv6_addr_is_link_local(&addr->addr) && !gnrc_ipv6_netif_addr_is_non_unicast(&addr->addr)) { DEBUG(" - PIO for %s/%" PRIu8 "\n", ipv6_addr_to_str(addr_str, &addr->addr,