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 

Reply via email to