RTEMS CPU Kit with SuperCore  4.11.3
netdb.h
Go to the documentation of this file.
1 /*-
2  * Copyright (c) 1980, 1983, 1988, 1993
3  * The Regents of the University of California. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * 3. All advertising materials mentioning features or use of this software
14  * must display the following acknowledgement:
15  * This product includes software developed by the University of
16  * California, Berkeley and its contributors.
17  * 4. Neither the name of the University nor the names of its contributors
18  * may be used to endorse or promote products derived from this software
19  * without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31  * SUCH DAMAGE.
32  *
33  * -
34  * Portions Copyright (c) 1993 by Digital Equipment Corporation.
35  *
36  * Permission to use, copy, modify, and distribute this software for any
37  * purpose with or without fee is hereby granted, provided that the above
38  * copyright notice and this permission notice appear in all copies, and that
39  * the name of Digital Equipment Corporation not be used in advertising or
40  * publicity pertaining to distribution of the document or software without
41  * specific, written prior permission.
42  *
43  * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
44  * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
45  * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
46  * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
47  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
48  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
49  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
50  * SOFTWARE.
51  * -
52  * --Copyright--
53  */
54 
55 /*
56  * @(#)netdb.h 8.1 (Berkeley) 6/2/93
57  * From: Id: netdb.h,v 8.9 1996/11/19 08:39:29 vixie Exp $
58  * $FreeBSD: src/include/netdb.h,v 1.34 2005/02/14 11:33:11 phantom Exp $
59  */
60 
61 
62 #ifndef _NETDB_H_
63 #define _NETDB_H_
64 
65 #include <sys/cdefs.h>
66 #include <rtems/bsdnet/_types.h>
67 
68 #ifndef _SOCKLEN_T_DECLARED
69 typedef __socklen_t socklen_t;
70 #define _SOCKLEN_T_DECLARED
71 #endif
72 
73 #ifndef _PATH_HEQUIV
74 # define _PATH_HEQUIV "/etc/hosts.equiv"
75 #endif
76 #define _PATH_HOSTS "/etc/hosts"
77 #define _PATH_NETWORKS "/etc/networks"
78 #define _PATH_PROTOCOLS "/etc/protocols"
79 #define _PATH_SERVICES "/etc/services"
80 
81 extern int h_errno;
82 
83 /*
84  * Structures returned by network data base library. All addresses are
85  * supplied in host order, and returned in network order (suitable for
86  * use in system calls).
87  */
88 struct hostent {
89  char *h_name; /* official name of host */
90  char **h_aliases; /* alias list */
91  int h_addrtype; /* host address type */
92  int h_length; /* length of address */
93  char **h_addr_list; /* list of addresses from name server */
94 #define h_addr h_addr_list[0] /* address, for backward compatibility */
95 };
96 
97 struct netent {
98  char *n_name; /* official name of net */
99  char **n_aliases; /* alias list */
100  int n_addrtype; /* net address type */
101  uint32_t n_net; /* network # */
102 };
103 
104 struct servent {
105  char *s_name; /* official service name */
106  char **s_aliases; /* alias list */
107  int s_port; /* port # */
108  char *s_proto; /* protocol to use */
109 };
110 
111 struct protoent {
112  char *p_name; /* official protocol name */
113  char **p_aliases; /* alias list */
114  int p_proto; /* protocol # */
115 };
116 
117 /*
118  * Error return codes from gethostbyname() and gethostbyaddr()
119  * (left in h_errno).
120  */
121 
122 #define NETDB_INTERNAL -1 /* see errno */
123 #define NETDB_SUCCESS 0 /* no problem */
124 #define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found */
125 #define TRY_AGAIN 2 /* Non-Authoritative Host not found, or SERVERFAIL */
126 #define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
127 #define NO_DATA 4 /* Valid name, no data record of requested type */
128 #define NO_ADDRESS NO_DATA /* no address, look for MX record */
129 
130 __BEGIN_DECLS
131 void endhostent(void);
132 void endnetent(void);
133 void endprotoent(void);
134 void endservent(void);
135 struct hostent *gethostbyaddr(const void *, socklen_t, int);
136 struct hostent *gethostbyname(const char *);
137 struct hostent *gethostbyname2(const char *, int);
138 struct hostent *gethostent(void);
139 struct netent *getnetbyaddr(uint32_t, int);
140 struct netent *getnetbyname(const char *);
141 struct netent *getnetent(void);
142 struct protoent *getprotobyname(const char *);
143 struct protoent *getprotobynumber(int);
144 struct protoent *getprotoent(void);
145 struct servent *getservbyname(const char *, const char *);
146 struct servent *getservbyport(int, const char *);
147 struct servent *getservent(void);
148 void herror(const char *);
149 __const char *hstrerror(int);
150 void sethostent(int);
151 /* void sethostfile(const char *); */
152 void setnetent(int);
153 void setprotoent(int);
154 void setservent(int);
155 
156 #ifdef _THREAD_SAFE
157 struct hostent* gethostent_r(char* buf, int len);
158 int gethostbyname_r(const char* name,
159  struct hostent* result,
160  char *buf,
161  int buflen,
162  struct hostent **RESULT,
163  int *h_errnop) ;
164 #endif
165 
166 /*
167  * PRIVATE functions specific to the FreeBSD implementation
168  */
169 
170 /* DO NOT USE THESE, THEY ARE SUBJECT TO CHANGE AND ARE NOT PORTABLE!!! */
171 void _sethosthtent(int);
172 void _endhosthtent(void);
173 void _sethostdnsent(int);
174 void _endhostdnsent(void);
175 void _setnethtent(int);
176 void _endnethtent(void);
177 void _setnetdnsent(int);
178 void _endnetdnsent(void);
179 struct hostent * _gethostbyhtname(const char *, int);
180 struct hostent * _gethostbydnsname(const char *, int);
181 struct hostent * _gethostbynisname(const char *, int);
182 struct hostent * _gethostbyhtaddr (const char *, int, int);
183 struct hostent * _gethostbydnsaddr(const char *, int, int);
184 struct hostent * _gethostbynisaddr(const char *, int, int);
185 struct netent * _getnetbyhtname (const char *);
186 struct netent * _getnetbydnsname(const char *);
187 struct netent * _getnetbynisname(const char *);
188 struct netent * _getnetbyhtaddr (unsigned long, int);
189 struct netent * _getnetbydnsaddr(unsigned long, int);
190 struct netent * _getnetbynisaddr(unsigned long, int);
191 void _map_v4v6_address(const char *, char *);
192 void _map_v4v6_hostent(struct hostent *, char **, int *len);
193 __END_DECLS
194 
195 #endif /* !_NETDB_H_ */
Definition: netdb.h:98
Definition: netdb.h:105
Definition: netdb.h:89
Definition: netdb.h:112