mtr: moved to github
authorcyrus <cyrus@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Fri, 2 Jan 2015 16:51:26 +0000 (16:51 +0000)
committercyrus <cyrus@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Fri, 2 Jan 2015 16:51:26 +0000 (16:51 +0000)
Signed-off-by: Steven Barth <steven@midlink.org>
git-svn-id: svn://svn.openwrt.org/openwrt/packages@43803 3c298f89-4303-0410-b956-a3cf2f4a3e73

net/mtr/Makefile [deleted file]
net/mtr/patches/501-dns.patch [deleted file]
net/mtr/patches/502-fix-res_ninit.patch [deleted file]
net/mtr/patches/520-libresolv_fix.patch [deleted file]
net/mtr/patches/521-gtk_fix.patch [deleted file]

diff --git a/net/mtr/Makefile b/net/mtr/Makefile
deleted file mode 100644 (file)
index d6aedec..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-# Copyright (C) 2006-2012 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=mtr
-PKG_VERSION:=0.82
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=ftp://ftp.bitwizard.nl/mtr
-PKG_MD5SUM:=10601ea543fda3e51545c4bce195b64c
-
-PKG_INSTALL:=1
-
-PKG_FIXUP:=autoreconf
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/mtr
-  SECTION:=net
-  CATEGORY:=Network
-  DEPENDS:=+libncurses
-  TITLE:=Full screen ncurses traceroute tool
-  URL:=http://www.bitwizard.nl/mtr/
-endef
-
-define Package/mtr/description
-       mtr combines the functionality of the 'traceroute' and 'ping' programs
-       in a single network diagnostic tool.
-       As mtr starts, it investigates the network connection between the host
-       mtr runs on and a user-specified destination host. After it
-       determines the address of each network hop between the machines,
-       it sends a sequence ICMP ECHO requests to each one to determine the
-       quality of the link to each machine. As it does this, it prints
-       running statistics about each machine.
-endef
-
-CONFIGURE_ARGS += \
-       --without-gtk \
-
-#CONFIGURE_VARS += \
-#      ac_cv_lib_resolv_res_mkquery=no \
-
-define Build/Configure
-       (cd $(PKG_BUILD_DIR); touch \
-               configure.in \
-               aclocal.m4 \
-               Makefile.in \
-               img/Makefile.in \
-               stamp-h.in \
-               config.h.in \
-               configure \
-       );
-       $(call Build/Configure/Default)
-endef
-
-define Package/mtr/install
-       $(INSTALL_DIR) $(1)/usr/sbin
-       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/mtr $(1)/usr/sbin/
-endef
-
-$(eval $(call BuildPackage,mtr))
diff --git a/net/mtr/patches/501-dns.patch b/net/mtr/patches/501-dns.patch
deleted file mode 100644 (file)
index 0976cb3..0000000
+++ /dev/null
@@ -1,510 +0,0 @@
---- a/dns.c
-+++ b/dns.c
-@@ -880,6 +880,507 @@ void restell(char *s)
-   fputs("\r",stderr);
- }
-+#ifdef __UCLIBC__
-+
-+static const char       digits[] = "0123456789";
-+#define __set_errno(e) (errno = (e))
-+
-+#define NS_PUT16(s, cp) do { \
-+        register u_int16_t t_s = (u_int16_t)(s); \
-+        register u_char *t_cp = (u_char *)(cp); \
-+        *t_cp++ = t_s >> 8; \
-+        *t_cp   = t_s; \
-+        (cp) += NS_INT16SZ; \
-+} while (0)
-+
-+
-+
-+#define NS_PUT32(l, cp) do { \
-+        register u_int32_t t_l = (u_int32_t)(l); \
-+        register u_char *t_cp = (u_char *)(cp); \
-+        *t_cp++ = t_l >> 24; \
-+        *t_cp++ = t_l >> 16; \
-+        *t_cp++ = t_l >> 8; \
-+        *t_cp   = t_l; \
-+        (cp) += NS_INT32SZ; \
-+} while (0)
-+
-+
-+void
-+ns_put16(u_int src, u_char *dst) {
-+        NS_PUT16(src, dst);
-+}
-+
-+void
-+ns_put32(u_long src, u_char *dst) {
-+        NS_PUT32(src, dst);
-+}
-+
-+void __putshort(u_int16_t src, u_char *dst) { ns_put16(src, dst); }
-+void __putlong(u_int32_t src, u_char *dst) { ns_put32(src, dst); }
-+
-+int
-+mklower(int ch) {
-+        if (ch >= 0x41 && ch <= 0x5A)
-+                return (ch + 0x20);
-+        return (ch);
-+}
-+
-+
-+static int
-+dn_find(const u_char *domain, const u_char *msg,
-+        const u_char * const *dnptrs,
-+        const u_char * const *lastdnptr)
-+{
-+        const u_char *dn, *cp, *sp;
-+        const u_char * const *cpp;
-+        u_int n;
-+
-+        for (cpp = dnptrs; cpp < lastdnptr; cpp++) {
-+                sp = *cpp;
-+                /*
-+                 * terminate search on:
-+                 * root label
-+                 * compression pointer
-+                 * unusable offset
-+                 */
-+                while (*sp != 0 && (*sp & NS_CMPRSFLGS) == 0 &&
-+                       (sp - msg) < 0x4000) {
-+                        dn = domain;
-+                        cp = sp;
-+                        while ((n = *cp++) != 0) {
-+                                /*
-+                                 * check for indirection
-+                                 */
-+                                switch (n & NS_CMPRSFLGS) {
-+                                case 0:         /* normal case, n == len */
-+                                        if (n != *dn++)
-+                                                goto next;
-+                                        for ((void)NULL; n > 0; n--)
-+                                                if (mklower(*dn++) !=
-+                                                    mklower(*cp++))
-+                                                        goto next;
-+                                        /* Is next root for both ? */
-+                                        if (*dn == '\0' && *cp == '\0')
-+                                                return (sp - msg);
-+                                        if (*dn)
-+                                                continue;
-+                                        goto next;
-+
-+                                case NS_CMPRSFLGS:      /* indirection */
-+                                        cp = msg + (((n & 0x3f) << 8) | *cp);
-+                                        break;
-+
-+                                default:        /* illegal type */
-+                                        __set_errno (EMSGSIZE);
-+                                        return (-1);
-+                                }
-+                        }
-+ next:
-+                        sp += *sp + 1;
-+                }
-+        }
-+        __set_errno (ENOENT);
-+        return (-1);
-+}
-+
-+
-+int
-+ns_name_pack(const u_char *src, u_char *dst, int dstsiz,
-+             const u_char **dnptrs, const u_char **lastdnptr)
-+{
-+        u_char *dstp;
-+        const u_char **cpp, **lpp, *eob, *msg;
-+        const u_char *srcp;
-+        int n, l, first = 1;
-+
-+        srcp = src;
-+        dstp = dst;
-+        eob = dstp + dstsiz;
-+        lpp = cpp = NULL;
-+        if (dnptrs != NULL) {
-+                if ((msg = *dnptrs++) != NULL) {
-+                        for (cpp = dnptrs; *cpp != NULL; cpp++)
-+                                (void)NULL;
-+                        lpp = cpp;      /* end of list to search */
-+                }
-+        } else
-+                msg = NULL;
-+
-+        /* make sure the domain we are about to add is legal */
-+        l = 0;
-+        do {
-+                n = *srcp;
-+                if ((n & NS_CMPRSFLGS) != 0 && n != 0x41) {
-+                        __set_errno (EMSGSIZE);
-+                        return (-1);
-+                }
-+                if (n == 0x41)
-+                        n = *++srcp / 8;
-+                l += n + 1;
-+                if (l > MAXCDNAME) {
-+                        __set_errno (EMSGSIZE);
-+                        return (-1);
-+                }
-+                srcp += n + 1;
-+        } while (n != 0);
-+
-+        /* from here on we need to reset compression pointer array on error */
-+        srcp = src;
-+        do {
-+                /* Look to see if we can use pointers. */
-+                n = *srcp;
-+                if (n != 0 && n != 0x41 && msg != NULL) {
-+                        l = dn_find(srcp, msg, (const u_char * const *)dnptrs,
-+                                    (const u_char * const *)lpp);
-+                        if (l >= 0) {
-+                                if (dstp + 1 >= eob) {
-+                                        goto cleanup;
-+                                }
-+                                *dstp++ = (l >> 8) | NS_CMPRSFLGS;
-+                                *dstp++ = l % 256;
-+                                return (dstp - dst);
-+                        }
-+                        /* Not found, save it. */
-+                        if (lastdnptr != NULL && cpp < lastdnptr - 1 &&
-+                            (dstp - msg) < 0x4000 && first) {
-+                                *cpp++ = dstp;
-+                                *cpp = NULL;
-+                                first = 0;
-+                        }
-+                }
-+                /* copy label to buffer */
-+                if ((n & NS_CMPRSFLGS) != 0 && n != 0x41) {             /* Should not happen. */
-+                        goto cleanup;
-+                }
-+                if (n == 0x41) {
-+                        n = *++srcp / 8;
-+                        if (dstp + 1 >= eob)
-+                                goto cleanup;
-+                        *dstp++ = 0x41;
-+                }
-+                if (dstp + 1 + n >= eob) {
-+                        goto cleanup;
-+                }
-+                memcpy(dstp, srcp, n + 1);
-+                srcp += n + 1;
-+                dstp += n + 1;
-+        } while (n != 0);
-+
-+        if (dstp > eob) {
-+cleanup:
-+                if (msg != NULL)
-+                        *lpp = NULL;
-+                __set_errno (EMSGSIZE);
-+                return (-1);
-+        }
-+        return (dstp - dst);
-+}
-+
-+
-+int
-+ns_name_pton(const char *src, u_char *dst, size_t dstsiz) {
-+        u_char *label, *bp, *eom;
-+        int c, n, escaped;
-+        char *cp;
-+
-+        escaped = 0;
-+        bp = dst;
-+        eom = dst + dstsiz;
-+        label = bp++;
-+
-+        while ((c = *src++) != 0) {
-+                if (escaped) {
-+                        if ((cp = strchr(digits, c)) != NULL) {
-+                                n = (cp - digits) * 100;
-+                                if ((c = *src++) == 0 ||
-+                                    (cp = strchr(digits, c)) == NULL) {
-+                                        __set_errno (EMSGSIZE);
-+                                        return (-1);
-+                                }
-+                                n += (cp - digits) * 10;
-+                                if ((c = *src++) == 0 ||
-+                                    (cp = strchr(digits, c)) == NULL) {
-+                                        __set_errno (EMSGSIZE);
-+                                        return (-1);
-+                                }
-+                                n += (cp - digits);
-+                                if (n > 255) {
-+                                        __set_errno (EMSGSIZE);
-+                                        return (-1);
-+                                }
-+                                c = n;
-+                        } else if (c == '[' && label == bp - 1 && *src == 'x') {
-+                                /* Theoretically we would have to handle \[o
-+                                   as well but we do not since we do not need
-+                                   it internally.  */
-+                                *label = 0x41;
-+                                label = bp++;
-+                                ++src;
-+                                while (isxdigit (*src)) {
-+                                        n = *src > '9' ? *src - 'a' + 10 : *src - '0';
-+                                        ++src;
-+                                        if (! isxdigit(*src)) {
-+                                                __set_errno (EMSGSIZE);
-+                                                return (-1);
-+                                        }
-+                                        n <<= 4;
-+                                        n += *src > '9' ? *src - 'a' + 10 : *src - '0';
-+                                        if (bp + 1 >= eom) {
-+                                                __set_errno (EMSGSIZE);
-+                                                return (-1);
-+                                        }
-+                                        *bp++ = n;
-+                                        ++src;
-+                                }
-+                                *label = (bp - label - 1) * 8;
-+                                if (*src++ != ']' || *src++ != '.') {
-+                                        __set_errno (EMSGSIZE);
-+                                        return (-1);
-+                                }
-+                                escaped = 0;
-+                                label = bp++;
-+                                if (bp >= eom) {
-+                                        __set_errno (EMSGSIZE);
-+                                        return (-1);
-+                                }
-+                                continue;
-+                        }
-+                        escaped = 0;
-+                } else if (c == '\\') {
-+                        escaped = 1;
-+                        continue;
-+                } else if (c == '.') {
-+                        c = (bp - label - 1);
-+                        if ((c & NS_CMPRSFLGS) != 0) {  /* Label too big. */
-+                                __set_errno (EMSGSIZE);
-+                                return (-1);
-+                        }
-+                        if (label >= eom) {
-+                                __set_errno (EMSGSIZE);
-+                                return (-1);
-+                        }
-+                        *label = c;
-+                        /* Fully qualified ? */
-+                        if (*src == '\0') {
-+                                if (c != 0) {
-+                                        if (bp >= eom) {
-+                                                __set_errno (EMSGSIZE);
-+                                                return (-1);
-+                                        }
-+                                        *bp++ = '\0';
-+                                }
-+                                if ((bp - dst) > MAXCDNAME) {
-+                                        __set_errno (EMSGSIZE);
-+                                        return (-1);
-+                                }
-+                                return (1);
-+                        }
-+                        if (c == 0 || *src == '.') {
-+                                __set_errno (EMSGSIZE);
-+                                return (-1);
-+                        }
-+                        label = bp++;
-+                        continue;
-+                }
-+                if (bp >= eom) {
-+                        __set_errno (EMSGSIZE);
-+                        return (-1);
-+                }
-+                *bp++ = (u_char)c;
-+        }
-+        c = (bp - label - 1);
-+        if ((c & NS_CMPRSFLGS) != 0) {          /* Label too big. */
-+                __set_errno (EMSGSIZE);
-+                return (-1);
-+        }
-+        if (label >= eom) {
-+                __set_errno (EMSGSIZE);
-+                return (-1);
-+        }
-+        *label = c;
-+        if (c != 0) {
-+                if (bp >= eom) {
-+                        __set_errno (EMSGSIZE);
-+                        return (-1);
-+                }
-+                *bp++ = 0;
-+        }
-+        if ((bp - dst) > MAXCDNAME) {   /* src too big */
-+                __set_errno (EMSGSIZE);
-+                return (-1);
-+        }
-+        return (0);
-+}
-+
-+
-+
-+int
-+ns_name_compress(const char *src, u_char *dst, size_t dstsiz,
-+                 const u_char **dnptrs, const u_char **lastdnptr)
-+{
-+        u_char tmp[NS_MAXCDNAME];
-+
-+        if (ns_name_pton(src, tmp, sizeof tmp) == -1)
-+                return (-1);
-+        return (ns_name_pack(tmp, dst, dstsiz, dnptrs, lastdnptr));
-+}
-+
-+
-+int
-+dn_comp(const char *src, u_char *dst, int dstsiz,
-+        u_char **dnptrs, u_char **lastdnptr)
-+{
-+        return (ns_name_compress(src, dst, (size_t)dstsiz,
-+                                 (const u_char **)dnptrs,
-+                                 (const u_char **)lastdnptr));
-+}
-+
-+
-+
-+
-+int
-+res_nmkquery(res_state statp,
-+             int op,                    /* opcode of query */
-+             const char *dname,         /* domain name */
-+             int class, int type,       /* class and type of query */
-+             const u_char *data,        /* resource record data */
-+             int datalen,               /* length of data */
-+             const u_char *newrr_in,    /* new rr for modify or append */
-+             u_char *buf,               /* buffer to put query */
-+             int buflen)                /* size of buffer */
-+{
-+        register HEADER *hp;
-+        register u_char *cp;
-+        register int n;
-+        u_char *dnptrs[20], **dpp, **lastdnptr;
-+
-+#ifdef DEBUG
-+        if (statp->options & RES_DEBUG)
-+                printf(";; res_nmkquery(%s, %s, %s, %s)\n",
-+                       _res_opcodes[op], dname, p_class(class), p_type(type));
-+#endif
-+        /*
-+         * Initialize header fields.
-+         */
-+        if ((buf == NULL) || (buflen < HFIXEDSZ))
-+                return (-1);
-+        memset(buf, 0, HFIXEDSZ);
-+        hp = (HEADER *) buf;
-+        /* We randomize the IDs every time.  The old code just
-+           incremented by one after the initial randomization which
-+           still predictable if the application does multiple
-+           requests.  */
-+#if 0
-+        hp->id = htons(++statp->id);
-+#else
-+        hp->id = htons(statp->id);
-+        int randombits;
-+        do
-+          {
-+#ifdef RANDOM_BITS
-+            RANDOM_BITS (randombits);
-+#else
-+            struct timeval tv;
-+            gettimeofday (&tv, NULL);
-+            randombits = (tv.tv_sec << 8) ^ tv.tv_usec;
-+#endif
-+          }
-+        while ((randombits & 0xffff) == 0);
-+        statp->id = (statp->id + randombits) & 0xffff;
-+#endif
-+        hp->opcode = op;
-+        hp->rd = (statp->options & RES_RECURSE) != 0;
-+        hp->rcode = NOERROR;
-+        cp = buf + HFIXEDSZ;
-+        buflen -= HFIXEDSZ;
-+        dpp = dnptrs;
-+        *dpp++ = buf;
-+        *dpp++ = NULL;
-+        lastdnptr = dnptrs + sizeof dnptrs / sizeof dnptrs[0];
-+        /*
-+         * perform opcode specific processing
-+         */
-+        switch (op) {
-+        case QUERY:     /*FALLTHROUGH*/
-+        case NS_NOTIFY_OP:
-+                if ((buflen -= QFIXEDSZ) < 0)
-+                        return (-1);
-+                if ((n = dn_comp(dname, cp, buflen, dnptrs, lastdnptr)) < 0)
-+                        return (-1);
-+                cp += n;
-+                buflen -= n;
-+                __putshort(type, cp);
-+                cp += INT16SZ;
-+                __putshort(class, cp);
-+                cp += INT16SZ;
-+                hp->qdcount = htons(1);
-+                if (op == QUERY || data == NULL)
-+                        break;
-+                /*
-+                 * Make an additional record for completion domain.
-+                 */
-+                buflen -= RRFIXEDSZ;
-+                n = dn_comp((char *)data, cp, buflen, dnptrs, lastdnptr);
-+                if (n < 0)
-+                        return (-1);
-+                cp += n;
-+                buflen -= n;
-+                __putshort(T_NULL, cp);
-+                cp += INT16SZ;
-+                __putshort(class, cp);
-+                cp += INT16SZ;
-+                __putlong(0, cp);
-+                cp += INT32SZ;
-+                __putshort(0, cp);
-+                cp += INT16SZ;
-+                hp->arcount = htons(1);
-+                break;
-+
-+        case IQUERY:
-+                /*
-+                 * Initialize answer section
-+                 */
-+                if (buflen < 1 + RRFIXEDSZ + datalen)
-+                        return (-1);
-+                *cp++ = '\0';   /* no domain name */
-+                __putshort(type, cp);
-+                cp += INT16SZ;
-+                __putshort(class, cp);
-+                cp += INT16SZ;
-+                __putlong(0, cp);
-+                cp += INT32SZ;
-+                __putshort(datalen, cp);
-+                cp += INT16SZ;
-+                if (datalen) {
-+                        memcpy(cp, data, datalen);
-+                        cp += datalen;
-+                }
-+                hp->ancount = htons(1);
-+                break;
-+
-+        default:
-+                return (-1);
-+        }
-+        return (cp - buf);
-+}
-+
-+int
-+res_mkquery(int op,                     /* opcode of query */
-+            const char *dname,          /* domain name */
-+            int class, int type,        /* class and type of query */
-+            const u_char *data,         /* resource record data */
-+            int datalen,                /* length of data */
-+            const u_char *newrr_in,     /* new rr for modify or append */
-+            u_char *buf,                /* buffer to put query */
-+            int buflen)                 /* size of buffer */
-+{
-+        return (res_nmkquery(&_res, op, dname, class, type,
-+                             data, datalen,
-+                             newrr_in, buf, buflen));
-+}
-+
-+#endif
- void dorequest(char *s,int type,word id)
- {
diff --git a/net/mtr/patches/502-fix-res_ninit.patch b/net/mtr/patches/502-fix-res_ninit.patch
deleted file mode 100644 (file)
index dc0a02b..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
---- a/dns.c
-+++ b/dns.c
-@@ -1267,28 +1267,6 @@ res_nmkquery(res_state statp,
-                 return (-1);
-         memset(buf, 0, HFIXEDSZ);
-         hp = (HEADER *) buf;
--        /* We randomize the IDs every time.  The old code just
--           incremented by one after the initial randomization which
--           still predictable if the application does multiple
--           requests.  */
--#if 0
--        hp->id = htons(++statp->id);
--#else
--        hp->id = htons(statp->id);
--        int randombits;
--        do
--          {
--#ifdef RANDOM_BITS
--            RANDOM_BITS (randombits);
--#else
--            struct timeval tv;
--            gettimeofday (&tv, NULL);
--            randombits = (tv.tv_sec << 8) ^ tv.tv_usec;
--#endif
--          }
--        while ((randombits & 0xffff) == 0);
--        statp->id = (statp->id + randombits) & 0xffff;
--#endif
-         hp->opcode = op;
-         hp->rd = (statp->options & RES_RECURSE) != 0;
-         hp->rcode = NOERROR;
diff --git a/net/mtr/patches/520-libresolv_fix.patch b/net/mtr/patches/520-libresolv_fix.patch
deleted file mode 100644 (file)
index b8f6aac..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
---- a/configure.in
-+++ b/configure.in
-@@ -72,10 +72,10 @@ AC_CHECK_FUNC(gethostbyname, ,
- AC_CHECK_FUNCS(seteuid)
- #  AC_CHECK_FUNC(setuid, , AC_MSG_ERROR (I Need either seteuid or setuid))
--AC_CHECK_FUNC(res_mkquery, , 
--  AC_CHECK_LIB(bind, res_mkquery, , 
--   AC_CHECK_LIB(resolv, res_mkquery, ,
--     AC_CHECK_LIB(resolv, __res_mkquery, , AC_MSG_ERROR(No resolver library found)))))
-+#AC_CHECK_FUNC(res_mkquery, ,
-+#  AC_CHECK_LIB(bind, res_mkquery, ,
-+#   AC_CHECK_LIB(resolv, res_mkquery, ,
-+#     AC_CHECK_LIB(resolv, __res_mkquery, , AC_MSG_ERROR(No resolver library found)))))
- # This next line would override the just detected-or-not -lresolv. 
- # This apparently hurts BSD. And it's bad practise. So it should go. 
- # However, it probably didn't get added for nothing..... Holler if
diff --git a/net/mtr/patches/521-gtk_fix.patch b/net/mtr/patches/521-gtk_fix.patch
deleted file mode 100644 (file)
index 4314573..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
---- a/configure.in
-+++ b/configure.in
-@@ -48,16 +48,16 @@ AC_ARG_ENABLE(ipv6,
- [  --disable-ipv6          Do not enable IPv6],
- WANTS_IPV6=$enableval, WANTS_IPV6=yes)
-    
--if test "x$WANTS_GTK" = "xyes"; then
--        AM_PATH_GTK_2_0(2.6.0, CFLAGS="$CFLAGS $GTK_CFLAGS"
--                           LIBS="$LIBS $GTK_LIBS -lm",
--                           AC_MSG_WARN(Building without GTK2 display support)
--                   AC_DEFINE(NO_GTK, 1, [Define if you don't have the GTK+ libraries available.])
--                           GTK_OBJ="")
--else
-+#if test "x$WANTS_GTK" = "xyes"; then
-+#        AM_PATH_GTK_2_0(2.6.0, CFLAGS="$CFLAGS $GTK_CFLAGS"
-+#                           LIBS="$LIBS $GTK_LIBS -lm",
-+#                           AC_MSG_WARN(Building without GTK2 display support)
-+#                   AC_DEFINE(NO_GTK, 1, [Define if you don't have the GTK+ libraries available.])
-+#                           GTK_OBJ="")
-+#else
-       AC_DEFINE(NO_GTK)
-       GTK_OBJ=""
--fi
-+#fi
- AC_CHECK_FUNC(socket, , 
-   AC_CHECK_LIB(socket, socket, , AC_MSG_ERROR(No socket library found)))