From: michael Date: Fri, 26 Dec 2014 18:57:18 +0000 (+0000) Subject: - Removed inet_pton() compatibility code X-Git-Tag: 1.0.0beta2~37 X-Git-Url: http://git.serene-ircd.net/?a=commitdiff_plain;h=b0679447425a63eb87de72333e5ca2e18c5420bc;p=hopm.git - Removed inet_pton() compatibility code git-svn-id: svn://svn.ircd-hybrid.org/svnroot/hopm/branches/1.0.x@5166 82007160-df01-0410-b94d-b575c5fd34c7 --- diff --git a/configure b/configure index 77d8017..9826649 100755 --- a/configure +++ b/configure @@ -12692,7 +12692,7 @@ fi fi -for ac_func in strlcpy strlcat inet_aton inet_pton socket strdup strstr +for ac_func in strlcpy strlcat inet_aton socket strdup strstr do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/configure.ac b/configure.ac index 46c5ea7..99a62bf 100644 --- a/configure.ac +++ b/configure.ac @@ -56,7 +56,7 @@ AC_SEARCH_LIBS([socket],[socket],,[AC_MSG_ERROR([socket library not found])]) AC_CHECK_FUNC(getaddrinfo, [], AC_SEARCH_LIBS(getaddrinfo, nsl)) AC_CHECK_FUNC(getnameinfo, [], AC_SEARCH_LIBS(getnameinfo, nsl)) -AC_CHECK_FUNCS(strlcpy strlcat inet_aton inet_pton socket strdup strstr) +AC_CHECK_FUNCS(strlcpy strlcat inet_aton socket strdup strstr) dnl Check if we can use gethostbyname2 for ipv6 AC_CHECK_FUNCS(gethostbyname) diff --git a/src/compat.h b/src/compat.h index 781b571..799dabd 100644 --- a/src/compat.h +++ b/src/compat.h @@ -11,11 +11,6 @@ extern int bopm_inet_aton(const char *cp, struct in_addr *inp); #endif -#ifndef HAVE_INET_PTON -#undef inet_pton -#define inet_pton bopm_inet_pton -#endif - #ifndef HAVE_STRLCPY extern size_t strlcpy(char *, const char *, size_t); #endif diff --git a/src/inet.c b/src/inet.c index 811dccb..9269ec4 100644 --- a/src/inet.c +++ b/src/inet.c @@ -37,247 +37,3 @@ along with this program; if not, write to: #include "setup.h" #include "inet.h" #include "log.h" - -#ifndef INADDRSZ -#define INADDRSZ 4 -#endif - -#ifdef IPV6 -#ifndef IN6ADDRSZ -#define IN6ADDRSZ 16 -#endif -#endif - - -#ifndef INT16SZ -#define INT16SZ 2 -#endif - -#ifdef IPV6 -#define HOSTIPLEN 53 -#else -#define HOSTIPLEN 15 -#endif - -extern const unsigned char ToLowerTab[]; -#define ToLower(c) (ToLowerTab[(unsigned char)(c)]) - -/* - * 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. - */ - -/* 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 - * 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. - */ - -#ifndef HAVE_INET_PTON -static int inet_pton4(src, dst) -const char *src; -unsigned char *dst; -{ - int saw_digit, octets, ch; - unsigned char tmp[INADDRSZ], *tp; - - saw_digit = 0; - octets = 0; - *(tp = tmp) = 0; - while ((ch = *src++) != '\0') - { - - if (ch >= '0' && ch <= '9') - { - unsigned int new = *tp * 10 + (ch - '0'); - - if (new > 255) - return (0); - *tp = new; - 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, INADDRSZ); - return (1); -} - -#ifdef IPV6 -/* 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(src, dst) -const char *src; -unsigned char *dst; -{ - static const char xdigits[] = "0123456789abcdef"; - unsigned char tmp[IN6ADDRSZ], *tp, *endp, *colonp; - const char *curtok; - int ch, saw_xdigit; - unsigned int val; - - tp = memset(tmp, '\0', IN6ADDRSZ); - endp = tp + IN6ADDRSZ; - colonp = NULL; - /* Leading :: requires some special handling. */ - if (*src == ':') - if (*++src != ':') - return (0); - curtok = src; - saw_xdigit = 0; - val = 0; - while ((ch = ToLower(*src++)) != '\0') - { - const char *pch; - - pch = strchr(xdigits, ch); - if (pch != NULL) - { - val <<= 4; - val |= (pch - xdigits); - if (val > 0xffff) - return (0); - saw_xdigit = 1; - continue; - } - if (ch == ':') - { - curtok = src; - if (!saw_xdigit) - { - if (colonp) - return (0); - colonp = tp; - continue; - } - else if (*src == '\0') - { - return (0); - } - if (tp + INT16SZ > endp) - return (0); - *tp++ = (unsigned char) (val >> 8) & 0xff; - *tp++ = (unsigned char) val & 0xff; - saw_xdigit = 0; - val = 0; - continue; - } - - if (*src != '\0' && ch == '.') - { - if (((tp + INADDRSZ) <= endp) && inet_pton4(curtok, tp) > 0) - { - tp += INADDRSZ; - saw_xdigit = 0; - break; /* '\0' was seen by inet_pton4(). */ - } - } - else - continue; - return (0); - } - if (saw_xdigit) - { - if (tp + INT16SZ > endp) - return (0); - *tp++ = (unsigned char) (val >> 8) & 0xff; - *tp++ = (unsigned char) val & 0xff; - } - if (colonp != NULL) - { - /* - * 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, IN6ADDRSZ); - return (1); -} -#endif /* IPv6 */ - -int bopm_inet_pton(af, src, dst) -int af; -const char *src; -void *dst; -{ - switch (af) - { - case AF_INET: - return (inet_pton4(src, dst)); -#ifdef IPV6 - - case AF_INET6: - /* Somebody might have passed as an IPv4 address this is sick but it works */ - if (inet_pton4(src, dst)) - { - char tmp[HOSTIPLEN]; - sprintf(tmp, "::ffff:%s", src); - return (inet_pton6(tmp, dst)); - } - else - return (inet_pton6(src, dst)); -#endif /* IPv6 */ - - default: - return (-1); - } - /* NOTREACHED */ -} -#endif - diff --git a/src/inet.h b/src/inet.h index 74429c8..69634a6 100644 --- a/src/inet.h +++ b/src/inet.h @@ -6,11 +6,4 @@ #include #include -#ifndef AF_INET6 -#define AF_INET6 10 -#endif - -#ifndef HAVE_INET_PTON -extern int bopm_inet_pton(int, const char *, void *); -#endif #endif /* INET_H */ diff --git a/src/libopm/src/compat.h b/src/libopm/src/compat.h index f537fbb..95bd4b7 100644 --- a/src/libopm/src/compat.h +++ b/src/libopm/src/compat.h @@ -10,10 +10,4 @@ #define inet_aton libopm_inet_aton extern int libopm_inet_aton(const char *cp, struct in_addr *inp); #endif - -#ifndef HAVE_INET_PTON -#undef inet_pton -#define inet_pton libopm_inet_pton -#endif - #endif diff --git a/src/libopm/src/inet.c b/src/libopm/src/inet.c index f32ce07..8c590f8 100644 --- a/src/libopm/src/inet.c +++ b/src/libopm/src/inet.c @@ -44,226 +44,3 @@ along with this program; if not, write to #include "inet.h" #include "opm.h" - -#ifndef INADDRSZ -#define INADDRSZ 4 -#endif - -#ifdef IPV6 -#ifndef IN6ADDRSZ -#define IN6ADDRSZ 16 -#endif -#endif - - -#ifndef INT16SZ -#define INT16SZ 2 -#endif - -#ifdef IPV6 -#define HOSTIPLEN 53 -#else -#define HOSTIPLEN 15 -#endif - - -extern const unsigned char ToLowerTab[]; -#define ToLower(c) (ToLowerTab[(unsigned char)(c)]) - -/* - * 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. - */ - -/* 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 - * 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. - */ - -#ifndef HAVE_INET_PTON - -static int inet_pton4(src, dst) - const char *src; - unsigned char *dst; -{ -int saw_digit, octets, ch; -unsigned char tmp[INADDRSZ], *tp; - - saw_digit = 0; - octets = 0; - *(tp = tmp) = 0; - while ((ch = *src++) != '\0') { - - if (ch >= '0' && ch <= '9') { -unsigned int new = *tp * 10 + (ch - '0'); - - if (new > 255) - return (0); - *tp = new; - 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, INADDRSZ); - return (1); -} - -#ifdef IPV6 -/* 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(src, dst) - const char *src; - unsigned char *dst; -{ -static const char xdigits[] = "0123456789abcdef"; -unsigned char tmp[IN6ADDRSZ], *tp, *endp, *colonp; -const char *curtok; -int ch, saw_xdigit; -unsigned int val; - - tp = memset(tmp, '\0', IN6ADDRSZ); - endp = tp + IN6ADDRSZ; - colonp = NULL; - /* Leading :: requires some special handling. */ - if (*src == ':') - if (*++src != ':') - return (0); - curtok = src; - saw_xdigit = 0; - val = 0; - while ((ch = ToLower(*src++)) != '\0') { -const char *pch; - - pch = strchr(xdigits, ch); - if (pch != NULL) { - val <<= 4; - val |= (pch - xdigits); - if (val > 0xffff) - return (0); - saw_xdigit = 1; - continue; - } - if (ch == ':') { - curtok = src; - if (!saw_xdigit) { - if (colonp) - return (0); - colonp = tp; - continue; - } else if (*src == '\0') { - return (0); - } - if (tp + INT16SZ > endp) - return (0); - *tp++ = (unsigned char) (val >> 8) & 0xff; - *tp++ = (unsigned char) val & 0xff; - saw_xdigit = 0; - val = 0; - continue; - } - - if (*src != '\0' && ch == '.') { - if (((tp + INADDRSZ) <= endp) && inet_pton4(curtok, tp) > 0) { - tp += INADDRSZ; - saw_xdigit = 0; - break; /* '\0' was seen by inet_pton4(). */ - } - } else - continue; - return (0); - } - if (saw_xdigit) { - if (tp + INT16SZ > endp) - return (0); - *tp++ = (unsigned char) (val >> 8) & 0xff; - *tp++ = (unsigned char) val & 0xff; - } - if (colonp != NULL) { - /* - * 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, IN6ADDRSZ); - return (1); -} -#endif /* IPv6 */ - -int inet_pton(af, src, dst) - int af; - const char *src; - void *dst; -{ - switch (af) { - case AF_INET: - return (inet_pton4(src, dst)); -#ifdef IPV6 - case AF_INET6: - /* Somebody might have passed as an IPv4 address this is sick but it works */ - if (inet_pton4(src, dst)) { -char tmp[HOSTIPLEN]; - sprintf(tmp, "::ffff:%s", src); - return (inet_pton6(tmp, dst)); - } else - return (inet_pton6(src, dst)); -#endif /* IPv6 */ - default: - return (-1); - } - /* NOTREACHED */ -} - -#endif diff --git a/src/libopm/src/inet.h b/src/libopm/src/inet.h index 59ab856..a9ebe79 100644 --- a/src/libopm/src/inet.h +++ b/src/libopm/src/inet.h @@ -15,10 +15,6 @@ # include #endif -#ifndef AF_INET6 -# define AF_INET6 10 -#endif - typedef struct _opm_sockaddr opm_sockaddr; typedef struct _opm_inaddr opm_inaddr; @@ -30,7 +26,4 @@ struct _opm_inaddr { struct in_addr in4; }; -#ifndef HAVE_INET_PTON -extern int inet_pton(int, const char *, void *); -#endif #endif /* INET_H */ diff --git a/src/setup.h.in b/src/setup.h.in index c0a4b8a..bb24855 100644 --- a/src/setup.h.in +++ b/src/setup.h.in @@ -15,9 +15,6 @@ /* Define to 1 if you have the `inet_aton' function. */ #undef HAVE_INET_ATON -/* Define to 1 if you have the `inet_pton' function. */ -#undef HAVE_INET_PTON - /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H