/contrib/bind9/lib/lwres/include/lwres/netdb.h.in

https://bitbucket.org/freebsd/freebsd-head/ · Autoconf · 520 lines · 173 code · 89 blank · 258 comment · 13 complexity · 18d4b9727c61d6b958ccd4cced8a6be9 MD5 · raw file

  1. /*
  2. * Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC")
  3. * Copyright (C) 2000, 2001 Internet Software Consortium.
  4. *
  5. * Permission to use, copy, modify, and/or distribute this software for any
  6. * purpose with or without fee is hereby granted, provided that the above
  7. * copyright notice and this permission notice appear in all copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
  10. * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
  11. * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
  12. * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  13. * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  14. * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  15. * PERFORMANCE OF THIS SOFTWARE.
  16. */
  17. /* $Id: netdb.h.in,v 1.41 2009/01/18 23:48:14 tbox Exp $ */
  18. /*! \file */
  19. #ifndef LWRES_NETDB_H
  20. #define LWRES_NETDB_H 1
  21. #include <stddef.h> /* Required on FreeBSD (and others?) for size_t. */
  22. #include <netdb.h> /* Contractual provision. */
  23. #include <lwres/lang.h>
  24. /*
  25. * Define if <netdb.h> does not declare struct addrinfo.
  26. */
  27. @ISC_LWRES_NEEDADDRINFO@
  28. #ifdef ISC_LWRES_NEEDADDRINFO
  29. struct addrinfo {
  30. int ai_flags; /* AI_PASSIVE, AI_CANONNAME */
  31. int ai_family; /* PF_xxx */
  32. int ai_socktype; /* SOCK_xxx */
  33. int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
  34. size_t ai_addrlen; /* Length of ai_addr */
  35. char *ai_canonname; /* Canonical name for hostname */
  36. struct sockaddr *ai_addr; /* Binary address */
  37. struct addrinfo *ai_next; /* Next structure in linked list */
  38. };
  39. #endif
  40. /*
  41. * Undefine all #defines we are interested in as <netdb.h> may or may not have
  42. * defined them.
  43. */
  44. /*
  45. * Error return codes from gethostbyname() and gethostbyaddr()
  46. * (left in extern int h_errno).
  47. */
  48. #undef NETDB_INTERNAL
  49. #undef NETDB_SUCCESS
  50. #undef HOST_NOT_FOUND
  51. #undef TRY_AGAIN
  52. #undef NO_RECOVERY
  53. #undef NO_DATA
  54. #undef NO_ADDRESS
  55. #define NETDB_INTERNAL -1 /* see errno */
  56. #define NETDB_SUCCESS 0 /* no problem */
  57. #define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found */
  58. #define TRY_AGAIN 2 /* Non-Authoritative Host not found, or SERVERFAIL */
  59. #define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
  60. #define NO_DATA 4 /* Valid name, no data record of requested type */
  61. #define NO_ADDRESS NO_DATA /* no address, look for MX record */
  62. /*
  63. * Error return codes from getaddrinfo()
  64. */
  65. #undef EAI_ADDRFAMILY
  66. #undef EAI_AGAIN
  67. #undef EAI_BADFLAGS
  68. #undef EAI_FAIL
  69. #undef EAI_FAMILY
  70. #undef EAI_MEMORY
  71. #undef EAI_NODATA
  72. #undef EAI_NONAME
  73. #undef EAI_SERVICE
  74. #undef EAI_SOCKTYPE
  75. #undef EAI_SYSTEM
  76. #undef EAI_BADHINTS
  77. #undef EAI_PROTOCOL
  78. #undef EAI_MAX
  79. #define EAI_ADDRFAMILY 1 /* address family for hostname not supported */
  80. #define EAI_AGAIN 2 /* temporary failure in name resolution */
  81. #define EAI_BADFLAGS 3 /* invalid value for ai_flags */
  82. #define EAI_FAIL 4 /* non-recoverable failure in name resolution */
  83. #define EAI_FAMILY 5 /* ai_family not supported */
  84. #define EAI_MEMORY 6 /* memory allocation failure */
  85. #define EAI_NODATA 7 /* no address associated with hostname */
  86. #define EAI_NONAME 8 /* hostname nor servname provided, or not known */
  87. #define EAI_SERVICE 9 /* servname not supported for ai_socktype */
  88. #define EAI_SOCKTYPE 10 /* ai_socktype not supported */
  89. #define EAI_SYSTEM 11 /* system error returned in errno */
  90. #define EAI_BADHINTS 12
  91. #define EAI_PROTOCOL 13
  92. #define EAI_MAX 14
  93. /*
  94. * Flag values for getaddrinfo()
  95. */
  96. #undef AI_PASSIVE
  97. #undef AI_CANONNAME
  98. #undef AI_NUMERICHOST
  99. #define AI_PASSIVE 0x00000001
  100. #define AI_CANONNAME 0x00000002
  101. #define AI_NUMERICHOST 0x00000004
  102. /*
  103. * Flag values for getipnodebyname()
  104. */
  105. #undef AI_V4MAPPED
  106. #undef AI_ALL
  107. #undef AI_ADDRCONFIG
  108. #undef AI_DEFAULT
  109. #define AI_V4MAPPED 0x00000008
  110. #define AI_ALL 0x00000010
  111. #define AI_ADDRCONFIG 0x00000020
  112. #define AI_DEFAULT (AI_V4MAPPED|AI_ADDRCONFIG)
  113. /*
  114. * Constants for lwres_getnameinfo()
  115. */
  116. #undef NI_MAXHOST
  117. #undef NI_MAXSERV
  118. #define NI_MAXHOST 1025
  119. #define NI_MAXSERV 32
  120. /*
  121. * Flag values for lwres_getnameinfo()
  122. */
  123. #undef NI_NOFQDN
  124. #undef NI_NUMERICHOST
  125. #undef NI_NAMEREQD
  126. #undef NI_NUMERICSERV
  127. #undef NI_DGRAM
  128. #undef NI_NUMERICSCOPE
  129. #define NI_NOFQDN 0x00000001
  130. #define NI_NUMERICHOST 0x00000002
  131. #define NI_NAMEREQD 0x00000004
  132. #define NI_NUMERICSERV 0x00000008
  133. #define NI_DGRAM 0x00000010
  134. #define NI_NUMERICSCOPE 0x00000020 /*2553bis-00*/
  135. /*
  136. * Define if <netdb.h> does not declare struct rrsetinfo.
  137. */
  138. @ISC_LWRES_NEEDRRSETINFO@
  139. #ifdef ISC_LWRES_NEEDRRSETINFO
  140. /*
  141. * Structures for getrrsetbyname()
  142. */
  143. struct rdatainfo {
  144. unsigned int rdi_length;
  145. unsigned char *rdi_data;
  146. };
  147. struct rrsetinfo {
  148. unsigned int rri_flags;
  149. int rri_rdclass;
  150. int rri_rdtype;
  151. unsigned int rri_ttl;
  152. unsigned int rri_nrdatas;
  153. unsigned int rri_nsigs;
  154. char *rri_name;
  155. struct rdatainfo *rri_rdatas;
  156. struct rdatainfo *rri_sigs;
  157. };
  158. /*
  159. * Flags for getrrsetbyname()
  160. */
  161. #define RRSET_VALIDATED 0x00000001
  162. /* Set was dnssec validated */
  163. /*
  164. * Return codes for getrrsetbyname()
  165. */
  166. #define ERRSET_SUCCESS 0
  167. #define ERRSET_NOMEMORY 1
  168. #define ERRSET_FAIL 2
  169. #define ERRSET_INVAL 3
  170. #define ERRSET_NONAME 4
  171. #define ERRSET_NODATA 5
  172. #endif
  173. /*
  174. * Define to map into lwres_ namespace.
  175. */
  176. #define LWRES_NAMESPACE
  177. #ifdef LWRES_NAMESPACE
  178. /*
  179. * Use our versions not the ones from the C library.
  180. */
  181. #ifdef getnameinfo
  182. #undef getnameinfo
  183. #endif
  184. #define getnameinfo lwres_getnameinfo
  185. #ifdef getaddrinfo
  186. #undef getaddrinfo
  187. #endif
  188. #define getaddrinfo lwres_getaddrinfo
  189. #ifdef freeaddrinfo
  190. #undef freeaddrinfo
  191. #endif
  192. #define freeaddrinfo lwres_freeaddrinfo
  193. #ifdef gai_strerror
  194. #undef gai_strerror
  195. #endif
  196. #define gai_strerror lwres_gai_strerror
  197. #ifdef herror
  198. #undef herror
  199. #endif
  200. #define herror lwres_herror
  201. #ifdef hstrerror
  202. #undef hstrerror
  203. #endif
  204. #define hstrerror lwres_hstrerror
  205. #ifdef getipnodebyname
  206. #undef getipnodebyname
  207. #endif
  208. #define getipnodebyname lwres_getipnodebyname
  209. #ifdef getipnodebyaddr
  210. #undef getipnodebyaddr
  211. #endif
  212. #define getipnodebyaddr lwres_getipnodebyaddr
  213. #ifdef freehostent
  214. #undef freehostent
  215. #endif
  216. #define freehostent lwres_freehostent
  217. #ifdef gethostbyname
  218. #undef gethostbyname
  219. #endif
  220. #define gethostbyname lwres_gethostbyname
  221. #ifdef gethostbyname2
  222. #undef gethostbyname2
  223. #endif
  224. #define gethostbyname2 lwres_gethostbyname2
  225. #ifdef gethostbyaddr
  226. #undef gethostbyaddr
  227. #endif
  228. #define gethostbyaddr lwres_gethostbyaddr
  229. #ifdef gethostent
  230. #undef gethostent
  231. #endif
  232. #define gethostent lwres_gethostent
  233. #ifdef sethostent
  234. #undef sethostent
  235. #endif
  236. #define sethostent lwres_sethostent
  237. #ifdef endhostent
  238. #undef endhostent
  239. #endif
  240. #define endhostent lwres_endhostent
  241. /* #define sethostfile lwres_sethostfile */
  242. #ifdef gethostbyname_r
  243. #undef gethostbyname_r
  244. #endif
  245. #define gethostbyname_r lwres_gethostbyname_r
  246. #ifdef gethostbyaddr_r
  247. #undef gethostbyaddr_r
  248. #endif
  249. #define gethostbyaddr_r lwres_gethostbyaddr_r
  250. #ifdef gethostent_r
  251. #undef gethostent_r
  252. #endif
  253. #define gethostent_r lwres_gethostent_r
  254. #ifdef sethostent_r
  255. #undef sethostent_r
  256. #endif
  257. #define sethostent_r lwres_sethostent_r
  258. #ifdef endhostent_r
  259. #undef endhostent_r
  260. #endif
  261. #define endhostent_r lwres_endhostent_r
  262. #ifdef getrrsetbyname
  263. #undef getrrsetbyname
  264. #endif
  265. #define getrrsetbyname lwres_getrrsetbyname
  266. #ifdef freerrset
  267. #undef freerrset
  268. #endif
  269. #define freerrset lwres_freerrset
  270. #ifdef notyet
  271. #define getservbyname lwres_getservbyname
  272. #define getservbyport lwres_getservbyport
  273. #define getservent lwres_getservent
  274. #define setservent lwres_setservent
  275. #define endservent lwres_endservent
  276. #define getservbyname_r lwres_getservbyname_r
  277. #define getservbyport_r lwres_getservbyport_r
  278. #define getservent_r lwres_getservent_r
  279. #define setservent_r lwres_setservent_r
  280. #define endservent_r lwres_endservent_r
  281. #define getprotobyname lwres_getprotobyname
  282. #define getprotobynumber lwres_getprotobynumber
  283. #define getprotoent lwres_getprotoent
  284. #define setprotoent lwres_setprotoent
  285. #define endprotoent lwres_endprotoent
  286. #define getprotobyname_r lwres_getprotobyname_r
  287. #define getprotobynumber_r lwres_getprotobynumber_r
  288. #define getprotoent_r lwres_getprotoent_r
  289. #define setprotoent_r lwres_setprotoent_r
  290. #define endprotoent_r lwres_endprotoent_r
  291. #ifdef getnetbyname
  292. #undef getnetbyname
  293. #endif
  294. #define getnetbyname lwres_getnetbyname
  295. #ifdef getnetbyaddr
  296. #undef getnetbyaddr
  297. #endif
  298. #define getnetbyaddr lwres_getnetbyaddr
  299. #ifdef getnetent
  300. #undef getnetent
  301. #endif
  302. #define getnetent lwres_getnetent
  303. #ifdef setnetent
  304. #undef setnetent
  305. #endif
  306. #define setnetent lwres_setnetent
  307. #ifdef endnetent
  308. #undef endnetent
  309. #endif
  310. #define endnetent lwres_endnetent
  311. #ifdef getnetbyname_r
  312. #undef getnetbyname_r
  313. #endif
  314. #define getnetbyname_r lwres_getnetbyname_r
  315. #ifdef getnetbyaddr_r
  316. #undef getnetbyaddr_r
  317. #endif
  318. #define getnetbyaddr_r lwres_getnetbyaddr_r
  319. #ifdef getnetent_r
  320. #undef getnetent_r
  321. #endif
  322. #define getnetent_r lwres_getnetent_r
  323. #ifdef setnetent_r
  324. #undef setnetent_r
  325. #endif
  326. #define setnetent_r lwres_setnetent_r
  327. #ifdef endnetent_r
  328. #undef endnetent_r
  329. #endif
  330. #define endnetent_r lwres_endnetent_r
  331. #endif /* notyet */
  332. #ifdef h_errno
  333. #undef h_errno
  334. #endif
  335. #define h_errno lwres_h_errno
  336. #endif /* LWRES_NAMESPACE */
  337. LWRES_LANG_BEGINDECLS
  338. extern int lwres_h_errno;
  339. int lwres_getaddrinfo(const char *, const char *,
  340. const struct addrinfo *, struct addrinfo **);
  341. int lwres_getnameinfo(const struct sockaddr *, size_t, char *,
  342. size_t, char *, size_t, int);
  343. void lwres_freeaddrinfo(struct addrinfo *);
  344. char *lwres_gai_strerror(int);
  345. struct hostent *lwres_gethostbyaddr(const char *, int, int);
  346. struct hostent *lwres_gethostbyname(const char *);
  347. struct hostent *lwres_gethostbyname2(const char *, int);
  348. struct hostent *lwres_gethostent(void);
  349. struct hostent *lwres_getipnodebyname(const char *, int, int, int *);
  350. struct hostent *lwres_getipnodebyaddr(const void *, size_t, int, int *);
  351. void lwres_endhostent(void);
  352. void lwres_sethostent(int);
  353. /* void lwres_sethostfile(const char *); */
  354. void lwres_freehostent(struct hostent *);
  355. int lwres_getrrsetbyname(const char *, unsigned int, unsigned int,
  356. unsigned int, struct rrsetinfo **);
  357. void lwres_freerrset(struct rrsetinfo *);
  358. #ifdef notyet
  359. struct netent *lwres_getnetbyaddr(unsigned long, int);
  360. struct netent *lwres_getnetbyname(const char *);
  361. struct netent *lwres_getnetent(void);
  362. void lwres_endnetent(void);
  363. void lwres_setnetent(int);
  364. struct protoent *lwres_getprotobyname(const char *);
  365. struct protoent *lwres_getprotobynumber(int);
  366. struct protoent *lwres_getprotoent(void);
  367. void lwres_endprotoent(void);
  368. void lwres_setprotoent(int);
  369. struct servent *lwres_getservbyname(const char *, const char *);
  370. struct servent *lwres_getservbyport(int, const char *);
  371. struct servent *lwres_getservent(void);
  372. void lwres_endservent(void);
  373. void lwres_setservent(int);
  374. #endif /* notyet */
  375. void lwres_herror(const char *);
  376. const char *lwres_hstrerror(int);
  377. struct hostent *lwres_gethostbyaddr_r(const char *, int, int, struct hostent *,
  378. char *, int, int *);
  379. struct hostent *lwres_gethostbyname_r(const char *, struct hostent *,
  380. char *, int, int *);
  381. struct hostent *lwres_gethostent_r(struct hostent *, char *, int, int *);
  382. void lwres_sethostent_r(int);
  383. void lwres_endhostent_r(void);
  384. #ifdef notyet
  385. struct netent *lwres_getnetbyname_r(const char *, struct netent *,
  386. char *, int);
  387. struct netent *lwres_getnetbyaddr_r(long, int, struct netent *,
  388. char *, int);
  389. struct netent *lwres_getnetent_r(struct netent *, char *, int);
  390. void lwres_setnetent_r(int);
  391. void lwres_endnetent_r(void);
  392. struct protoent *lwres_getprotobyname_r(const char *,
  393. struct protoent *, char *, int);
  394. struct protoent *lwres_getprotobynumber_r(int,
  395. struct protoent *, char *, int);
  396. struct protoent *lwres_getprotoent_r(struct protoent *, char *, int);
  397. void lwres_setprotoent_r(int);
  398. void lwres_endprotoent_r(void);
  399. struct servent *lwres_getservbyname_r(const char *name, const char *,
  400. struct servent *, char *, int);
  401. struct servent *lwres_getservbyport_r(int port, const char *,
  402. struct servent *, char *, int);
  403. struct servent *lwres_getservent_r(struct servent *, char *, int);
  404. void lwres_setservent_r(int);
  405. void lwres_endservent_r(void);
  406. #endif /* notyet */
  407. LWRES_LANG_ENDDECLS
  408. #ifdef notyet
  409. /* This is nec'y to make this include file properly replace the sun version. */
  410. #ifdef sun
  411. #ifdef __GNU_LIBRARY__
  412. #include <rpc/netdb.h> /* Required. */
  413. #else /* !__GNU_LIBRARY__ */
  414. struct rpcent {
  415. char *r_name; /* name of server for this rpc program */
  416. char **r_aliases; /* alias list */
  417. int r_number; /* rpc program number */
  418. };
  419. struct rpcent *lwres_getrpcbyname();
  420. struct rpcent *lwres_getrpcbynumber(),
  421. struct rpcent *lwres_getrpcent();
  422. #endif /* __GNU_LIBRARY__ */
  423. #endif /* sun */
  424. #endif /* notyet */
  425. /*
  426. * Tell Emacs to use C mode on this file.
  427. * Local variables:
  428. * mode: c
  429. * End:
  430. */
  431. #endif /* LWRES_NETDB_H */