xref: /nrf52832-nimble/rt-thread/components/net/sal_socket/include/sal_netdb.h (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * Copyright (c) 2006-2018, RT-Thread Development Team
3*10465441SEvalZero  *
4*10465441SEvalZero  * SPDX-License-Identifier: Apache-2.0
5*10465441SEvalZero  *
6*10465441SEvalZero  * Change Logs:
7*10465441SEvalZero  * Date           Author       Notes
8*10465441SEvalZero  * 2018-05-24     ChenYong     First version
9*10465441SEvalZero  */
10*10465441SEvalZero #ifndef SAL_NETDB_H__
11*10465441SEvalZero #define SAL_NETDB_H__
12*10465441SEvalZero 
13*10465441SEvalZero #include <sal_socket.h>
14*10465441SEvalZero 
15*10465441SEvalZero #ifdef __cplusplus
16*10465441SEvalZero extern "C" {
17*10465441SEvalZero #endif
18*10465441SEvalZero 
19*10465441SEvalZero #define EAI_NONAME      200
20*10465441SEvalZero #define EAI_SERVICE     201
21*10465441SEvalZero #define EAI_FAIL        202
22*10465441SEvalZero #define EAI_MEMORY      203
23*10465441SEvalZero #define EAI_FAMILY      204
24*10465441SEvalZero 
25*10465441SEvalZero #define HOST_NOT_FOUND  210
26*10465441SEvalZero #define NO_DATA         211
27*10465441SEvalZero #define NO_RECOVERY     212
28*10465441SEvalZero #define TRY_AGAIN       213
29*10465441SEvalZero 
30*10465441SEvalZero #define AI_PASSIVE      0x01
31*10465441SEvalZero #define AI_CANONNAME    0x02
32*10465441SEvalZero #define AI_NUMERICHOST  0x04
33*10465441SEvalZero #define AI_NUMERICSERV  0x08
34*10465441SEvalZero #define AI_V4MAPPED     0x10
35*10465441SEvalZero #define AI_ALL          0x20
36*10465441SEvalZero #define AI_ADDRCONFIG   0x40
37*10465441SEvalZero 
38*10465441SEvalZero /* input flags for structure addrinfo */
39*10465441SEvalZero #define AI_PASSIVE      0x01
40*10465441SEvalZero #define AI_CANONNAME    0x02
41*10465441SEvalZero #define AI_NUMERICHOST  0x04
42*10465441SEvalZero #define AI_NUMERICSERV  0x08
43*10465441SEvalZero #define AI_V4MAPPED     0x10
44*10465441SEvalZero #define AI_ALL          0x20
45*10465441SEvalZero #define AI_ADDRCONFIG   0x40
46*10465441SEvalZero 
47*10465441SEvalZero #define DNS_MAX_NAME_LENGTH 256
48*10465441SEvalZero 
49*10465441SEvalZero struct hostent {
50*10465441SEvalZero     char  *h_name;      /* Official name of the host. */
51*10465441SEvalZero     char **h_aliases;   /* A pointer to an array of pointers to alternative host names,
52*10465441SEvalZero                            terminated by a null pointer. */
53*10465441SEvalZero     int    h_addrtype;  /* Address type. */
54*10465441SEvalZero     int    h_length;    /* The length, in bytes, of the address. */
55*10465441SEvalZero     char **h_addr_list; /* A pointer to an array of pointers to network addresses (in
56*10465441SEvalZero                            network byte order) for the host, terminated by a null pointer. */
57*10465441SEvalZero #define h_addr h_addr_list[0] /* for backward compatibility */
58*10465441SEvalZero };
59*10465441SEvalZero 
60*10465441SEvalZero struct addrinfo {
61*10465441SEvalZero     int               ai_flags;      /* Input flags. */
62*10465441SEvalZero     int               ai_family;     /* Address family of socket. */
63*10465441SEvalZero     int               ai_socktype;   /* Socket type. */
64*10465441SEvalZero     int               ai_protocol;   /* Protocol of socket. */
65*10465441SEvalZero     socklen_t         ai_addrlen;    /* Length of socket address. */
66*10465441SEvalZero     struct sockaddr  *ai_addr;       /* Socket address of socket. */
67*10465441SEvalZero     char             *ai_canonname;  /* Canonical name of service location. */
68*10465441SEvalZero     struct addrinfo  *ai_next;       /* Pointer to next in list. */
69*10465441SEvalZero };
70*10465441SEvalZero 
71*10465441SEvalZero struct hostent *sal_gethostbyname(const char *name);
72*10465441SEvalZero 
73*10465441SEvalZero int sal_gethostbyname_r(const char *name, struct hostent *ret, char *buf,
74*10465441SEvalZero                 size_t buflen, struct hostent **result, int *h_errnop);
75*10465441SEvalZero void sal_freeaddrinfo(struct addrinfo *ai);
76*10465441SEvalZero int sal_getaddrinfo(const char *nodename,
77*10465441SEvalZero        const char *servname,
78*10465441SEvalZero        const struct addrinfo *hints,
79*10465441SEvalZero        struct addrinfo **res);
80*10465441SEvalZero 
81*10465441SEvalZero #ifdef __cplusplus
82*10465441SEvalZero }
83*10465441SEvalZero #endif
84*10465441SEvalZero 
85*10465441SEvalZero #endif /* SAL_NETDB_H__ */
86