Hello,
Joan Lledó, le sam. 27 juin 2026 12:07:59 +0200, a ecrit:
> @@ -305,17 +295,21 @@ inquire_device (struct netif *netif, ip4_addr_t * addr,
> ip4_addr_t * netmask,
> gateway->addr = netif_ip4_gw (netif)->addr;
>
> if (addr6)
> - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++)
> - {
> - *(addr6 + i * 4 + 0) = netif_ip6_addr (netif, i)->addr[0];
> - *(addr6 + i * 4 + 1) = netif_ip6_addr (netif, i)->addr[1];
> - *(addr6 + i * 4 + 2) = netif_ip6_addr (netif, i)->addr[2];
> - *(addr6 + i * 4 + 3) = netif_ip6_addr (netif, i)->addr[3];
> - }
> + {
> + memset (addr6, 0, sizeof (ip6_addr_t) * LWIP_IPV6_NUM_ADDRESSES);
Rather than memsetting it all,
> + for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++)
> + {
> + if (!ip6_addr_isvalid (netif_ip6_addr_state (netif, i)))
You can memset the invalide part here.
Samuel
> + continue;
>
> - if (addr6_prefix_len)
> - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++)
> - *(addr6_prefix_len + i) = 64;
> + addr6[i] = *netif_ip6_addr (netif, i);
> +
> + if (addr6_prefix_len)
> + *(addr6_prefix_len + i) =
> + netif_ip6_addr_isstatic (netif, i) ? 64 : 128;
> - and set prefix_len based on whether the
> address is static (64) or autoconf (128) instead of always 64.
?
Even autoconf addresses usually do have a non-128 prefix len, to be able
to reach neighbours.
Samuel
> + }
> + }
> }
> }
>
> --
> 2.50.1
>
G