_nss_nis_gethostbyaddr_r (char *addr, size_t addrlen, int af,
_nss_nis_gethostbyaddr_r (const void *addr, socklen_t addrlen, int af,
_nss_nis_gethostbyaddr_r (char *addr, size_t addrlen, int af,			  struct hostent *host, char *buffer, size_t buflen,			  int *errnop, int *h_errnop){  enum nss_status retval;  char *domain, *result, *p;  int len, parse_res;  char *buf;  struct parser_data *data = (void *) buffer;  size_t linebuflen = buffer + buflen - data->linebuffer;  if (yp_get_default_domain (&domain))    return NSS_STATUS_UNAVAIL;  if (buflen < sizeof *data + 1)    {      *errnop = ERANGE;      *h_errnop = NETDB_INTERNAL;      return NSS_STATUS_TRYAGAIN;    }  buf = inet_ntoa (*(struct in_addr *) addr);  retval = yperr2nss (yp_match (domain, "hosts.byaddr", buf,                                strlen (buf), &result, &len));  if (retval != NSS_STATUS_SUCCESS)    {      if (retval == NSS_STATUS_TRYAGAIN)	{	  *h_errnop = TRY_AGAIN;	  *errnop = errno;	}      if (retval == NSS_STATUS_NOTFOUND)	{	  *h_errnop = HOST_NOT_FOUND;	  *errnop = ENOENT;	}      return retval;    }  if ((size_t) (len + 1) > linebuflen)    {      free (result);      *errnop = ERANGE;      *h_errnop = NETDB_INTERNAL;      return NSS_STATUS_TRYAGAIN;    }  p = strncpy (data->linebuffer, result, len);  data->linebuffer[len] = '\0';  while (isspace (*p))    ++p;  free (result);  parse_res = parse_line (p, host, data, buflen, errnop, af,			  ((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0));  if (parse_res < 1)    {      if (parse_res == -1)	{	  *h_errnop = NETDB_INTERNAL;	  return NSS_STATUS_TRYAGAIN;	}      else	{	  *h_errnop = HOST_NOT_FOUND;	  return NSS_STATUS_NOTFOUND;	}    }  *h_errnop = NETDB_SUCCESS;  return NSS_STATUS_SUCCESS;}