[PATCH v3 06/12] net-lwip: add dns command

Ilias Apalodimas ilias.apalodimas at linaro.org
Thu Jun 6 17:46:18 CEST 2024


> @@ -7,6 +7,7 @@ obj-$(CONFIG_$(SPL_)DM_ETH) += ../net/eth_common.o
>  obj-$(CONFIG_$(SPL_)DM_ETH) += ../net/eth-uclass.o
>  obj-$(CONFIG_$(SPL_)DM_ETH) += net-lwip.o
>  obj-$(CONFIG_CMD_DHCP) += dhcp.o
> +obj-$(CONFIG_CMD_DNS) += dns.o
>  obj-$(CONFIG_CMD_PING) += ping.o
>  obj-$(CONFIG_CMD_TFTPBOOT) += tftp.o
>
> diff --git a/net-lwip/dns.c b/net-lwip/dns.c
> new file mode 100644
> index 00000000000..24a5149343a
> --- /dev/null
> +++ b/net-lwip/dns.c
> @@ -0,0 +1,107 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/* Copyright (C) 2024 Linaro Ltd. */
> +
> +#include <command.h>
> +#include <console.h>
> +#include <lwip/dns.h>
> +#include <lwip/timeouts.h>
> +#include <net-lwip.h>
> +#include <time.h>
> +
> +#define DNS_RESEND_MS 1000
> +#define DNS_TIMEOUT_MS 10000
> +
> +static ulong start;
> +static ip_addr_t host_ipaddr;
> +static bool done;
> +
> +static void do_dns_tmr(void *arg)
> +{
> +       dns_tmr();
> +}
> +
> +static void dns_cb(const char *name, const ip_addr_t *ipaddr, void *arg)
> +{
> +       const char *var = arg;
> +       char *ipstr = ip4addr_ntoa(ipaddr);
> +
> +       done = true;
> +
> +       if (!ipaddr) {
> +               printf("DNS: host not found\n");
> +               host_ipaddr.addr = 0;
> +               return;
> +       }
> +
> +       if (var)
> +               env_set(var, ipstr);

Do we need this? Won't this set <dns_name> == ipaddr?
If we do not need it repurpose the void *arg and get rid of the global 'done'

> +
> +       printf("%s\n", ipstr);
> +}
> +
> +int do_dns(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
> +{
> +       bool has_server = false;
> +       ip_addr_t ipaddr;
> +       ip_addr_t ns;
> +       char *nsenv;
> +       char *name;
> +       char *var;
> +       int ret;

[...]

Thanks
/Ilias


More information about the U-Boot mailing list