lwip: add net_lwip_dns_resolve()
Add a helper fonction to convert an IP address (supplied as a text string) or a host name to an ip_addr_t. Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include <dm/device.h>
|
||||
#include <dm/uclass.h>
|
||||
#include <hexdump.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <lwip/ip4_addr.h>
|
||||
#include <lwip/dns.h>
|
||||
#include <lwip/err.h>
|
||||
@@ -358,6 +359,44 @@ int net_lwip_rx(struct udevice *udev, struct netif *netif)
|
||||
return len;
|
||||
}
|
||||
|
||||
/**
|
||||
* net_lwip_dns_resolve() - find IP address from name or IP
|
||||
*
|
||||
* @name_or_ip: host name or IP address
|
||||
* @ip: output IP address
|
||||
*
|
||||
* Return value: 0 on success, -1 on failure.
|
||||
*/
|
||||
int net_lwip_dns_resolve(char *name_or_ip, ip_addr_t *ip)
|
||||
{
|
||||
#if defined(CONFIG_CMD_DNS)
|
||||
char *var = "_dnsres";
|
||||
char *argv[] = { "dns", name_or_ip, var, NULL };
|
||||
int argc = ARRAY_SIZE(argv) - 1;
|
||||
#endif
|
||||
|
||||
if (ipaddr_aton(name_or_ip, ip))
|
||||
return 0;
|
||||
|
||||
#if defined(CONFIG_CMD_DNS)
|
||||
if (do_dns(NULL, 0, argc, argv) != CMD_RET_SUCCESS)
|
||||
return -1;
|
||||
|
||||
name_or_ip = env_get(var);
|
||||
if (!name_or_ip)
|
||||
return -1;
|
||||
|
||||
if (!ipaddr_aton(name_or_ip, ip))
|
||||
return -1;
|
||||
|
||||
env_set(var, NULL);
|
||||
|
||||
return 0;
|
||||
#else
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
void net_process_received_packet(uchar *in_packet, int len)
|
||||
{
|
||||
#if defined(CONFIG_API) || defined(CONFIG_EFI_LOADER)
|
||||
|
||||
Reference in New Issue
Block a user