]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Remove unnecessary net compatibility workarounds (#1404)
authorFrancesco Chemolli <5175948+kinkie@users.noreply.github.com>
Mon, 3 Jul 2023 20:02:33 +0000 (20:02 +0000)
committerAmos Jeffries <yadij@users.noreply.github.com>
Wed, 19 Jun 2024 19:45:26 +0000 (07:45 +1200)
All modern network stacks provide inet_ntop(), inet_pton(),
getaddrinfo(), and getnameinfo() APIs.

Also removed related Solaris 9 hacks, effectively discontinuing support
for that platform. Solaris 9 is no longer supported by Oracle.

15 files changed:
CREDITS
compat/Makefile.am
compat/compat.h
compat/getaddrinfo.cc [deleted file]
compat/getaddrinfo.h [deleted file]
compat/getnameinfo.cc [deleted file]
compat/getnameinfo.h [deleted file]
compat/inet_ntop.cc [deleted file]
compat/inet_ntop.h [deleted file]
compat/inet_pton.cc [deleted file]
compat/inet_pton.h [deleted file]
compat/os/mswindows.h
compat/os/opensolaris_10_netdb.h [deleted file]
compat/os/solaris.h
configure.ac

diff --git a/CREDITS b/CREDITS
index 66c635577253095f490b75972fe659eed2ed2ed2..ef28cd81cc02b715d3b20f9a9d82be154460f3a5 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -134,74 +134,6 @@ acinclude/pkg.m4:
 
 ==============================================================================
 
-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 $       */
index 8d23b31bc41622da8dcf94464ec7eb0323d2918e..60fc3b2a9187be3e0931d3502937a2f9c7b9ee58 100644 (file)
@@ -29,14 +29,6 @@ libcompatsquid_la_SOURCES = \
        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 \
@@ -53,7 +45,6 @@ libcompatsquid_la_SOURCES = \
        os/mswindows.h \
        os/netbsd.h \
        os/openbsd.h \
-       os/opensolaris_10_netdb.h \
        os/os2.h \
        os/qnx.h \
        os/sgi.h \
index 824fc990affd62cd4178fc959518d8c944900023..9a41459ff3d6cecdfa4ad9495c5df8d9690974ab 100644 (file)
 
 #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 */
diff --git a/compat/getaddrinfo.cc b/compat/getaddrinfo.cc
deleted file mode 100644 (file)
index 17a3bbe..0000000
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
- * 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 */
-
diff --git a/compat/getaddrinfo.h b/compat/getaddrinfo.h
deleted file mode 100644 (file)
index e4acf33..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * 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 */
-
diff --git a/compat/getnameinfo.cc b/compat/getnameinfo.cc
deleted file mode 100644 (file)
index 05924ef..0000000
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- * 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 */
-
diff --git a/compat/getnameinfo.h b/compat/getnameinfo.h
deleted file mode 100644 (file)
index 256f28e..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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 */
-
diff --git a/compat/inet_ntop.cc b/compat/inet_ntop.cc
deleted file mode 100644 (file)
index 09e36d5..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * 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 */
-
diff --git a/compat/inet_ntop.h b/compat/inet_ntop.h
deleted file mode 100644 (file)
index 538ba5a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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 */
-
diff --git a/compat/inet_pton.cc b/compat/inet_pton.cc
deleted file mode 100644 (file)
index 03e7fe9..0000000
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * 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 */
-
diff --git a/compat/inet_pton.h b/compat/inet_pton.h
deleted file mode 100644 (file)
index a31b1b8..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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 */
-
index af66bcca29ec5eeac47af85b0d8c2dcfff2f4e93..2791ab9e4acd9e2fb1a27cae13d9fbbc0e38e721 100644 (file)
@@ -616,32 +616,6 @@ getsockopt(int s, int l, int o, void * v, socklen_t * n)
 }
 #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)
diff --git a/compat/os/opensolaris_10_netdb.h b/compat/os/opensolaris_10_netdb.h
deleted file mode 100644 (file)
index 819033b..0000000
+++ /dev/null
@@ -1,488 +0,0 @@
-/*
- * 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 */
-
index fe7d0b011534ea8519644bdcdbaa350dcfa10c47..561f59db50eaa5b9ce49e501be731ff2ee016538 100644 (file)
@@ -77,14 +77,6 @@ SQUIDCEXTERN int gethostname(char *, int);
 //#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))
index 43c7c4ba9f2050f03f1afa25970a17fc00c7c393..d450eb814d0d88c694d30abfcbf2c2fa5e91aef8 100644 (file)
@@ -2714,35 +2714,6 @@ AC_REPLACE_FUNCS(\
        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