/* $Id: fake-getaddrinfo.h,v 1.4 2003/02/24 01:35:09 djm Exp $ */

#ifndef _FAKE_GETADDRINFO_H
#define _FAKE_GETADDRINFO_H

#include "socketheaders.h"
/* Whenever a function isn't found, we define the name to have a fake_ prefix.
 * This enables the --disable-ipv6 flag to bypass the real functions without
 * requiring any ifdefs in code using these functions.
 * It can also help if a header file is included which prototypes something
 * even though the appropriate library wasn't linked, then it will avoid
 * conflicting types errors.
 */

#include "fake-gai-errnos.h"

#ifndef AI_PASSIVE
# define AI_PASSIVE        1
# define AI_CANONNAME      2
#endif

#ifndef NI_NUMERICHOST
# define NI_NUMERICHOST    2
# define NI_NAMEREQD       4
# define NI_NUMERICSERV    8
#endif

#ifndef HAVE_STRUCT_ADDRINFO
#undef addrinfo
#define addrinfo fake_addrinfo
struct addrinfo {
	int	ai_flags;	/* AI_PASSIVE, AI_CANONNAME */
	int	ai_family;	/* PF_xxx */
	int	ai_socktype;	/* SOCK_xxx */
	int	ai_protocol;	/* 0 or IPPROTO_xxx for IPv4 and IPv6 */
	size_t	ai_addrlen;	/* length of ai_addr */
	char	*ai_canonname;	/* canonical name for hostname */
	struct sockaddr *ai_addr;	/* binary address */
	struct addrinfo *ai_next;	/* next structure in linked list */
};
#endif /* !HAVE_STRUCT_ADDRINFO */

#ifndef HAVE_GETADDRINFO
#undef getaddrinfo
#define getaddrinfo fake_getaddrinfo
int getaddrinfo(const char *hostname, const char *servname, 
                const struct addrinfo *hints, struct addrinfo **res);
#endif /* !HAVE_GETADDRINFO */

#ifndef HAVE_GAI_STRERROR
#undef gai_strerror
#define gai_strerror fake_gake_strerror
char *gai_strerror(int ecode);
#endif /* !HAVE_GAI_STRERROR */

#ifndef HAVE_FREEADDRINFO
#undef freeaddrinfo
#define freeaddrinfo fake_freeaddroinfo
void freeaddrinfo(struct addrinfo *ai);
#endif /* !HAVE_FREEADDRINFO */

#endif /* _FAKE_GETADDRINFO_H */


syntax highlighted by Code2HTML, v. 0.9.1