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