1 /*
2  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
3  * Use is subject to license terms.
4  */
5 
6 
7 #ifndef _PORT_NETDB_H
8 #define	_PORT_NETDB_H
9 
10 #ifdef	__cplusplus
11 extern "C" {
12 #endif
13 
14 /* AI_NUMERICSERV is not a valid flag for getaddrinfo */
15 #define	AI_MASK		0x0038	/* mask of valid flags */
16 
17 /* EAI_OVERFLOW was removed from ISC */
18 #define	EAI_BADHINTS  12
19 
20 /*
21  * these are libresolv2 functions that were renamed in previous versions to
22  * res_* because they conflict with libnsl or libsocket
23  */
24 
25 #define	endhostent res_endhostent /* libnsl */
26 void endhostent __P((void));
27 #define	endnetent res_endnetent  /* libsocket */
28 void endnetent __P((void));
29 #define	freeaddrinfo res_freeaddrinfo /* libsocket */
30 void freeaddrinfo __P((struct addrinfo *));
31 #define	freehostent res_freehostent  /* libsocket and libnsl */
32 void freehostent __P((struct hostent *));
33 #define	getaddrinfo res_getaddrinfo  /* libsocket */
34 int getaddrinfo __P((const char *, const char *,
35 				const struct addrinfo *, struct addrinfo **));
36 #define	gethostbyaddr res_gethostbyaddr /* libnsl */
37 struct hostent *gethostbyaddr __P((const char *, int, int));
38 #define	gethostbyname res_gethostbyname /* libnsl */
39 struct hostent *gethostbyname __P((const char *));
40 #define	gethostbyname2 res_gethostbyname2 /* lib/nsswitch/dns */
41 struct hostent *gethostbyname2 __P((const char *, int));
42 #define	gethostent res_gethostent  /* libnsl */
43 struct hostent *gethostent __P((void));
44 #define	getipnodebyaddr res_getipnodebyaddr  /* libnsl and libsocket */
45 struct hostent *getipnodebyaddr __P((const void *, size_t, int, int *));
46 #define	getipnodebyname res_getipnodebyname  /* libnsl and libsocket */
47 struct hostent *getipnodebyname __P((const char *, int, int, int *));
48 
49 #define	getnetbyaddr res_getnetbyaddr /* libsocket */
50 struct netent *getnetbyaddr __P((unsigned long, int));
51 #define	getnetbyname res_getnetbyname /* libsocket */
52 struct netent *getnetbyname __P((const char *));
53 #define	getnetent res_getnetent /* libsocket */
54 struct netent *getnetent __P((void));
55 #define	sethostent res_sethostent /* libnsl */
56 void sethostent __P((int));
57 #define	setnetent res_setnetent /* libsocket */
58 void setnetent __P((int));
59 
60 /*
61  * these are other irs functions now included in libresolv.so.2. We rename the
62  * ones that overlap with libsocket or libnsl
63  */
64 
65 /* endprotoent is in libsocket.so.1 */
66 #define	endprotoent res_endprotoent
67 void		endprotoent __P((void));
68 
69 /* endservent is in libsocket.so.1 */
70 #define	endservent res_endservent
71 void		endservent __P((void));
72 
73 /* note: the next two symbols are variables, not functions */
74 
75 /* gai_errlist is in libsocket.so.1 */
76 #define	gai_errlist res_gai_errlist
77 
78 /* gai_nerr is in libsocket.so.1 */
79 #define	gai_nerr res_gai_nerr
80 
81 /* gai_strerror is in libsocket.so.1 */
82 #define	gai_strerror res_gai_strerror
83 const char *gai_strerror __P((int ecode));
84 
85 /* gethostbyaddr_r is in libnsl.so.1 */
86 #define	gethostbyaddr_r res_gethostbyaddr_r
87 struct hostent *gethostbyaddr_r __P((const char *addr, int len, int type,
88 				struct hostent *hptr, char *buf,
89 				int buflen, int *h_errnop));
90 
91 /* gethostbyname_r is in libnsl.so.1 */
92 #define	gethostbyname_r res_gethostbyname_r
93 struct hostent *gethostbyname_r __P((const char *name,	 struct hostent *hptr,
94 				char *buf, int buflen, int *h_errnop));
95 
96 /* gethostent_r is in libnsl.so.1 */
97 #define	gethostent_r res_gethostent_r
98 struct hostent *gethostent_r __P((struct hostent *hptr, char *buf, int buflen,
99 				int *h_errnop));
100 
101 /* getnameinfo is in libsocket.so.1 */
102 #define	getnameinfo res_getnameinfo
103 int getnameinfo __P((const struct sockaddr *, size_t, char *,
104 				size_t, char *, size_t, int));
105 
106 /* getnetbyaddr_r is in libsocket.so.1 */
107 #define	getnetbyaddr_r res_getnetbyaddr_r
108 struct netent *getnetbyaddr_r __P((long, int, struct netent *, char *, int));
109 
110 /* getnetbyname_r is in libsocket.so.1 */
111 #define	getnetbyname_r res_getnetbyname_r
112 struct netent *getnetbyname_r __P((const char *, struct netent *, char *, int));
113 
114 /* getnetent_r is in libsocket.so.1 */
115 #define	getnetent_r res_getnetent_r
116 struct netent *getnetent_r __P((struct netent *, char *, int));
117 
118 /* getprotobyname is in libsocket.so.1 */
119 #define	getprotobyname res_getprotobyname
120 struct protoent	*getprotobyname __P((const char *));
121 
122 /* getprotobyname_r is in libsocket.so.1 */
123 #define	getprotobyname_r res_getprotobyname_r
124 struct protoent	*getprotobyname_r __P((const char *, struct protoent *,
125 				char *, int));
126 
127 /* getprotobynumber is in libsocket.so.1 */
128 #define	getprotobynumber res_getprotobynumber
129 struct protoent	*getprotobynumber __P((int));
130 
131 /* getprotobynumber_r is in libsocket.so.1 */
132 #define	getprotobynumber_r res_getprotobynumber_r
133 struct protoent	*getprotobynumber_r __P((int,
134 				struct protoent *, char *, int));
135 
136 /* getprotoent is in libsocket.so.1 */
137 #define	getprotoent res_getprotoent
138 struct protoent	*getprotoent __P((void));
139 
140 /* getprotoent_r is in libsocket.so.1 */
141 #define	getprotoent_r res_getprotoent_r
142 struct protoent	*getprotoent_r __P((struct protoent *, char *, int));
143 
144 /* getservbyname is in libsocket.so.1 and libnsl.so.1 */
145 #define	getservbyname res_getservbyname
146 struct servent *getservbyname __P((const char *, const char *));
147 
148 /* getservbyname_r is in libsocket.so.1 and libnsl.so.1 */
149 #define	getservbyname_r res_getservbyname_r
150 struct servent *getservbyname_r __P((const char *name, const char *,
151 				struct servent *, char *, int));
152 
153 /* getservbyport is in libsocket.so.1 and libnsl.so.1 */
154 #define	getservbyport res_getservbyport
155 struct servent *getservbyport __P((int, const char *));
156 
157 /* getservbyport_r is in libsocket.so.1 and libnsl.so.1 */
158 #define	getservbyport_r res_getservbyport_r
159 struct servent *getservbyport_r __P((int port, const char *,
160 				struct servent *, char *, int));
161 
162 /* getservent is in libsocket.so.1 */
163 #define	getservent res_getservent
164 struct servent *getservent __P((void));
165 
166 /* getservent_r is in libsocket.so.1 */
167 #define	getservent_r res_getservent_r
168 struct servent *getservent_r __P((struct servent *, char *, int));
169 
170 /* innetgr is in libsocket.so.1 */
171 #define	innetgr res_innetgr
172 int innetgr __P((const char *, const char *, const char *, const char *));
173 
174 /* setprotoent is in libsocket.so.1 */
175 #define	setprotoent res_setprotoent
176 void setprotoent __P((int));
177 
178 /* setservent is in libsocket.so.1 */
179 #define	setservent res_setservent
180 void setservent __P((int));
181 
182 
183 
184 #ifdef	__cplusplus
185 }
186 #endif
187 
188 #endif /* _PORT_NETDB_H */
189