[PATCH 4/6] net: lwip: Use ipaddr helpers

Jerome Forissier jerome.forissier at arm.com
Mon Jan 19 10:15:49 CET 2026


On 17/01/2026 01:24, Jonas Karlman wrote:
> The ip_addr_t of lwIP has support for both IPv6 and IPv4 addresses.
> Some lwIP commans is directly accessing the internal addr field of the
> ip_addr_t instead of using ipaddr helper functions.
> 
> Change to use ipaddr helper functions where appropriate to remove direct
> access of the internal addr field. Also change a few instances from ip4
> to the version less ipaddr helpers.
> 
> There is no intended functional change, besides the change from using
> ip4 addr helper to using version less ipaddr helper.
> 
> Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
> ---
>  cmd/lwip/ping.c | 2 +-
>  net/lwip/dhcp.c | 4 ++--
>  net/lwip/dns.c  | 9 +++------
>  net/lwip/nfs.c  | 6 +++---
>  net/lwip/tftp.c | 2 +-
>  5 files changed, 10 insertions(+), 13 deletions(-)
> 
> diff --git a/cmd/lwip/ping.c b/cmd/lwip/ping.c
> index 6d090fc530d6..fc4cf7bde5f9 100644
> --- a/cmd/lwip/ping.c
> +++ b/cmd/lwip/ping.c
> @@ -35,7 +35,7 @@ static u8_t ping_recv(void *arg, struct raw_pcb *pcb, struct pbuf *p,
>  	struct ping_ctx *ctx = arg;
>  	struct icmp_echo_hdr *iecho = ctx->iecho;
>  
> -	if (addr->addr != ctx->target.addr)
> +	if (!ip_addr_eq(addr, &ctx->target))
>  		return 0;
>  
>  	if ((p->tot_len >= (IP_HLEN + sizeof(struct icmp_echo_hdr))) &&
> diff --git a/net/lwip/dhcp.c b/net/lwip/dhcp.c
> index 731b57de3ba4..4cd4184c42bb 100644
> --- a/net/lwip/dhcp.c
> +++ b/net/lwip/dhcp.c
> @@ -93,13 +93,13 @@ static int dhcp_loop(struct udevice *udev)
>  		sprintf(maskstr, "netmask%d", idx);
>  		sprintf(gwstr, "gatewayip%d", idx);
>  	} else {
> -		net_ip.s_addr = dhcp->offered_ip_addr.addr;
> +		net_ip.s_addr = ip_addr_get_ip4_u32(&dhcp->offered_ip_addr);
>  	}
>  
>  	env_set(ipstr, ip4addr_ntoa(&dhcp->offered_ip_addr));
>  	env_set(maskstr, ip4addr_ntoa(&dhcp->offered_sn_mask));
>  	env_set("serverip", ip4addr_ntoa(&dhcp->server_ip_addr));
> -	if (dhcp->offered_gw_addr.addr != 0)
> +	if (!ip4_addr_isany(&dhcp->offered_gw_addr))
>  		env_set(gwstr, ip4addr_ntoa(&dhcp->offered_gw_addr));
>  
>  #ifdef CONFIG_PROT_DNS_LWIP
> diff --git a/net/lwip/dns.c b/net/lwip/dns.c
> index 2222e2b0b045..8b7b3b7f970f 100644
> --- a/net/lwip/dns.c
> +++ b/net/lwip/dns.c
> @@ -28,13 +28,10 @@ static void dns_cb(const char *name, const ip_addr_t *ipaddr, void *arg)
>  
>  	dns_cb_arg->done = true;
>  
> -	if (!ipaddr) {
> +	if (!ipaddr)
>  		printf("DNS: host not found\n");
> -		dns_cb_arg->host_ipaddr.addr = 0;
> -		return;
> -	}
>  
> -	dns_cb_arg->host_ipaddr.addr = ipaddr->addr;
> +	ip_addr_set(&dns_cb_arg->host_ipaddr, ipaddr);
>  }
>  
>  static int dns_loop(struct udevice *udev, const char *name, const char *var)
> @@ -78,7 +75,7 @@ static int dns_loop(struct udevice *udev, const char *name, const char *var)
>  
>  	net_lwip_remove_netif(netif);
>  
> -	if (dns_cb_arg.done && dns_cb_arg.host_ipaddr.addr != 0) {
> +	if (dns_cb_arg.done && !ip_addr_isany(&dns_cb_arg.host_ipaddr)) {
>  		ipstr = ipaddr_ntoa(&dns_cb_arg.host_ipaddr);
>  		if (var)
>  			env_set(var, ipstr);
> diff --git a/net/lwip/nfs.c b/net/lwip/nfs.c
> index 5fc2d3bd8736..1812bbda68e5 100644
> --- a/net/lwip/nfs.c
> +++ b/net/lwip/nfs.c
> @@ -59,7 +59,7 @@ static void nfs_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p,
>  	int plen;
>  	struct rpc_t rpc_pkt;
>  
> -	if (addr->addr != ctx->nfs_server.addr)
> +	if (!ip_addr_eq(addr, &ctx->nfs_server))
>  		goto exitfree;
>  
>  	if (p->tot_len > sizeof(struct rpc_t))
> @@ -120,7 +120,7 @@ static int nfs_loop(struct udevice *udev, ulong addr, char *fname,
>  	printf("Using %s device\n", udev->name);
>  
>  	printf("File transfer via NFS from server %s; our IP address is %s\n",
> -	       ip4addr_ntoa(&srvip), env_get("ipaddr"));
> +	       ipaddr_ntoa(&srvip), env_get("ipaddr"));
>  
>  	printf("\nFilename '%s/%s'.", nfs_path, nfs_filename);
>  
> @@ -144,7 +144,7 @@ static int nfs_loop(struct udevice *udev, ulong addr, char *fname,
>  
>  	net_set_state(NETLOOP_CONTINUE);
>  
> -	sess_ctx.nfs_server.addr = srvip.addr;
> +	ip_addr_set(&sess_ctx.nfs_server, &srvip);
>  
>  	nfs_send();
>  
> diff --git a/net/lwip/tftp.c b/net/lwip/tftp.c
> index 6c7ffba661e5..86516e662732 100644
> --- a/net/lwip/tftp.c
> +++ b/net/lwip/tftp.c
> @@ -180,7 +180,7 @@ static int tftp_loop(struct udevice *udev, ulong addr, char *fname,
>  
>  	printf("Using %s device\n", udev->name);
>  	printf("TFTP from server %s; our IP address is %s\n",
> -	       ip4addr_ntoa(&srvip), env_get("ipaddr"));
> +	       ipaddr_ntoa(&srvip), env_get("ipaddr"));
>  	printf("Filename '%s'.\n", fname);
>  	printf("Load address: 0x%lx\n", ctx.daddr);
>  	printf("Loading: ");

Reviewed-by: Jerome Forissier <jerome.forissier at arm.com>

Thanks,
-- 
Jerome


More information about the U-Boot mailing list