Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Release 1.0
[palacios.git] / geekos / include / lwip / lwip / netdb.h
1 /*
2  * Redistribution and use in source and binary forms, with or without modification, 
3  * are permitted provided that the following conditions are met:
4  *
5  * 1. Redistributions of source code must retain the above copyright notice,
6  *    this list of conditions and the following disclaimer.
7  * 2. Redistributions in binary form must reproduce the above copyright notice,
8  *    this list of conditions and the following disclaimer in the documentation
9  *    and/or other materials provided with the distribution.
10  * 3. The name of the author may not be used to endorse or promote products
11  *    derived from this software without specific prior written permission. 
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 
14  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
15  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
16  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
17  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
18  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
19  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
20  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
21  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
22  * OF SUCH DAMAGE.
23  *
24  * This file is part of the lwIP TCP/IP stack.
25  * 
26  * Author: Simon Goldschmidt
27  *
28  */
29
30 #include "lwip/opt.h"
31
32 #if LWIP_DNS && LWIP_SOCKET
33
34 #include "lwip/sockets.h"
35
36 /* some rarely used options */
37 #ifndef LWIP_DNS_API_DECLARE_H_ERRNO
38 #define LWIP_DNS_API_DECLARE_H_ERRNO 1
39 #endif
40
41 #ifndef LWIP_DNS_API_DEFINE_ERRORS
42 #define LWIP_DNS_API_DEFINE_ERRORS 1
43 #endif
44
45 #ifndef LWIP_DNS_API_DECLARE_STRUCTS
46 #define LWIP_DNS_API_DECLARE_STRUCTS 1
47 #endif
48
49 #if LWIP_DNS_API_DEFINE_ERRORS
50 /** Errors used by the DNS API functions, h_errno can be one of them */
51 #define EAI_NONAME      200
52 #define EAI_SERVICE     201
53 #define EAI_FAIL        202
54 #define EAI_MEMORY      203
55
56 #define HOST_NOT_FOUND  210
57 #define NO_DATA         211
58 #define NO_RECOVERY     212
59 #define TRY_AGAIN       213
60 #endif /* LWIP_DNS_API_DEFINE_ERRORS */
61
62 #if LWIP_DNS_API_DECLARE_STRUCTS
63 struct hostent {
64     char  *h_name;      /* Official name of the host. */
65     char **h_aliases;   /* A pointer to an array of pointers to alternative host names,
66                            terminated by a null pointer. */
67     int    h_addrtype;  /* Address type. */
68     int    h_length;    /* The length, in bytes, of the address. */
69     char **h_addr_list; /* A pointer to an array of pointers to network addresses (in
70                            network byte order) for the host, terminated by a null pointer. */
71 #define h_addr h_addr_list[0] /* for backward compatibility */
72 };
73
74 struct addrinfo {
75     int               ai_flags;      /* Input flags. */
76     int               ai_family;     /* Address family of socket. */
77     int               ai_socktype;   /* Socket type. */
78     int               ai_protocol;   /* Protocol of socket. */
79     socklen_t         ai_addrlen;    /* Length of socket address. */
80     struct sockaddr  *ai_addr;       /* Socket address of socket. */
81     char             *ai_canonname;  /* Canonical name of service location. */
82     struct addrinfo  *ai_next;       /* Pointer to next in list. */
83 };
84 #endif /* LWIP_DNS_API_DECLARE_STRUCTS */
85
86 #if LWIP_DNS_API_DECLARE_H_ERRNO
87 /* application accessable error code set by the DNS API functions */
88 extern int h_errno;
89 #endif /* LWIP_DNS_API_DECLARE_H_ERRNO*/
90
91 struct hostent *lwip_gethostbyname(const char *name);
92 int lwip_gethostbyname_r(const char *name, struct hostent *ret, char *buf,
93                 size_t buflen, struct hostent **result, int *h_errnop);
94 void lwip_freeaddrinfo(struct addrinfo *ai);
95 int lwip_getaddrinfo(const char *nodename,
96        const char *servname,
97        const struct addrinfo *hints,
98        struct addrinfo **res);
99
100 #if LWIP_COMPAT_SOCKETS
101 #define gethostbyname(name) lwip_gethostbyname(name)
102 #define gethostbyname_r(name, ret, buf, buflen, result, h_errnop) \
103        lwip_gethostbyname_r(name, ret, buf, buflen, result, h_errnop)
104 #define freeaddrinfo(addrinfo) lwip_freeaddrinfo(a)
105 #define getaddrinfo(nodname, servname, hints, res) \
106        lwip_getaddrinfo(nodname, servname, hints, res)
107 #endif /* LWIP_COMPAT_SOCKETS */
108
109 #endif /* LWIP_DNS && LWIP_SOCKET */