(root)/
glibc-2.38/
inet/
gethstbyad_r.c
       1  /* Copyright (C) 1996-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  #include <netdb.h>
      19  #include <string.h>
      20  #include <resolv/res_hconf.h>
      21  
      22  #define LOOKUP_TYPE	struct hostent
      23  #define FUNCTION_NAME	gethostbyaddr
      24  #define DATABASE_NAME	hosts
      25  #define ADD_PARAMS	const void *addr, socklen_t len, int type
      26  #define ADD_VARIABLES	addr, len, type
      27  #define NEED_H_ERRNO	1
      28  #define NEED__RES	1
      29  /* If the addr parameter is the IPv6 unspecified address no query must
      30     be performed.  */
      31  #define PREPROCESS \
      32    if (len == sizeof (struct in6_addr)					      \
      33        && __builtin_expect (memcmp (&__in6addr_any, addr,		      \
      34  				   sizeof (struct in6_addr)), 1) == 0)	      \
      35      {									      \
      36        *h_errnop = HOST_NOT_FOUND;					      \
      37        *result = NULL;							      \
      38        return ENOENT;							      \
      39      }
      40  #define POSTPROCESS \
      41    if (status == NSS_STATUS_SUCCESS)					      \
      42      {									      \
      43        _res_hconf_reorder_addrs (resbuf);				      \
      44        _res_hconf_trim_domains (resbuf);					      \
      45      }
      46  
      47  /* Special name for the lookup function.  */
      48  #define DB_LOOKUP_FCT __nss_hosts_lookup2
      49  
      50  #include "../nss/getXXbyYY_r.c"