SimpleLink CC3120/CC3220 Host Driver  Version 2.0.1.26
Simplifies the implementation of Internet connectivity
netdb.c
1 /*
2  * netdb.c - CC31xx/CC32xx Host Driver Implementation
3  *
4  * Copyright (C) 2017 Texas Instruments Incorporated - https://www.ti.com/
5  *
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  *
14  * Redistributions in binary form must reproduce the above copyright
15  * notice, this list of conditions and the following disclaimer in the
16  * documentation and/or other materials provided with the
17  * distribution.
18  *
19  * Neither the name of Texas Instruments Incorporated nor the names of
20  * its contributors may be used to endorse or promote products derived
21  * from this software without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34  *
35 */
36 
37 
38 
39 /*****************************************************************************/
40 /* Include files */
41 /*****************************************************************************/
42 #include <ti/drivers/net/wifi/bsd/netdb.h>
43 #include <ti/drivers/net/wifi/bsd/sys/socket.h>
44 #include <ti/drivers/net/wifi/simplelink.h>
45 
46 /*******************************************************************************/
47 /* gethostbyname */
48 /*******************************************************************************/
49 #if _SL_INCLUDE_FUNC(sl_NetAppDnsGetHostByName)
50 struct hostent* gethostbyname(const char *name)
51 {
52  static struct hostent Hostent;
53  static char* AddrArray[2];
54  static char Addr[IPv6_ADDR_LEN];
55 
56  int RetVal = 0;
57 
58  /* Clear the reused buffer */
59  _SlDrvMemZero(&Hostent, sizeof(struct hostent));
60  _SlDrvMemZero(&AddrArray, sizeof(AddrArray));
61  _SlDrvMemZero(&Addr, sizeof(Addr));
62 
63  /* Set the host name */
64  Hostent.h_name = (char*)name;
65  /* Query DNS for IPv4 address. */
66  RetVal = sl_NetAppDnsGetHostByName((signed char*)name , (_u16)strlen(name), (unsigned long*)(&Addr), AF_INET);
67 
68  if(RetVal < 0)
69  {
70  /* If call fails, try again for IPv6. */
71  RetVal = sl_NetAppDnsGetHostByName((signed char*)name , (_u16)strlen(name), (unsigned long*)(&Addr), AF_INET6);
72  if(RetVal < 0)
73  {
74  /* if the request failed twice, there's an error - return NULL. */
75  return NULL;
76  }
77  else
78  {
79  /* fill the answer fields */
80  Hostent.h_addrtype = AF_INET6 ;
81  Hostent.h_length = IPv6_ADDR_LEN;
82  }
83  }
84  else
85  {
86  /* fill the answer fields */
87  Hostent.h_addrtype = AF_INET ;
88  Hostent.h_length = IPv4_ADDR_LEN;
89  }
90 
91  AddrArray[0] = &Addr[0];
92  Hostent.h_addr_list = AddrArray;
93 
94  /* Return the address of the reused buffer */
95  return (&Hostent);
96 }
97 #endif
struct hostent * gethostbyname(const char *name)
Get host IP by name Obtain the IP Address of machine on network, by machine name. ...
Definition: netdb.c:50
_i16 sl_NetAppDnsGetHostByName(_i8 *pHostName, const _u16 NameLen, _u32 *OutIpAddr, const _u8 Family)
Get host IP by name Obtain the IP Address of machine on network, by machine name. ...
Definition: netapp.c:810
Definition: netdb.h:62