struct dns_cb_arg {
ip_addr_t host_ipaddr;
- const char *var;
bool done;
};
static void dns_cb(const char *name, const ip_addr_t *ipaddr, void *arg)
{
struct dns_cb_arg *dns_cb_arg = arg;
- char *ipstr = ip4addr_ntoa(ipaddr);
dns_cb_arg->done = true;
}
dns_cb_arg->host_ipaddr.addr = ipaddr->addr;
-
- if (dns_cb_arg->var)
- env_set(dns_cb_arg->var, ipstr);
}
static int dns_loop(struct udevice *udev, const char *name, const char *var)
{
struct dns_cb_arg dns_cb_arg = { };
struct netif *netif;
+ const char *ipstr;
ip_addr_t ipaddr;
ulong start;
int ret;
- dns_cb_arg.var = var;
-
netif = net_lwip_new_netif(udev);
if (!netif)
return CMD_RET_FAILURE;
net_lwip_remove_netif(netif);
if (dns_cb_arg.done && dns_cb_arg.host_ipaddr.addr != 0) {
- if (!var)
- printf("%s\n", ipaddr_ntoa(&dns_cb_arg.host_ipaddr));
+ ipstr = ipaddr_ntoa(&dns_cb_arg.host_ipaddr);
+ if (var)
+ env_set(var, ipstr);
+ else
+ printf("%s\n", ipstr);
return CMD_RET_SUCCESS;
}