+1999-07-18 Ulrich Drepper <drepper@cygnus.com>
+
+ * inet/gethstbyad_r.c (PREPROCESS): Test for unspecified IPv6 address
+ and return an error in this case.
+ * nss/getXXbyYY_r.c: Allow PREPROCESS be defined and use it if
+ available.
+
1999-07-18 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nscd/nscd_proto.h (__nscd_gethostbyaddr_r): Follow change from
Boston, MA 02111-1307, USA. */
#include <netdb.h>
+#include <string.h>
#define LOOKUP_TYPE struct hostent
#define NEED_H_ERRNO 1
#define NEED__RES 1
#define NEED__RES_HCONF 1
+/* If the addr parameter is the IPv6 unspecified address no query must
+ be performed. */
+#define PREPROCESS \
+ if (__builtin_expect (len == sizeof (struct in6_addr) \
+ && memcmp (&in6addr_any, addr, \
+ sizeof (struct in6_addr)) == 0, 0)) \
+ { \
+ *h_errnop = HOST_NOT_FOUND; \
+ *result = NULL; \
+ return ENOENT; \
+ }
#define POSTPROCESS \
if (status == NSS_STATUS_SUCCESS) \
{ \
|* NEED__RES - the global _res variable might be used so we *|
|* will have to initialize it if necessary *|
|* *|
+|* PREPROCESS - code run before anything else *|
+|* *|
+|* POSTPROCESS - code run after the lookup *|
+|* *|
\*******************************************************************/
/* To make the real sources a bit prettier. */
int nscd_status;
#endif
+#ifdef PREPROCESS
+ PREPROCESS;
+#endif
+
#ifdef HANDLE_DIGITS_DOTS
/* We have to test for the use of IPv6 which can only be done by
examining `_res'. */