Re: [PATCH 2/4] lwip: clean up IPv6 address handling in init_ifs and inquire_device

Samuel Thibault <[email protected]> Sun, 28 Jun 2026 00:15:01 +0200
Newsgroups gmane.os.hurd.bugs
Organization I am not organized
Message-ID <akBLZdbjEpWdpXN0@end>
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