[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