diff options
author | Ken Raeburn <raeburn@mit.edu> | 2002-03-12 03:54:58 +0000 |
---|---|---|
committer | Ken Raeburn <raeburn@mit.edu> | 2002-03-12 03:54:58 +0000 |
commit | 0d0c0c016d2a6678b776fbfba4875b7e221dde2d (patch) | |
tree | 7773ed3eba7e2dab19036b36f6537b5eae625645 /src/include/fake-addrinfo.h | |
parent | ac74aa461e16eb74b75c206421bfaa9af01a3653 (diff) | |
download | krb5-0d0c0c016d2a6678b776fbfba4875b7e221dde2d.tar.gz krb5-0d0c0c016d2a6678b776fbfba4875b7e221dde2d.tar.xz krb5-0d0c0c016d2a6678b776fbfba4875b7e221dde2d.zip |
Restructure a little to permit wrapping a system implementation of getaddrinfo
and friends in a function that does some fixups on the returned data. Use this
for Linux and AIX. Also separate the replacement versions as functions with
different names so that Windows can (eventually) use them from a wrapper
function if a system version cannot be located.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@14262 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/include/fake-addrinfo.h')
-rw-r--r-- | src/include/fake-addrinfo.h | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/src/include/fake-addrinfo.h b/src/include/fake-addrinfo.h index d7c651180..661c0ffd0 100644 --- a/src/include/fake-addrinfo.h +++ b/src/include/fake-addrinfo.h @@ -51,13 +51,15 @@ #define FAI_CONCAT(A,B) FAI_CONCAT2(A,B) #define FAI_CONCAT2(A,B) A ## B -/* Various C libraries have broken implementations of getaddrinfo. */ -#undef fixup_addrinfo -#define fixup_addrinfo FAI_CONCAT(FAI_PREFIX, _fixup_addrinfo) +#define fixup_addrinfo do not call me! -extern void fixup_addrinfo (struct addrinfo *ai); +#if defined (__linux__) || defined (_AIX) +/* See comments in fake-addrinfo.c. */ +# define WRAP_GETADDRINFO +/* # define WRAP_GETNAMEINFO */ +#endif -#if !defined (HAVE_GETADDRINFO) || defined (BROKEN_GETADDRINFO) +#if !defined (HAVE_GETADDRINFO) || defined(WRAP_GETADDRINFO) #undef getaddrinfo #define getaddrinfo FAI_CONCAT(FAI_PREFIX, _fake_getaddrinfo) @@ -65,6 +67,11 @@ extern void fixup_addrinfo (struct addrinfo *ai); #define getnameinfo FAI_CONCAT(FAI_PREFIX, _fake_getnameinfo) #undef freeaddrinfo #define freeaddrinfo FAI_CONCAT(FAI_PREFIX, _fake_freeaddrinfo) + +#endif + +#if !defined (HAVE_GETADDRINFO) + #undef gai_strerror #define gai_strerror FAI_CONCAT(FAI_PREFIX, _fake_gai_strerror) #undef addrinfo @@ -141,6 +148,10 @@ struct addrinfo { #undef EAI_SYSTEM #define EAI_SYSTEM 11 +#endif /* ! HAVE_GETADDRINFO */ + +#if !defined (HAVE_GETADDRINFO) || defined (WRAP_GETADDRINFO) + int getaddrinfo (const char *name, const char *serv, const struct addrinfo *hint, struct addrinfo **result); @@ -151,14 +162,18 @@ int getnameinfo (const struct sockaddr *addr, socklen_t len, void freeaddrinfo (struct addrinfo *ai); -char *gai_strerror (int code); +#endif + +#if !defined (HAVE_GETADDRINFO) #define HAVE_FAKE_GETADDRINFO #define HAVE_GETADDRINFO #undef HAVE_GETNAMEINFO #define HAVE_GETNAMEINFO -#endif /* HAVE_GETADDRINFO */ +char *gai_strerror (int code); + +#endif /* Fudge things on older gai implementations. */ /* AIX 4.3.3 is based on RFC 2133; no AI_NUMERICHOST. */ |