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 <thar...@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 */ -- 2.25.1