diff options
Diffstat (limited to 'apps/netutils/dnsclient/dns_gethostip.c')
-rw-r--r-- | apps/netutils/dnsclient/dns_gethostip.c | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/apps/netutils/dnsclient/dns_gethostip.c b/apps/netutils/dnsclient/dns_gethostip.c new file mode 100644 index 000000000..59035796c --- /dev/null +++ b/apps/netutils/dnsclient/dns_gethostip.c @@ -0,0 +1,91 @@ +/**************************************************************************** + * apps/netutils/dnsclient/dns_gethostip.c + * + * Copyright (C) 2007, 2009, 2012, 2014 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <gnutt@nuttx.org> + * + * Based heavily on portions of uIP: + * + * Author: Adam Dunkels <adam@dunkels.com> + * Copyright (c) 2002-2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/config.h> + +#include <apps/netutils/dnsclient.h> + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Types + ****************************************************************************/ + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: dns_gethostip + * + * Descriptions: + * Combines the operations of dns_bind_sock(), dns_query_sock(), and + * dns_free_sock() to obtain the the IP address ('ipaddr') associated with + * the 'hostname' in one operation. + * + ****************************************************************************/ + +int dns_gethostip(FAR const char *hostname, FAR in_addr_t *ipaddr) +{ + int sockfd = -1; + int ret=ERROR; + + dns_bind_sock(&sockfd); + if (sockfd >= 0) + { + ret = dns_query_sock(sockfd, hostname, ipaddr); + dns_free_sock(&sockfd); + } + + return ret; +} |