==============================================================================
-compat/os/opensolaris_10_netdb.h:
-
-/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
-/* All Rights Reserved */
-
-/*
- * BIND 4.9.3:
- *
- * Copyright (c) 1980, 1983, 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * -
- * Portions Copyright (c) 1993 by Digital Equipment Corporation.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies, and that
- * the name of Digital Equipment Corporation not be used in advertising or
- * publicity pertaining to distribution of the document or software without
- * specific, written prior permission.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
- * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- * --Copyright--
- *
- * End BIND 4.9.3
- */
-
-==============================================================================
-
compat/eui64_aton.h:
/* $NetBSD: eui64.h,v 1.1 2005/07/11 15:35:25 kiyohara Exp $ */
eui64_aton.c \
eui64_aton.h \
fdsetsize.h \
- getaddrinfo.cc \
- getaddrinfo.h \
- getnameinfo.cc \
- getnameinfo.h \
- inet_ntop.cc \
- inet_ntop.h \
- inet_pton.cc \
- inet_pton.h \
initgroups.h \
krb5.h \
memrchr.cc \
os/mswindows.h \
os/netbsd.h \
os/openbsd.h \
- os/opensolaris_10_netdb.h \
os/os2.h \
os/qnx.h \
os/sgi.h \
#include "compat/assert.h"
#include "compat/compat_shared.h"
-#include "compat/getaddrinfo.h"
-#include "compat/getnameinfo.h"
-#include "compat/inet_ntop.h"
-#include "compat/inet_pton.h"
#include "compat/stdvarargs.h"
/* cstdio has a bunch of problems with 64-bit definitions */
+++ /dev/null
-/*
- * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
- *
- * Squid software is distributed under GPLv2+ license and includes
- * contributions from numerous individuals and organizations.
- * Please see the COPYING and CONTRIBUTORS files for details.
- */
-
-/*
- * Shamelessly duplicated from the fetchmail public sources
- * for use by the Squid Project under GNU Public License.
- *
- * Update/Maintenance History:
- *
- * 15-Aug-2007 : Copied from fetchmail 6.3.8
- * - added protection around library headers
- *
- * 16-Aug-2007 : Altered configure checks
- * Un-hacked slightly to use system gethostbyname()
- *
- * 06-Oct-2007 : Various fixes to allow the build on MinGW
- *
- * 13-Jan-2015 : Various fixed for C++ and MinGW native build
- *
- * Original License and code follows.
- */
-#include "squid.h"
-
-/*
- * This file is part of libESMTP, a library for submission of RFC 2822
- * formatted electronic mail messages using the SMTP protocol described
- * in RFC 2821.
- *
- * Copyright (C) 2001,2002 Brian Stafford <brian@stafford.uklinux.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/* An emulation of the RFC 2553 / Posix getaddrinfo resolver interface.
- */
-
-#if !HAVE_DECL_GETADDRINFO
-
-/* Need to turn off Posix features in glibc to build this */
-#undef _POSIX_C_SOURCE
-#undef _XOPEN_SOURCE
-
-#if HAVE_STRING_H
-#include <string.h>
-#endif
-#if HAVE_CTYPE_H
-#include <ctype.h>
-#endif
-#if HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#if HAVE_NETDB_H
-#include <netdb.h>
-#endif
-
-static struct addrinfo *
-dup_addrinfo (struct addrinfo *info, void *addr, size_t addrlen) {
- struct addrinfo *ret;
-
- ret = (struct addrinfo *)malloc(sizeof (struct addrinfo));
- if (!ret)
- return nullptr;
- memcpy (ret, info, sizeof (struct addrinfo));
- ret->ai_addr = (struct sockaddr*)malloc(addrlen);
- if (!ret->ai_addr) {
- free (ret);
- return nullptr;
- }
- memcpy (ret->ai_addr, addr, addrlen);
- ret->ai_addrlen = addrlen;
- return ret;
-}
-
-int
-xgetaddrinfo (const char *nodename, const char *servname,
- const struct addrinfo *hints, struct addrinfo **res)
-{
- struct hostent *hp;
- struct servent *servent;
- const char *socktype;
- int port;
- struct addrinfo hint, result;
- struct addrinfo *ai, *sai, *eai;
- char **addrs;
-
- if (!servname && !nodename)
- return EAI_NONAME;
-
- memset (&result, 0, sizeof result);
-
- /* default for hints */
- if (!hints) {
- memset (&hint, 0, sizeof hint);
- hint.ai_family = PF_UNSPEC;
- hints = &hint;
- }
-
- if (!servname)
- port = 0;
- else {
- /* check for tcp or udp sockets only */
- if (hints->ai_socktype == SOCK_STREAM)
- socktype = "tcp";
- else if (hints->ai_socktype == SOCK_DGRAM)
- socktype = "udp";
- else
- return EAI_SERVICE;
- result.ai_socktype = hints->ai_socktype;
-
- /* Note: maintain port in host byte order to make debugging easier */
- if (isdigit (*servname))
- port = strtol (servname, nullptr, 10);
- else if ((servent = getservbyname (servname, socktype)))
- port = ntohs (servent->s_port);
- else
- return EAI_NONAME;
- }
-
- /* if !nodename, refer to the local host for a client or any
- for a server */
- if (!nodename) {
- struct sockaddr_in sin;
-
- /* check protocol family is PF_UNSPEC or PF_INET - could try harder
- for IPv6 but that's more code than I'm prepared to write */
- if (hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET)
- result.ai_family = AF_INET;
- else
- return EAI_FAMILY;
-
- sin.sin_family = result.ai_family;
- sin.sin_port = htons (port);
- if (hints->ai_flags & AI_PASSIVE)
- sin.sin_addr.s_addr = htonl (INADDR_ANY);
- else
- sin.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
- /* Duplicate result and addr and return */
- *res = dup_addrinfo (&result, &sin, sizeof sin);
- return (!*res) ? EAI_MEMORY : 0;
- }
-
- /* If AI_NUMERIC is specified, use inet_pton to translate numbers and
- dots notation. */
- if (hints->ai_flags & AI_NUMERICHOST) {
- struct sockaddr_in sin;
-
- /* check protocol family is PF_UNSPEC or PF_INET */
- if (hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET)
- result.ai_family = AF_INET;
- else
- return EAI_FAMILY;
-
- sin.sin_family = result.ai_family;
- sin.sin_port = htons (port);
- if (inet_pton(result.ai_family, nodename, &sin.sin_addr) != 1)
- return EAI_NONAME;
- sin.sin_addr.s_addr = inet_addr (nodename);
- /* Duplicate result and addr and return */
- *res = dup_addrinfo (&result, &sin, sizeof sin);
- return (!*res) ? EAI_MEMORY : 0;
- }
-
-#if HAVE_H_ERRNO
- h_errno = 0;
-#endif
- errno = 0;
- hp = gethostbyname(nodename);
- if (!hp) {
-#ifdef EAI_SYSTEM
- if (errno != 0) {
- return EAI_SYSTEM;
- }
-#endif
- switch (h_errno) {
- case HOST_NOT_FOUND:
- return EAI_NODATA;
- case NO_DATA:
- return EAI_NODATA;
-#if defined(NO_ADDRESS) && NO_ADDRESS != NO_DATA
- case NO_ADDRESS:
- return EAI_NODATA;
-#endif
- case NO_RECOVERY:
- return EAI_FAIL;
- case TRY_AGAIN:
- return EAI_AGAIN;
- default:
- return EAI_FAIL;
- }
- return EAI_FAIL;
- }
-
- /* Check that the address family is acceptable.
- */
- switch (hp->h_addrtype) {
- case AF_INET:
- if (!(hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET))
- return EAI_FAMILY;
- break;
- case AF_INET6:
- if (!(hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET6))
- return EAI_FAMILY;
- break;
- default:
- return EAI_FAMILY;
- }
-
- /* For each element pointed to by hp, create an element in the
- result linked list. */
- sai = eai = nullptr;
- for (addrs = hp->h_addr_list; *addrs; addrs++) {
- struct sockaddr sa;
- size_t addrlen;
-
- if (hp->h_length < 1)
- continue;
- sa.sa_family = hp->h_addrtype;
- switch (hp->h_addrtype) {
- case AF_INET:
- ((struct sockaddr_in *) &sa)->sin_port = htons (port);
- memcpy (&((struct sockaddr_in *) &sa)->sin_addr,
- *addrs, hp->h_length);
- addrlen = sizeof (struct sockaddr_in);
- break;
- case AF_INET6:
-#if SIN6_LEN
- ((struct sockaddr_in6 *) &sa)->sin6_len = hp->h_length;
-#endif
- ((struct sockaddr_in6 *) &sa)->sin6_port = htons (port);
- memcpy (&((struct sockaddr_in6 *) &sa)->sin6_addr,
- *addrs, hp->h_length);
- addrlen = sizeof (struct sockaddr_in6);
- break;
- default:
- continue;
- }
-
- result.ai_family = hp->h_addrtype;
- ai = dup_addrinfo (&result, &sa, addrlen);
- if (!ai) {
- xfreeaddrinfo (sai);
- return EAI_MEMORY;
- }
- if (!sai)
- sai = ai;
- else
- eai->ai_next = ai;
- eai = ai;
- }
-
- if (!sai) {
- return EAI_NODATA;
- }
-
- if (hints->ai_flags & AI_CANONNAME) {
- sai->ai_canonname = (char *)malloc(strlen(hp->h_name) + 1);
- if (!sai->ai_canonname) {
- xfreeaddrinfo (sai);
- return EAI_MEMORY;
- }
- strcpy (sai->ai_canonname, hp->h_name);
- }
-
- *res = sai;
- return 0;
-}
-
-void
-xfreeaddrinfo (struct addrinfo *ai)
-{
- struct addrinfo *next;
-
- while (ai) {
- next = ai->ai_next;
- if (ai->ai_canonname)
- free (ai->ai_canonname);
- if (ai->ai_addr)
- free (ai->ai_addr);
- free (ai);
- ai = next;
- }
-}
-
-const char *
-xgai_strerror (int ecode)
-{
- static const char *eai_descr[] = {
- "no error",
- "address family for nodename not supported", /* EAI_ADDRFAMILY */
- "temporary failure in name resolution", /* EAI_AGAIN */
- "invalid value for ai_flags", /* EAI_BADFLAGS */
- "non-recoverable failure in name resolution", /* EAI_FAIL */
- "ai_family not supported", /* EAI_FAMILY */
- "memory allocation failure", /* EAI_MEMORY */
- "no address associated with nodename", /* EAI_NODATA */
- "nodename nor servname provided, or not known", /* EAI_NONAME */
- "servname not supported for ai_socktype", /* EAI_SERVICE */
- "ai_socktype not supported", /* EAI_SOCKTYPE */
- "system error returned in errno", /* EAI_SYSTEM */
- "argument buffer overflow", /* EAI_OVERFLOW */
- };
-
- if (ecode < 0 || ecode > (int) (sizeof eai_descr/ sizeof eai_descr[0]))
- return "unknown error";
- return eai_descr[ecode];
-}
-
-#endif /* HAVE_DECL_GETADDRINFO */
-
+++ /dev/null
-/*
- * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
- *
- * Squid software is distributed under GPLv2+ license and includes
- * contributions from numerous individuals and organizations.
- * Please see the COPYING and CONTRIBUTORS files for details.
- */
-
-#ifndef SQUID_COMPAT_GETADDRINFO_H
-#define SQUID_COMPAT_GETADDRINFO_H
-
-/*
- * Shamelessly duplicated from the fetchmail public sources
- * for use by the Squid Project under GNU Public License.
- *
- * Update/Maintenance History:
- *
- * 15-Aug-2007 : Copied from fetchmail 6.3.8
- * - added protection around library headers
- *
- * 16-Aug-2007 : Altered configure checks
- * Un-hacked slightly to use system gethostbyname()
- *
- * Original License and code follows.
- */
-
-/*
- * This file is part of libESMTP, a library for submission of RFC 2822
- * formatted electronic mail messages using the SMTP protocol described
- * in RFC 2821.
- *
- * Copyright (C) 2001,2002 Brian Stafford <brian@stafford.uklinux.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/* Structure and prototypes taken from RFC 2553 */
-
-/* These functions are provided by the OS */
-#if !HAVE_DECL_GETADDRINFO
-
-#ifndef EAI_SYSTEM
-/* Not defined on mingw32. */
-#define EAI_SYSTEM 11 /* System error returned in `errno'. */
-#endif
-#ifndef EAI_OVERFLOW
-/* Not defined on mingw32. */
-#define EAI_OVERFLOW 12 /* Argument buffer overflow. */
-#endif
-
-#ifndef IN_EXPERIMENTAL
-#define IN_EXPERIMENTAL(a) \
- ((((long int) (a)) & 0xf0000000) == 0xf0000000)
-#endif
-
-/* RFC 2553 / Posix resolver */
-SQUIDCEXTERN int xgetaddrinfo (const char *nodename, const char *servname,
- const struct addrinfo *hints, struct addrinfo **res);
-#define getaddrinfo xgetaddrinfo
-
-/* Free addrinfo structure and associated storage */
-SQUIDCEXTERN void xfreeaddrinfo (struct addrinfo *ai);
-#define freeaddrinfo xfreeaddrinfo
-
-/* Convert error return from getaddrinfo() to string */
-SQUIDCEXTERN const char *xgai_strerror (int code);
-#if !defined(gai_strerror)
-#define gai_strerror xgai_strerror
-#endif
-
-#endif /* HAVE_DECL_GETADDRINFO */
-#endif /* SQUID_COMPAT_GETADDRINFO_H */
-
+++ /dev/null
-/*
- * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
- *
- * Squid software is distributed under GPLv2+ license and includes
- * contributions from numerous individuals and organizations.
- * Please see the COPYING and CONTRIBUTORS files for details.
- */
-
-/*
- * Shamelessly duplicated from the fetchmail public sources
- * for use by the Squid Project under GNU Public License.
- *
- * Update/Maintenance History:
- *
- * 16-Aug-2007 : Copied from fetchmail 6.3.8
- * - added protection around library headers
- * - added use of alternative name xgetnameinfo
- * to split from any OS-provided.
- *
- * 06-Oct-2007 : Various fixes to allow the build on MinGW
- * - use srtncpy instead of strlcpy
- * - use xinet_ntop instead of inet_ntop
- * - use SQUIDHOSTNAMELEN instead of MAXHOSTNAMELEN
- *
- * 13-Jan-2015 : Various fixed for C++ and MinGW native build
- *
- * Original License and code follows.
- */
-#include "squid.h"
-
-/* KAME: getnameinfo.c,v 1.72 2005/01/13 04:12:03 itojun Exp */
-
-/*
- * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * Issues to be discussed:
- * - RFC2553 says that we should raise error on short buffer. X/Open says
- * we need to truncate the result. We obey RFC2553 (and X/Open should be
- * modified). ipngwg rough consensus seems to follow RFC2553. RFC3493 says
- * nothing about it, but defines a new error code EAI_OVERFLOW which seems
- * to be intended the code for this case.
- * - What is "local" in NI_NOFQDN? (see comments in the code)
- * - NI_NAMEREQD and NI_NUMERICHOST conflict with each other.
- * - (KAME extension) always attach textual scopeid (fe80::1%lo0), if
- * sin6_scope_id is filled - standardization status?
- * - what should we do if we should do getservbyport("sctp")?
- */
-
-/*
- * Considerations about thread-safeness
- * The code in this file is thread-safe, and so the thread-safeness of
- * getnameinfo() depends on the property of backend functions.
- * - getservbyport() is not thread safe for most systems we are targeting.
- * - getipnodebyaddr() is thread safe. However, many resolver libraries
- * used in the function are not thread safe.
- * - gethostbyaddr() is usually not thread safe.
- */
-
-#if !HAVE_DECL_GETNAMEINFO
-
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#if HAVE_NET_IF_H
-#include <net/if.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#if HAVE_ARPA_NAMESER_H
-#include <arpa/nameser.h>
-#endif
-#if HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#if HAVE_RESOLV_H
-#include <resolv.h>
-#endif
-#if HAVE_STRING_H
-#include <string.h>
-#endif
-#if HAVE_STDDEF_H
-#include <stddef.h>
-#endif
-#if HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-
-#if _SQUID_WINDOWS_
-#undef IN_ADDR
-#include <ws2tcpip.h>
-#endif
-
-static const struct afd {
- int a_af;
- int a_addrlen;
- int a_socklen;
- int a_off;
- int a_portoff;
-} afdl [] = {
-#if INET6
- { PF_INET6, sizeof(struct in6_addr), sizeof(struct sockaddr_in6),
- offsetof(struct sockaddr_in6, sin6_addr),
- offsetof(struct sockaddr_in6, sin6_port)
- },
-#endif
- { PF_INET, sizeof(struct in_addr), sizeof(struct sockaddr_in),
- offsetof(struct sockaddr_in, sin_addr),
- offsetof(struct sockaddr_in, sin_port)
- },
- {0, 0, 0, 0, 0},
-};
-
-#if INET6
-static int ip6_parsenumeric __P((const struct sockaddr *, const char *, char *,
- size_t, int));
-static int ip6_sa2str __P((const struct sockaddr_in6 *, char *, size_t, int));
-#endif
-
-int
-xgetnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags)
-{
- const struct afd *afd;
- struct servent *sp;
- struct hostent *hp;
- unsigned short port;
- int family, i;
- const char *addr;
- uint32_t v4a;
- char numserv[512];
-
- if (!sa)
- return EAI_FAIL;
-
-#if HAVE_SA_LEN /*XXX*/
- if (sa->sa_len != salen)
- return EAI_FAIL;
-#endif
-
- family = sa->sa_family;
- for (i = 0; afdl[i].a_af; i++)
- if (afdl[i].a_af == family) {
- afd = &afdl[i];
- goto found;
- }
- return EAI_FAMILY;
-
-found:
- if (salen != afd->a_socklen)
- return EAI_FAIL;
-
- /* network byte order */
- memcpy(&port, (const char *)sa + afd->a_portoff, sizeof(port));
- addr = (const char *)sa + afd->a_off;
-
- if (!serv || servlen == 0) {
- /*
- * do nothing in this case.
- * in case you are wondering if "&&" is more correct than
- * "||" here: RFC3493 says that !serv OR servlen == 0
- * means that the caller does not want the result.
- */
- } else {
- if (flags & NI_NUMERICSERV)
- sp = nullptr;
- else {
- sp = getservbyport(port,
- (flags & NI_DGRAM) ? "udp" : "tcp");
- }
- if (sp) {
- if (strlen(sp->s_name) + 1 > servlen)
- return EAI_OVERFLOW;
- xstrncpy(serv, sp->s_name, servlen);
- } else {
- snprintf(numserv, sizeof(numserv), "%u", ntohs(port));
- if (strlen(numserv) + 1 > servlen)
- return EAI_OVERFLOW;
- xstrncpy(serv, numserv, servlen);
- }
- }
-
- switch (sa->sa_family) {
- case AF_INET:
- v4a = (uint32_t)
- ntohl(((const struct sockaddr_in *)sa)->sin_addr.s_addr);
- if (IN_MULTICAST(v4a) || IN_EXPERIMENTAL(v4a))
- flags |= NI_NUMERICHOST;
- v4a >>= IN_CLASSA_NSHIFT;
- if (v4a == 0)
- flags |= NI_NUMERICHOST;
- break;
-#if INET6
- case AF_INET6: {
- const struct sockaddr_in6 *sin6;
- sin6 = (const struct sockaddr_in6 *)sa;
- switch (sin6->sin6_addr.s6_addr[0]) {
- case 0x00:
- if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr))
- ;
- else if (IN6_IS_ADDR_LOOPBACK(&sin6->sin6_addr))
- ;
- else
- flags |= NI_NUMERICHOST;
- break;
- default:
- if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr))
- flags |= NI_NUMERICHOST;
- else if (IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr))
- flags |= NI_NUMERICHOST;
- break;
- }
- }
- break;
-#endif
- }
- if (!host || hostlen == 0) {
- /*
- * do nothing in this case.
- * in case you are wondering if "&&" is more correct than
- * "||" here: RFC3493 says that !host or hostlen == 0
- * means that the caller does not want the result.
- */
- } else if (flags & NI_NUMERICHOST) {
- /* NUMERICHOST and NAMEREQD conflicts with each other */
- if (flags & NI_NAMEREQD)
- return EAI_NONAME;
-
- goto numeric;
- } else {
-#if USE_GETIPNODEBY
- int h_error = 0;
- hp = getipnodebyaddr(addr, afd->a_addrlen, afd->a_af, &h_error);
-#else
- hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af);
-#endif
-
- if (hp) {
- if (strlen(hp->h_name) + 1 > hostlen) {
-#if USE_GETIPNODEBY
- freehostent(hp);
-#endif
- return EAI_OVERFLOW;
- }
- xstrncpy(host, hp->h_name, hostlen);
-#if USE_GETIPNODEBY
- freehostent(hp);
-#endif
- } else {
- if (flags & NI_NAMEREQD)
- return EAI_NONAME;
-
-numeric:
- switch (afd->a_af) {
-#if INET6
- case AF_INET6: {
- int error;
-
- if ((error = ip6_parsenumeric(sa, addr, host,
- hostlen,
- flags)) != 0)
- return(error);
- break;
- }
-#endif
- default:
- if (!inet_ntop(afd->a_af, addr, host, hostlen))
- return EAI_SYSTEM;
- break;
- }
- }
- }
- return(0);
-}
-
-#if INET6
-static int
-ip6_parsenumeric(sa, addr, host, hostlen, flags)
-const struct sockaddr *sa;
-const char *addr;
-char *host;
-size_t hostlen;
-int flags;
-{
- int numaddrlen;
- char numaddr[512];
-
- if (!inet_ntop(AF_INET6, addr, numaddr, sizeof(numaddr)))
- return EAI_SYSTEM;
-
- numaddrlen = strlen(numaddr);
- if (numaddrlen + 1 > hostlen) /* don't forget terminator */
- return EAI_OVERFLOW;
- xstrncpy(host, numaddr, hostlen);
-
- if (((const struct sockaddr_in6 *)sa)->sin6_scope_id) {
- char zonebuf[SQUIDHOSTNAMELEN];
- int zonelen;
-
- zonelen = ip6_sa2str(
- (const struct sockaddr_in6 *)(const void *)sa,
- zonebuf, sizeof(zonebuf), flags);
- if (zonelen < 0)
- return EAI_OVERFLOW;
- if (zonelen + 1 + numaddrlen + 1 > hostlen)
- return EAI_OVERFLOW;
-
- /* construct <numeric-addr><delim><zoneid> */
- memcpy(host + numaddrlen + 1, zonebuf,
- (size_t)zonelen);
- host[numaddrlen] = SCOPE_DELIMITER;
- host[numaddrlen + 1 + zonelen] = '\0';
- }
-
- return 0;
-}
-
-/* ARGSUSED */
-static int
-ip6_sa2str(sa6, buf, bufsiz, flags)
-const struct sockaddr_in6 *sa6;
-char *buf;
-size_t bufsiz;
-int flags;
-{
- unsigned int ifindex;
- const struct in6_addr *a6;
- int n;
-
- ifindex = (unsigned int)sa6->sin6_scope_id;
- a6 = &sa6->sin6_addr;
-
-#if NI_NUMERICSCOPE
- if ((flags & NI_NUMERICSCOPE) != 0) {
- n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id);
- if (n < 0 || n >= bufsiz)
- return -1;
- else
- return n;
- }
-#endif
-
- /* if_indextoname() does not take buffer size. not a good api... */
- if ((IN6_IS_ADDR_LINKLOCAL(a6) || IN6_IS_ADDR_MC_LINKLOCAL(a6) ||
- IN6_IS_ADDR_MC_NODELOCAL(a6)) && bufsiz >= IF_NAMESIZE) {
- char *p = if_indextoname(ifindex, buf);
- if (p)
- return (strlen(p));
- }
-
- /* last resort */
- n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id);
- if (n < 0 || n >= bufsiz)
- return -1;
- else
- return n;
-}
-#endif /* INET6 */
-#endif /* HAVE_DECL_GETNAMEINFO */
-
+++ /dev/null
-/*
- * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
- *
- * Squid software is distributed under GPLv2+ license and includes
- * contributions from numerous individuals and organizations.
- * Please see the COPYING and CONTRIBUTORS files for details.
- */
-
-#ifndef SQUID_COMPAT_GETNAMEINFO_H
-#define SQUID_COMPAT_GETNAMEINFO_H
-
-#if !HAVE_DECL_GETNAMEINFO
-
-// RFC 2553 / Posix resolver
-// Reconstructed from KAME getnameinfo.c
-SQUIDCEXTERN int xgetnameinfo(const struct sockaddr *sa,
- socklen_t salen,
- char *host,
- size_t hostlen,
- char *serv,
- size_t servlen,
- int flags );
-#define getnameinfo xgetnameinfo
-
-#endif /* HAVE_DECL_GETNAMEINFO */
-#endif /* SQUID_COMPAT_GETNAMEINFO_H */
-
+++ /dev/null
-/*
- * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
- *
- * Squid software is distributed under GPLv2+ license and includes
- * contributions from numerous individuals and organizations.
- * Please see the COPYING and CONTRIBUTORS files for details.
- */
-
-/*
- * Shamelessly duplicated from the bind9 public sources
- * for use by the Squid Project under ISC written permission
- * included "as found" below.
- *
- * Update/Maintenance History:
- *
- * 24-Sep-2007 : Copied from bind 9.3.3
- * - Added protection around library headers
- * - Altered configure checks
- * - Un-hacked slightly to use system gethostbyname()
- *
- * 06-Oct-2007 : Various fixes to allow the build on MinGW
- *
- * 28-Oct-2007: drop some dead code. now tested working without.
- *
- * 04-Nov-2010: drop SPRINTF casting macro
- *
- * 13-Jan-2015 : Various fixed for C++ and MinGW native build
- *
- * Original License and code follows.
- */
-
-#include "squid.h"
-
-#if !HAVE_DECL_INET_NTOP
-
-/*
- * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
- * Copyright (c) 1996-1999 by Internet Software Consortium.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
- * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char rcsid[] = "inet_ntop.c,v 1.1.2.1.8.2 2005/11/03 23:08:40 marka Exp";
-#endif /* LIBC_SCCS and not lint */
-
-#if HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#if HAVE_ARPA_NAMESER_H
-#include <arpa/nameser.h>
-#endif
-
-#if HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#if HAVE_STRING_H
-#include <string.h>
-#endif
-
-#if ! defined(NS_INADDRSZ)
-#define NS_INADDRSZ 4
-#endif
-#if ! defined(NS_IN6ADDRSZ)
-#define NS_IN6ADDRSZ 16
-#endif
-#if ! defined(NS_INT16SZ)
-#define NS_INT16SZ 2
-#endif
-
-/*
- * WARNING: Don't even consider trying to compile this on a system where
- * sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX.
- */
-
-static const char *inet_ntop4 (const u_char *src, char *dst, size_t size);
-static const char *inet_ntop6 (const u_char *src, char *dst, size_t size);
-
-/* char *
- * inet_ntop(af, src, dst, size)
- * convert a network format address to presentation format.
- * return:
- * pointer to presentation format address (`dst'), or nullptr (see errno).
- * author:
- * Paul Vixie, 1996.
- */
-const char *
-xinet_ntop(int af, const void *src, char *dst, size_t size)
-{
- switch (af) {
- case AF_INET:
- return (inet_ntop4((const u_char*)src, dst, size));
- case AF_INET6:
- return (inet_ntop6((const u_char*)src, dst, size));
- default:
- errno = EAFNOSUPPORT;
- return nullptr;
- }
- /* NOTREACHED */
-}
-
-/* const char *
- * inet_ntop4(src, dst, size)
- * format an IPv4 address
- * return:
- * `dst' (as a const)
- * notes:
- * (1) uses no statics
- * (2) takes a u_char* not an in_addr as input
- * author:
- * Paul Vixie, 1996.
- */
-static const char *
-inet_ntop4(const u_char *src, char *dst, size_t size)
-{
- static const char fmt[] = "%u.%u.%u.%u";
- char tmp[sizeof("255.255.255.255")+1];
-
- if ((size_t)snprintf(tmp, min(sizeof(tmp),size), fmt, src[0], src[1], src[2], src[3]) >= size) {
- errno = ENOSPC;
- return nullptr;
- }
- strcpy(dst, tmp);
- return (dst);
-}
-
-/* const char *
- * inet_ntop6(src, dst, size)
- * convert IPv6 binary address into presentation (printable) format
- * author:
- * Paul Vixie, 1996.
- */
-static const char *
-inet_ntop6(const u_char *src, char *dst, size_t size)
-{
- /*
- * Note that int32_t and int16_t need only be "at least" large enough
- * to contain a value of the specified size. On some systems, like
- * Crays, there is no such thing as an integer variable with 16 bits.
- * Keep this in mind if you think this function should have been coded
- * to use pointer overlays. All the world's not a VAX.
- */
- char tmp[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"], *tp;
- struct { int base, len; } best, cur;
- u_int words[NS_IN6ADDRSZ / NS_INT16SZ];
- int i;
-
- /*
- * Preprocess:
- * Copy the input (bytewise) array into a wordwise array.
- * Find the longest run of 0x00's in src[] for :: shorthanding.
- */
- memset(words, '\0', sizeof words);
- for (i = 0; i < NS_IN6ADDRSZ; i++)
- words[i / 2] |= (src[i] << ((1 - (i % 2)) << 3));
- best.base = -1;
- best.len = 0;
- cur.base = -1;
- cur.len = 0;
- for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++) {
- if (words[i] == 0) {
- if (cur.base == -1)
- cur.base = i, cur.len = 1;
- else
- cur.len++;
- } else {
- if (cur.base != -1) {
- if (best.base == -1 || cur.len > best.len)
- best = cur;
- cur.base = -1;
- }
- }
- }
- if (cur.base != -1) {
- if (best.base == -1 || cur.len > best.len)
- best = cur;
- }
- if (best.base != -1 && best.len < 2)
- best.base = -1;
-
- /*
- * Format the result.
- */
- tp = tmp;
- for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++) {
- /* Are we inside the best run of 0x00's? */
- if (best.base != -1 && i >= best.base &&
- i < (best.base + best.len)) {
- if (i == best.base)
- *tp++ = ':';
- continue;
- }
- /* Are we following an initial run of 0x00s or any real hex? */
- if (i != 0)
- *tp++ = ':';
- /* Is this address an encapsulated IPv4? */
- if (i == 6 && best.base == 0 && (best.len == 6 ||
- (best.len == 7 && words[7] != 0x0001) ||
- (best.len == 5 && words[5] == 0xffff))) {
- if (!inet_ntop4(src+12, tp, sizeof tmp - (tp - tmp)))
- return nullptr;
- tp += strlen(tp);
- break;
- }
- tp += snprintf(tp, (tmp + sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") - tp), "%x", words[i]);
- }
- /* Was it a trailing run of 0x00's? */
- if (best.base != -1 && (best.base + best.len) ==
- (NS_IN6ADDRSZ / NS_INT16SZ))
- *tp++ = ':';
- *tp++ = '\0';
-
- /*
- * Check for overflow, copy, and we're done.
- */
- if ((size_t)(tp - tmp) > size) {
- errno = ENOSPC;
- return nullptr;
- }
- strcpy(dst, tmp);
- return (dst);
-}
-
-#endif /* HAVE_DECL_INET_NTOP */
-
+++ /dev/null
-/*
- * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
- *
- * Squid software is distributed under GPLv2+ license and includes
- * contributions from numerous individuals and organizations.
- * Please see the COPYING and CONTRIBUTORS files for details.
- */
-
-#ifndef SQUID_COMPAT_INET_NTOP_H
-#define SQUID_COMPAT_INET_NTOP_H
-
-/* Use the system provided version where possible */
-#if !HAVE_DECL_INET_NTOP
-
-/* char *
-* inet_ntop(af, src, dst, size)
-* convert a network format address to presentation format.
-* return:
-* pointer to presentation format address (`dst'), or NULL (see errno).
-* author:
-* Paul Vixie, 1996.
-*/
-SQUIDCEXTERN const char * xinet_ntop(int af, const void *src, char *dst, size_t size);
-#ifndef inet_ntop
-#define inet_ntop xinet_ntop
-#endif
-
-#endif /* HAVE_DECL_INET_NTOP */
-#endif /* SQUID_COMPAT_INET_NTOP_H */
-
+++ /dev/null
-/*
- * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
- *
- * Squid software is distributed under GPLv2+ license and includes
- * contributions from numerous individuals and organizations.
- * Please see the COPYING and CONTRIBUTORS files for details.
- */
-
-/*
- * Shamelessly duplicated from the bind9 public sources
- * for use by the Squid Project under ISC written permission
- * included "as found" below.
- *
- * Update/Maintenance History:
- *
- * 24-Sep-2007 : Copied from bind 9.3.3
- * - Added protection around library headers
- * - Altered configure checks to import
- *
- * 06-Oct-2007 : Various fixes to allow the build on MinGW
- *
- * 28-Oct-2007: drop some dead code. now tested working without.
- *
- * 13-Jan-2015 : Various fixed for C++ and MinGW native build
- *
- * Original License and code follows.
- */
-
-#include "squid.h"
-
-#if !HAVE_DECL_INET_PTON
-
-/*
- * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
- * Copyright (c) 1996,1999 by Internet Software Consortium.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
- * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char rcsid[] = "inet_pton.c,v 1.2.206.2 2005/07/28 07:43:18 marka Exp";
-#endif /* LIBC_SCCS and not lint */
-
-#if HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#if HAVE_ARPA_NAMESER_H
-#include <arpa/nameser.h>
-#endif
-#if HAVE_STRING_H
-#include <string.h>
-#endif
-#if HAVE_ERRNO_H
-#include <errno.h>
-#endif
-
-#if ! defined(NS_INADDRSZ)
-#define NS_INADDRSZ 4
-#endif
-#if ! defined(NS_IN6ADDRSZ)
-#define NS_IN6ADDRSZ 16
-#endif
-#if ! defined(NS_INT16SZ)
-#define NS_INT16SZ 2
-#endif
-
-/*
- * WARNING: Don't even consider trying to compile this on a system where
- * sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX.
- */
-
-static int inet_pton4 (const char *src, u_char *dst);
-static int inet_pton6 (const char *src, u_char *dst);
-
-/* int
- * inet_pton(af, src, dst)
- * convert from presentation format (which usually means ASCII printable)
- * to network format (which is usually some kind of binary format).
- * return:
- * 1 if the address was valid for the specified address family
- * 0 if the address wasn't valid (`dst' is untouched in this case)
- * -1 if some other error occurred (`dst' is untouched in this case, too)
- * author:
- * Paul Vixie, 1996.
- */
-int
-xinet_pton(int af, const char *src, void *dst)
-{
- switch (af) {
- case AF_INET:
- return (inet_pton4(src, (u_char*)dst));
- case AF_INET6:
- return (inet_pton6(src, (u_char*)dst));
- default:
- errno = EAFNOSUPPORT;
- return (-1);
- }
- /* NOTREACHED */
-}
-
-/* int
- * inet_pton4(src, dst)
- * like inet_aton() but without all the hexadecimal and shorthand.
- * return:
- * 1 if `src' is a valid dotted quad, else 0.
- * notice:
- * does not touch `dst' unless it's returning 1.
- * author:
- * Paul Vixie, 1996.
- */
-static int
-inet_pton4(const char *src, u_char *dst)
-{
- static const char digits[] = "0123456789";
- int saw_digit, octets, ch;
- u_char tmp[NS_INADDRSZ], *tp;
-
- saw_digit = 0;
- octets = 0;
- *(tp = tmp) = 0;
- while ((ch = *src++) != '\0') {
- const char *pch;
-
- if ((pch = strchr(digits, ch))) {
- u_int nw = *tp * 10 + (pch - digits);
-
- if (saw_digit && *tp == 0)
- return (0);
- if (nw > 255)
- return (0);
- *tp = nw;
- if (!saw_digit) {
- if (++octets > 4)
- return (0);
- saw_digit = 1;
- }
- } else if (ch == '.' && saw_digit) {
- if (octets == 4)
- return (0);
- *++tp = 0;
- saw_digit = 0;
- } else
- return (0);
- }
- if (octets < 4)
- return (0);
- memcpy(dst, tmp, NS_INADDRSZ);
- return (1);
-}
-
-/* int
- * inet_pton6(src, dst)
- * convert presentation level address to network order binary form.
- * return:
- * 1 if `src' is a valid [RFC1884 2.2] address, else 0.
- * notice:
- * (1) does not touch `dst' unless it's returning 1.
- * (2) :: in a full address is silently ignored.
- * credit:
- * inspired by Mark Andrews.
- * author:
- * Paul Vixie, 1996.
- */
-static int
-inet_pton6(const char *src, u_char *dst)
-{
- static const char xdigits_l[] = "0123456789abcdef",
- xdigits_u[] = "0123456789ABCDEF";
- u_char tmp[NS_IN6ADDRSZ], *tp, *endp, *colonp;
- const char *xdigits, *curtok;
- int ch, seen_xdigits;
- u_int val;
-
- memset((tp = tmp), '\0', NS_IN6ADDRSZ);
- endp = tp + NS_IN6ADDRSZ;
- colonp = nullptr;
- /* Leading :: requires some special handling. */
- if (*src == ':')
- if (*++src != ':')
- return (0);
- curtok = src;
- seen_xdigits = 0;
- val = 0;
- while ((ch = *src++) != '\0') {
- const char *pch;
-
- if (!(pch = strchr((xdigits = xdigits_l), ch)))
- pch = strchr((xdigits = xdigits_u), ch);
- if (pch) {
- val <<= 4;
- val |= (pch - xdigits);
- if (++seen_xdigits > 4)
- return (0);
- continue;
- }
- if (ch == ':') {
- curtok = src;
- if (!seen_xdigits) {
- if (colonp)
- return (0);
- colonp = tp;
- continue;
- } else if (*src == '\0') {
- return (0);
- }
- if (tp + NS_INT16SZ > endp)
- return (0);
- *tp++ = (u_char) (val >> 8) & 0xff;
- *tp++ = (u_char) val & 0xff;
- seen_xdigits = 0;
- val = 0;
- continue;
- }
- if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) &&
- inet_pton4(curtok, tp) > 0) {
- tp += NS_INADDRSZ;
- seen_xdigits = 0;
- break; /* '\0' was seen by inet_pton4(). */
- }
- return (0);
- }
- if (seen_xdigits) {
- if (tp + NS_INT16SZ > endp)
- return (0);
- *tp++ = (u_char) (val >> 8) & 0xff;
- *tp++ = (u_char) val & 0xff;
- }
- if (colonp) {
- /*
- * Since some memmove()'s erroneously fail to handle
- * overlapping regions, we'll do the shift by hand.
- */
- const int n = tp - colonp;
- int i;
-
- if (tp == endp)
- return (0);
- for (i = 1; i <= n; i++) {
- endp[- i] = colonp[n - i];
- colonp[n - i] = 0;
- }
- tp = endp;
- }
- if (tp != endp)
- return (0);
- memcpy(dst, tmp, NS_IN6ADDRSZ);
- return (1);
-}
-
-#endif /* HAVE_DECL_INET_PTON */
-
+++ /dev/null
-/*
- * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
- *
- * Squid software is distributed under GPLv2+ license and includes
- * contributions from numerous individuals and organizations.
- * Please see the COPYING and CONTRIBUTORS files for details.
- */
-
-#ifndef SQUID_COMPAT_INET_PTON_H
-#define SQUID_COMPAT_INET_PTON_H
-
-/* Use the system provided version where possible */
-#if !HAVE_DECL_INET_PTON
-
-/* int
-* inet_pton(af, src, dst)
-* convert from presentation format (which usually means ASCII printable)
-* to network format (which is usually some kind of binary format).
-* return:
-* 1 if the address was valid for the specified address family
-* 0 if the address wasn't valid (`dst' is untouched in this case)
-* -1 if some other error occurred (`dst' is untouched in this case, too)
-* author:
-* Paul Vixie, 1996.
-*/
-SQUIDCEXTERN int xinet_pton(int af, const char *src, void *dst);
-#ifndef inet_pton
-#define inet_pton xinet_pton
-#endif
-
-#endif /* HAVE_DECL_INET_PTON */
-#endif /* SQUID_COMPAT_INET_PTON_H */
-
}
#define getsockopt(s,l,o,v,n) Squid::getsockopt(s,l,o,v,n)
-#if HAVE_DECL_INETNTOPA || HAVE_DECL_INET_NTOP
-inline char *
-inet_ntop(int af, const void *src, char *dst, size_t size)
-{
-#if HAVE_DECL_INETNTOPA
- return (char*)InetNtopA(af, const_cast<void*>(src), dst, size);
-#else // HAVE_DECL_INET_NTOP
- return ::inet_ntop(af, src, dst, size);
-#endif
-}
-#define inet_ntop(a,s,d,l) Squid::inet_ntop(a,s,d,l)
-#endif // let compat/inet_ntop.h deal with it
-
-#if HAVE_DECL_INETPTONA || HAVE_DECL_INET_PTON
-inline char *
-inet_pton(int af, const void *src, char *dst)
-{
-#if HAVE_DECL_INETPTONA
- return (char*)InetPtonA(af, const_cast<void*>(src), dst);
-#else // HAVE_DECL_INET_PTON
- return ::inet_pton(af, src, dst);
-#endif
-}
-#define inet_pton(a,s,d) Squid::inet_pton(a,s,d)
-#endif // let compat/inet_pton.h deal with it
-
/* Simple ioctl() emulation */
inline int
ioctl(int s, int c, void * a)
+++ /dev/null
-/*
- * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
- *
- * Squid software is distributed under GPLv2+ license and includes
- * contributions from numerous individuals and organizations.
- * Please see the COPYING and CONTRIBUTORS files for details.
- */
-
-/*
- * Copied from OpenSolaris 10 public sources
- * http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/head/netdb.h
- */
-/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
-/* All Rights Reserved */
-
-/*
- * BIND 4.9.3:
- *
- * Copyright (c) 1980, 1983, 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * -
- * Portions Copyright (c) 1993 by Digital Equipment Corporation.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies, and that
- * the name of Digital Equipment Corporation not be used in advertising or
- * publicity pertaining to distribution of the document or software without
- * specific, written prior permission.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
- * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- * --Copyright--
- *
- * End BIND 4.9.3
- */
-
-/*
- * Structures returned by network data base library.
- * All addresses are supplied in host order, and
- * returned in network order (suitable for use in system calls).
- */
-
-#ifndef SQUID_COMPAT_OS_OPENSOLARIS_10_NETDB_H
-#define SQUID_COMPAT_OS_OPENSOLARIS_10_NETDB_H
-
-#include <sys/types.h>
-#include <netinet/in.h>
-#if !defined(_XPG4_2) || defined(_XPG6) || defined(__EXTENSIONS__)
-#include <sys/socket.h>
-#endif /* !defined(_XPG4_2) || defined(_XPG6) || defined(__EXTENSIONS__) */
-#include <sys/feature_tests.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define _PATH_HEQUIV "/etc/hosts.equiv"
-#define _PATH_HOSTS "/etc/hosts"
-#define _PATH_IPNODES "/etc/inet/ipnodes"
-#define _PATH_IPSECALGS "/etc/inet/ipsecalgs"
-#define _PATH_NETMASKS "/etc/netmasks"
-#define _PATH_NETWORKS "/etc/networks"
-#define _PATH_PROTOCOLS "/etc/protocols"
-#define _PATH_SERVICES "/etc/services"
-
-struct hostent {
- char *h_name; /* official name of host */
- char **h_aliases; /* alias list */
- int h_addrtype; /* host address type */
- int h_length; /* length of address */
- char **h_addr_list; /* list of addresses from name server */
-#define h_addr h_addr_list[0] /* address, for backward compatibility */
-};
-
-/*
- * addrinfo introduced with IPv6 for Protocol-Independent Hostname
- * and Service Name Translation.
- */
-
-#if !defined(_XPG4_2) || defined(_XPG6) || defined(__EXTENSIONS__)
-struct addrinfo {
- int ai_flags; /* AI_PASSIVE, AI_CANONNAME, ... */
- int ai_family; /* PF_xxx */
- int ai_socktype; /* SOCK_xxx */
- int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
-#ifdef __sparcv9
- int _ai_pad; /* for backwards compat with old size_t */
-#endif /* __sparcv9 */
- socklen_t ai_addrlen;
- char *ai_canonname; /* canonical name for hostname */
- struct sockaddr *ai_addr; /* binary address */
- struct addrinfo *ai_next; /* next structure in linked list */
-};
-
-/* addrinfo flags */
-#define AI_PASSIVE 0x0008 /* intended for bind() + listen() */
-#define AI_CANONNAME 0x0010 /* return canonical version of host */
-#define AI_NUMERICHOST 0x0020 /* use numeric node address string */
-#define AI_NUMERICSERV 0x0040 /* servname is assumed numeric */
-
-/* getipnodebyname() flags */
-#define AI_V4MAPPED 0x0001 /* IPv4 mapped addresses if no IPv6 */
-#define AI_ALL 0x0002 /* IPv6 and IPv4 mapped addresses */
-#define AI_ADDRCONFIG 0x0004 /* AAAA or A records only if IPv6/IPv4 cnfg'd */
-
-/*
- * These were defined in RFC 2553 but not SUSv3
- * or RFC 3493 which obsoleted 2553.
- */
-#if !defined(_XPG6) || defined(__EXTENSIONS__)
-#define AI_DEFAULT (AI_V4MAPPED | AI_ADDRCONFIG)
-
-/* addrinfo errors */
-#define EAI_ADDRFAMILY 1 /* address family not supported */
-#define EAI_NODATA 7 /* no address */
-#endif /* !defined(_XPG6) || defined(__EXTENSIONS__) */
-#define EAI_AGAIN 2 /* DNS temporary failure */
-#define EAI_BADFLAGS 3 /* invalid ai_flags */
-#define EAI_FAIL 4 /* DNS non-recoverable failure */
-#define EAI_FAMILY 5 /* ai_family not supported */
-#define EAI_MEMORY 6 /* memory allocation failure */
-#define EAI_NONAME 8 /* host/servname not known */
-#define EAI_SERVICE 9 /* servname not supported for ai_socktype */
-#define EAI_SOCKTYPE 10 /* ai_socktype not supported */
-#define EAI_SYSTEM 11 /* system error in errno */
-#define EAI_OVERFLOW 12 /* argument buffer overflow */
-#define EAI_PROTOCOL 13
-#define EAI_MAX 14
-
-/* getnameinfo flags */
-#define NI_NOFQDN 0x0001
-#define NI_NUMERICHOST 0x0002 /* return numeric form of address */
-#define NI_NAMEREQD 0x0004 /* request DNS name */
-#define NI_NUMERICSERV 0x0008
-#define NI_DGRAM 0x0010
-
-#if !defined(_XPG6) || defined(__EXTENSIONS__)
-/* Not listed in any standards document */
-#define NI_WITHSCOPEID 0x0020
-#define NI_NUMERICSCOPE 0x0040
-
-/* getnameinfo max sizes as defined in RFC 2553 obsoleted in RFC 3493 */
-#define NI_MAXHOST 1025
-#define NI_MAXSERV 32
-#endif /* !defined(_XPG6) || defined(__EXTENSIONS__) */
-#endif /* !defined(_XPG4_2) || defined(_XPG6) || defined(__EXTENSIONS__) */
-
-/*
- * Scope delimit character
- */
-#define SCOPE_DELIMITER '%'
-
-/*
- * Algorithm entry for /etc/inet/ipsecalgs which defines IPsec protocols
- * and algorithms.
- */
-#if !defined(_XPG4_2) || defined(__EXTENSIONS__)
-typedef struct ipsecalgent {
- char **a_names; /* algorithm names */
- int a_proto_num; /* protocol number */
- int a_alg_num; /* algorithm number */
- char *a_mech_name; /* encryption framework mechanism name */
- int *a_block_sizes; /* supported block sizes */
- int *a_key_sizes; /* supported key sizes */
- int a_key_increment; /* key size increment */
- int *a_mech_params; /* mechanism specific parameters */
- int a_alg_flags; /* algorithm flags */
-} ipsecalgent_t;
-
-/* well-known IPsec protocol numbers */
-
-#define IPSEC_PROTO_AH 2
-#define IPSEC_PROTO_ESP 3
-#endif /* !defined(_XPG4_2) || defined(__EXTENSIONS__) */
-
-/*
- * Assumption here is that a network number
- * fits in 32 bits -- probably a poor one.
- */
-struct netent {
- char *n_name; /* official name of net */
- char **n_aliases; /* alias list */
- int n_addrtype; /* net address type */
- in_addr_t n_net; /* network # */
-};
-
-struct protoent {
- char *p_name; /* official protocol name */
- char **p_aliases; /* alias list */
- int p_proto; /* protocol # */
-};
-
-struct servent {
- char *s_name; /* official service name */
- char **s_aliases; /* alias list */
- int s_port; /* port # */
- char *s_proto; /* protocol to use */
-};
-
-#ifdef __STDC__
-#if !defined(_XPG4_2) || defined(__EXTENSIONS__)
-struct hostent *gethostbyname_r
-(const char *, struct hostent *, char *, int, int *h_errnop);
-struct hostent *gethostbyaddr_r
-(const char *, int, int, struct hostent *, char *, int, int *h_errnop);
-struct hostent *getipnodebyname(const char *, int, int, int *);
-struct hostent *getipnodebyaddr(const void *, size_t, int, int *);
-void freehostent(struct hostent *);
-struct hostent *gethostent_r(struct hostent *, char *, int, int *h_errnop);
-
-struct servent *getservbyname_r
-(const char *name, const char *, struct servent *, char *, int);
-struct servent *getservbyport_r
-(int port, const char *, struct servent *, char *, int);
-struct servent *getservent_r(struct servent *, char *, int);
-
-struct netent *getnetbyname_r
-(const char *, struct netent *, char *, int);
-struct netent *getnetbyaddr_r(long, int, struct netent *, char *, int);
-struct netent *getnetent_r(struct netent *, char *, int);
-
-struct protoent *getprotobyname_r
-(const char *, struct protoent *, char *, int);
-struct protoent *getprotobynumber_r
-(int, struct protoent *, char *, int);
-struct protoent *getprotoent_r(struct protoent *, char *, int);
-
-int getnetgrent_r(char **, char **, char **, char *, int);
-int innetgr(const char *, const char *, const char *, const char *);
-#endif /* !defined(_XPG4_2) || defined(__EXTENSIONS__) */
-
-/* Old interfaces that return a pointer to a static area; MT-unsafe */
-struct hostent *gethostbyname(const char *);
-struct hostent *gethostent(void);
-struct netent *getnetbyaddr(in_addr_t, int);
-struct netent *getnetbyname(const char *);
-struct netent *getnetent(void);
-struct protoent *getprotobyname(const char *);
-struct protoent *getprotobynumber(int);
-struct protoent *getprotoent(void);
-struct servent *getservbyname(const char *, const char *);
-struct servent *getservbyport(int, const char *);
-struct servent *getservent(void);
-
-/* gethostbyaddr() second argument is a size_t only in unix95/unix98 */
-#if !defined(_XPG4_2) || defined(_XPG6) || defined(__EXTENSIONS__)
-struct hostent *gethostbyaddr(const void *, socklen_t, int);
-#else
-struct hostent *gethostbyaddr(const void *, size_t, int);
-#endif /* !defined(_XPG4_2) || defined(_XPG6) || defined(__EXTENSIONS__) */
-
-#if !defined(_XPG4_2) || defined(__EXTENSIONS__)
-int endhostent(void);
-int endnetent(void);
-int endprotoent(void);
-int endservent(void);
-int sethostent(int);
-int setnetent(int);
-int setprotoent(int);
-int setservent(int);
-#else
-void endhostent(void);
-void endnetent(void);
-void endprotoent(void);
-void endservent(void);
-void sethostent(int);
-void setnetent(int);
-void setprotoent(int);
-void setservent(int);
-#endif /* !defined(_XPG4_2) || defined(__EXTENSIONS__) */
-
-#if !defined(_XPG4_2) || defined(_XPG6) || defined(__EXTENSIONS__)
-
-#ifdef _XPG6
-#ifdef __PRAGMA_REDEFINE_EXTNAME
-#pragma redefine_extname getaddrinfo __xnet_getaddrinfo
-#else /* __PRAGMA_REDEFINE_EXTNAME */
-#define getaddrinfo __xnet_getaddrinfo
-#endif /* __PRAGMA_REDEFINE_EXTNAME */
-#endif /* _XPG6 */
-
-int getaddrinfo(const char *_RESTRICT_KYWD1,
- const char *_RESTRICT_KYWD2,
- const struct addrinfo *_RESTRICT_KYWD3,
- struct addrinfo **_RESTRICT_KYWD4);
-void freeaddrinfo(struct addrinfo *);
-const char *gai_strerror(int);
-int getnameinfo(const struct sockaddr *_RESTRICT_KYWD1,
- socklen_t, char *_RESTRICT_KYWD2, socklen_t,
- char *_RESTRICT_KYWD3, socklen_t, int);
-#endif /* !defined(_XPG4_2) || defined(_XPG6) || defined(__EXTENSIONS__) */
-
-#if !defined(_XPG4_2) || defined(__EXTENSIONS__)
-int getnetgrent(char **, char **, char **);
-int setnetgrent(const char *);
-int endnetgrent(void);
-int rcmd(char **, unsigned short,
- const char *, const char *, const char *, int *);
-int rcmd_af(char **, unsigned short,
- const char *, const char *, const char *, int *, int);
-int rresvport_af(int *, int);
-int rresvport_addr(int *, struct sockaddr_storage *);
-int rexec(char **, unsigned short,
- const char *, const char *, const char *, int *);
-int rexec_af(char **, unsigned short,
- const char *, const char *, const char *, int *, int);
-int rresvport(int *);
-int ruserok(const char *, int, const char *, const char *);
-/* BIND */
-struct hostent *gethostbyname2(const char *, int);
-void herror(const char *);
-const char *hstrerror(int);
-/* End BIND */
-
-/* IPsec algorithm prototype definitions */
-struct ipsecalgent *getipsecalgbyname(const char *, int, int *);
-struct ipsecalgent *getipsecalgbynum(int, int, int *);
-int getipsecprotobyname(const char *doi_name);
-char *getipsecprotobynum(int doi_domain);
-void freeipsecalgent(struct ipsecalgent *ptr);
-/* END IPsec algorithm prototype definitions */
-
-#endif /* !defined(_XPG4_2) || defined(__EXTENSIONS__) */
-#else /* __STDC__ */
-struct hostent *gethostbyname_r();
-struct hostent *gethostbyaddr_r();
-struct hostent *getipnodebyname();
-struct hostent *getipnodebyaddr();
-void freehostent();
-struct hostent *gethostent_r();
-struct servent *getservbyname_r();
-struct servent *getservbyport_r();
-struct servent *getservent_r();
-struct netent *getnetbyname_r();
-struct netent *getnetbyaddr_r();
-struct netent *getnetent_r();
-struct protoent *getprotobyname_r();
-struct protoent *getprotobynumber_r();
-struct protoent *getprotoent_r();
-int getnetgrent_r();
-int innetgr();
-
-/* Old interfaces that return a pointer to a static area; MT-unsafe */
-struct hostent *gethostbyname();
-struct hostent *gethostbyaddr();
-struct hostent *gethostent();
-struct netent *getnetbyname();
-struct netent *getnetbyaddr();
-struct netent *getnetent();
-struct servent *getservbyname();
-struct servent *getservbyport();
-struct servent *getservent();
-struct protoent *getprotobyname();
-struct protoent *getprotobynumber();
-struct protoent *getprotoent();
-int getnetgrent();
-
-int sethostent();
-int endhostent();
-int setnetent();
-int endnetent();
-int setservent();
-int endservent();
-int setprotoent();
-int endprotoent();
-int setnetgrent();
-int endnetgrent();
-int rcmd();
-int rcmd_af();
-int rexec();
-int rexec_af();
-int rresvport();
-int rresvport_af();
-int rresvport_addr();
-int ruserok();
-/* BIND */
-struct hostent *gethostbyname2();
-void herror();
-char *hstrerror();
-/* IPv6 prototype definitions */
-int getaddrinfo();
-void freeaddrinfo();
-const char *gai_strerror();
-int getnameinfo();
-/* END IPv6 prototype definitions */
-/* End BIND */
-
-#if !defined(_XPG4_2) || defined(__EXTENSIONS__)
-/* IPsec algorithm prototype definitions */
-struct ipsecalgent *getalgbyname();
-struct ipsecalgent *getalgbydoi();
-int getdoidomainbyname();
-const char *getdoidomainbynum();
-void freealgent();
-/* END IPsec algorithm prototype definitions */
-#endif /* !defined(_XPG4_2) || defined(__EXTENSIONS__) */
-
-#endif /* __STDC__ */
-
-/*
- * Error return codes from gethostbyname() and gethostbyaddr()
- * (when using the resolver)
- */
-
-extern int h_errno;
-
-#ifdef _REENTRANT
-#ifdef __STDC__
-extern int *__h_errno(void);
-#else
-extern int *__h_errno();
-#endif /* __STDC__ */
-
-/* Only #define h_errno if there is no conflict with other use */
-#ifdef H_ERRNO_IS_FUNCTION
-#define h_errno (*__h_errno())
-#endif /* NO_H_ERRNO_DEFINE */
-#endif /* _REENTRANT */
-
-/*
- * Error return codes from gethostbyname() and gethostbyaddr()
- * (left in extern int h_errno).
- */
-#define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found */
-#define TRY_AGAIN 2 /* Non-Authoritive Host not found, or SERVERFAIL */
-#define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
-#define NO_DATA 4 /* Valid name, no data record of requested type */
-
-#if !defined(_XPG4_2) || defined(__EXTENSIONS__)
-#define NO_ADDRESS NO_DATA /* no address, look for MX record */
-
-/* BIND */
-#define NETDB_INTERNAL -1 /* see errno */
-#define NETDB_SUCCESS 0 /* no problem */
-/* End BIND */
-
-#define MAXHOSTNAMELEN 256
-
-#define MAXALIASES 35
-#define MAXADDRS 35
-#endif /* !defined(_XPG4_2) || defined(__EXTENSIONS__) */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SQUID_COMPAT_OS_OPENSOLARIS_10_NETDB_H */
-
//#define s6_addr16 _S6_un._S6_u16
#define s6_addr32 _S6_un._S6_u32
-/* Bug 3057: Solaris 9 defines struct addrinfo with size_t instead of socklen_t
- * this causes binary incompatibility on 64-bit systems.
- * Fix this by bundling a copy of the OpenSolaris 10 netdb.h to use instead.
- */
-#if defined(__sparcv9)
-#include "compat/os/opensolaris_10_netdb.h"
-#endif
-
/* Solaris 10 lacks SUN_LEN */
#if !defined(SUN_LEN)
#define SUN_LEN(su) (sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
tempnam \
)
-AC_CHECK_DECLS([getaddrinfo,getnameinfo,inet_ntop,inet_pton,InetNtopA,InetPtonA],,,[
-/*
- * BSD requires sys/types.h, sys/socket.h, netinet/in.h, netdb.h, arpa/inet.h
- * Linux requires sys/types.h, sys/socket.h, arpa/inet.h
- * Windows requires sys/socket.h, winsock2.h, ws2tcpip.h
- */
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#if HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#if HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#if HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#if HAVE_WS2TCPIP_H
-#include <ws2tcpip.h>
-#endif
-])
-
# Magic which checks whether we are forcing a type of comm loop we
# are actually going to (ab)use.
# Mostly ripped from squid-commloops, thanks to adrian and benno