Back to index

glibc  2.9
gethstbyad_r.c
Go to the documentation of this file.
00001 /* Copyright (C) 1996-2000,2002,2007 Free Software Foundation, Inc.
00002    This file is part of the GNU C Library.
00003    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
00004 
00005    The GNU C Library is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Lesser General Public
00007    License as published by the Free Software Foundation; either
00008    version 2.1 of the License, or (at your option) any later version.
00009 
00010    The GNU C Library is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Lesser General Public License for more details.
00014 
00015    You should have received a copy of the GNU Lesser General Public
00016    License along with the GNU C Library; if not, write to the Free
00017    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
00018    02111-1307 USA.  */
00019 
00020 #include <netdb.h>
00021 #include <string.h>
00022 
00023 
00024 #define LOOKUP_TYPE  struct hostent
00025 #define FUNCTION_NAME       gethostbyaddr
00026 #define DATABASE_NAME       hosts
00027 #define ADD_PARAMS   const void *addr, socklen_t len, int type
00028 #define ADD_VARIABLES       addr, len, type
00029 #define NEED_H_ERRNO 1
00030 #define NEED__RES    1
00031 #define NEED__RES_HCONF     1
00032 /* If the addr parameter is the IPv6 unspecified address no query must
00033    be performed.  */
00034 #define PREPROCESS \
00035   if (len == sizeof (struct in6_addr)                                       \
00036       && __builtin_expect (memcmp (&in6addr_any, addr,                      \
00037                                sizeof (struct in6_addr)), 1) == 0)          \
00038     {                                                                \
00039       *h_errnop = HOST_NOT_FOUND;                                    \
00040       *result = NULL;                                                       \
00041       return ENOENT;                                                 \
00042     }
00043 #define POSTPROCESS \
00044   if (status == NSS_STATUS_SUCCESS)                                         \
00045     {                                                                \
00046       _res_hconf_reorder_addrs (resbuf);                             \
00047       _res_hconf_trim_domains (resbuf);                                     \
00048     }
00049 
00050 /* Special name for the lookup function.  */
00051 #define DB_LOOKUP_FCT __nss_hosts_lookup2
00052 
00053 #include "../nss/getXXbyYY_r.c"