[PATCH 4/6] net: lwip: move dns init to common function

Jerome Forissier jerome.forissier at linaro.org
Fri May 30 10:07:13 CEST 2025



On 5/29/25 23:49, Tim Harvey wrote:
> move the dns init including setting the dns servers from env vars to a
> common function as other commands that support hostname lookups will
> need this.
> 
> Signed-off-by: Tim Harvey <tharvey at gateworks.com>
> ---
>  include/net-lwip.h  |  1 +
>  net/lwip/dns.c      | 20 +-------------------
>  net/lwip/net-lwip.c | 30 ++++++++++++++++++++++++++++++
>  3 files changed, 32 insertions(+), 19 deletions(-)
> 
> diff --git a/include/net-lwip.h b/include/net-lwip.h
> index b762956e8fda..6b5eb1990fbf 100644
> --- a/include/net-lwip.h
> +++ b/include/net-lwip.h
> @@ -17,6 +17,7 @@ static inline int eth_is_on_demand_init(void)
>  
>  int eth_init_state_only(void); /* Set active state */
>  
> +int net_lwip_dns_init(void);
>  int net_lwip_eth_start(void);
>  struct netif *net_lwip_new_netif(struct udevice *udev);
>  struct netif *net_lwip_new_netif_noip(struct udevice *udev);
> diff --git a/net/lwip/dns.c b/net/lwip/dns.c
> index 19172ac959ac..ff1903f7191a 100644
> --- a/net/lwip/dns.c
> +++ b/net/lwip/dns.c
> @@ -44,12 +44,9 @@ static void dns_cb(const char *name, const ip_addr_t *ipaddr, void *arg)
>  static int dns_loop(struct udevice *udev, const char *name, const char *var)
>  {
>  	struct dns_cb_arg dns_cb_arg = { };
> -	bool has_server = false;
>  	struct netif *netif;
>  	ip_addr_t ipaddr;
> -	ip_addr_t ns;
>  	ulong start;
> -	char *nsenv;
>  	int ret;
>  
>  	dns_cb_arg.var = var;
> @@ -58,22 +55,7 @@ static int dns_loop(struct udevice *udev, const char *name, const char *var)
>  	if (!netif)
>  		return CMD_RET_FAILURE;
>  
> -	dns_init();
> -
> -	nsenv = env_get("dnsip");
> -	if (nsenv && ipaddr_aton(nsenv, &ns)) {
> -		dns_setserver(0, &ns);
> -		has_server = true;
> -	}
> -
> -	nsenv = env_get("dnsip2");
> -	if (nsenv && ipaddr_aton(nsenv, &ns)) {
> -		dns_setserver(1, &ns);
> -		has_server = true;
> -	}
> -
> -	if (!has_server) {
> -		log_err("No valid name server (dnsip/dnsip2)\n");
> +	if (net_lwip_dns_init()) {
>  		net_lwip_remove_netif(netif);
>  		return CMD_RET_FAILURE;
>  	}
> diff --git a/net/lwip/net-lwip.c b/net/lwip/net-lwip.c
> index e8d4cc542ed8..23dccfef8993 100644
> --- a/net/lwip/net-lwip.c
> +++ b/net/lwip/net-lwip.c
> @@ -7,6 +7,7 @@
>  #include <dm/uclass.h>
>  #include <hexdump.h>
>  #include <lwip/ip4_addr.h>
> +#include <lwip/dns.h>
>  #include <lwip/err.h>
>  #include <lwip/netif.h>
>  #include <lwip/pbuf.h>
> @@ -139,6 +140,35 @@ static int get_udev_ipv4_info(struct udevice *dev, ip4_addr_t *ip,
>  	return 0;
>  }
>  
> +/*
> + * Initialize DNS via env
> + */
> +int net_lwip_dns_init(void)
> +{
> +	bool has_server = false;
> +	ip_addr_t ns;
> +	char *nsenv;
> +
> +	nsenv = env_get("dnsip");
> +	if (nsenv && ipaddr_aton(nsenv, &ns)) {
> +		dns_setserver(0, &ns);
> +		has_server = true;
> +	}
> +
> +	nsenv = env_get("dnsip2");
> +	if (nsenv && ipaddr_aton(nsenv, &ns)) {
> +		dns_setserver(1, &ns);
> +		has_server = true;
> +	}
> +
> +	if (!has_server) {
> +		log_err("No valid name server (dnsip/dnsip2)\n");
> +		return -EINVAL;
> +	}
> +
> +	return 0;
> +}
> +
>  /*
>   * Initialize the network stack if needed and start the current device if valid
>   */

Reviewed-by: Jerome Forissier <jerome.forissier at linaro.org>

Thanks,
-- 
Jerome


More information about the U-Boot mailing list