Author: attilio
Date: Sun Nov 22 16:04:49 2009
New Revision: 199651
URL: http://svn.freebsd.org/changeset/base/199651

Log:
  MFC r199208, r199223:
  Move inet_aton() (specular to inet_ntoa(), already present in libkern)
  into libkern in order to made it usable by other modules than alias_proxy.
  
  Sponsored by: Sandvine Incorporated

Added:
  stable/8/sys/libkern/inet_aton.c
     - copied unchanged from r199208, head/sys/libkern/inet_aton.c
Modified:
  stable/8/sys/conf/files
  stable/8/sys/contrib/rdma/krping/krping.c
  stable/8/sys/netinet/in.h
  stable/8/sys/netinet/libalias/alias_proxy.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/sys/conf/files
==============================================================================
--- stable/8/sys/conf/files     Sun Nov 22 15:57:08 2009        (r199650)
+++ stable/8/sys/conf/files     Sun Nov 22 16:04:49 2009        (r199651)
@@ -2162,6 +2162,7 @@ libkern/iconv_converter_if.m      optional li
 libkern/iconv_xlat.c           optional libiconv
 libkern/iconv_xlat16.c         optional libiconv
 libkern/index.c                        standard
+libkern/inet_aton.c            standard
 libkern/inet_ntoa.c            standard
 libkern/mcount.c               optional profiling-routine
 libkern/memcmp.c               standard

Modified: stable/8/sys/contrib/rdma/krping/krping.c
==============================================================================
--- stable/8/sys/contrib/rdma/krping/krping.c   Sun Nov 22 15:57:08 2009        
(r199650)
+++ stable/8/sys/contrib/rdma/krping/krping.c   Sun Nov 22 16:04:49 2009        
(r199651)
@@ -112,109 +112,6 @@ struct krping_cb_list krping_cbs;
 #define RPING_BUFSIZE 128*1024
 #define RPING_SQ_DEPTH 32
 
-
-/* lifted from netinet/libalias/alias_proxy.c */
-static int inet_aton(const char *cp, struct in_addr *addr);
-static int
-inet_aton(cp, addr)
-        const char *cp;
-        struct in_addr *addr;
-{
-       u_long parts[4];
-       in_addr_t val;
-       const char *c;
-       char *endptr;
-       int gotend, n;
-
-       c = (const char *)cp;
-       n = 0;
-       /*
-        * Run through the string, grabbing numbers until
-        * the end of the string, or some error
-        */
-       gotend = 0;
-       while (!gotend) {
-               unsigned long l;
-
-               l = strtoul(c, &endptr, 0);
-
-               if (l == ULONG_MAX || (l == 0 && endptr == c))
-                       return (0);
-
-               val = (in_addr_t)l;
-               /*
-                * If the whole string is invalid, endptr will equal
-                * c.. this way we can make sure someone hasn't
-                * gone '.12' or something which would get past
-                * the next check.
-                */
-               if (endptr == c)
-                       return (0);
-               parts[n] = val;
-               c = endptr;
-
-               /* Check the next character past the previous number's end */
-               switch (*c) {
-               case '.' :
-                       /* Make sure we only do 3 dots .. */
-                       if (n == 3)     /* Whoops. Quit. */
-                               return (0);
-                       n++;
-                       c++;
-                       break;
-
-               case '\0':
-                       gotend = 1;
-                       break;
-
-               default:
-                       if (isspace((unsigned char)*c)) {
-                               gotend = 1;
-                               break;
-                       } else
-                               return (0);     /* Invalid character, so fail */
-               }
-
-       }
-
-       /*
-        * Concoct the address according to
-        * the number of parts specified.
-        */
-
-       switch (n) {
-       case 0:                         /* a -- 32 bits */
-               /*
-                * Nothing is necessary here.  Overflow checking was
-                * already done in strtoul().
-                */
-               break;
-       case 1:                         /* a.b -- 8.24 bits */
-               if (val > 0xffffff || parts[0] > 0xff)
-                       return (0);
-               val |= parts[0] << 24;
-               break;
-
-       case 2:                         /* a.b.c -- 8.8.16 bits */
-               if (val > 0xffff || parts[0] > 0xff || parts[1] > 0xff)
-                       return (0);
-               val |= (parts[0] << 24) | (parts[1] << 16);
-               break;
-
-       case 3:                         /* a.b.c.d -- 8.8.8.8 bits */
-               if (val > 0xff || parts[0] > 0xff || parts[1] > 0xff ||
-                   parts[2] > 0xff)
-                       return (0);
-               val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
-               break;
-       }
-
-       if (addr != NULL)
-               addr->s_addr = htonl(val);
-       return (1);
-}
-
-
 static void krping_wait(struct krping_cb *cb, int state)
 {
        int rc;

Copied: stable/8/sys/libkern/inet_aton.c (from r199208, 
head/sys/libkern/inet_aton.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/8/sys/libkern/inet_aton.c    Sun Nov 22 16:04:49 2009        
(r199651, copy of r199208, head/sys/libkern/inet_aton.c)
@@ -0,0 +1,136 @@
+/*-
+ * Copyright (c) 2001 Charles Mott <c...@linktel.net>
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/ctype.h>
+#include <sys/limits.h>
+#include <sys/systm.h>
+
+#include <netinet/in.h>
+
+int
+inet_aton(const char *cp, struct in_addr *addr)
+{
+       u_long parts[4];
+       in_addr_t val;
+       const char *c;
+       char *endptr;
+       int gotend, n;
+
+       c = (const char *)cp;
+       n = 0;
+
+       /*
+        * Run through the string, grabbing numbers until
+        * the end of the string, or some error
+        */
+       gotend = 0;
+       while (!gotend) {
+               unsigned long l;
+
+               l = strtoul(c, &endptr, 0);
+
+               if (l == ULONG_MAX || (l == 0 && endptr == c))
+                       return (0);
+
+               val = (in_addr_t)l;
+
+               /*
+                * If the whole string is invalid, endptr will equal
+                * c.. this way we can make sure someone hasn't
+                * gone '.12' or something which would get past
+                * the next check.
+                */
+               if (endptr == c)
+                       return (0);
+               parts[n] = val;
+               c = endptr;
+
+               /* Check the next character past the previous number's end */
+               switch (*c) {
+               case '.' :
+
+                       /* Make sure we only do 3 dots .. */
+                       if (n == 3)     /* Whoops. Quit. */
+                               return (0);
+                       n++;
+                       c++;
+                       break;
+
+               case '\0':
+                       gotend = 1;
+                       break;
+
+               default:
+                       if (isspace((unsigned char)*c)) {
+                               gotend = 1;
+                               break;
+                       } else {
+
+                               /* Invalid character, then fail. */
+                               return (0);
+                       }
+               }
+
+       }
+
+       /* Concoct the address according to the number of parts specified. */
+       switch (n) {
+       case 0:                         /* a -- 32 bits */
+
+               /*
+                * Nothing is necessary here.  Overflow checking was
+                * already done in strtoul().
+                */
+               break;
+       case 1:                         /* a.b -- 8.24 bits */
+               if (val > 0xffffff || parts[0] > 0xff)
+                       return (0);
+               val |= parts[0] << 24;
+               break;
+
+       case 2:                         /* a.b.c -- 8.8.16 bits */
+               if (val > 0xffff || parts[0] > 0xff || parts[1] > 0xff)
+                       return (0);
+               val |= (parts[0] << 24) | (parts[1] << 16);
+               break;
+
+       case 3:                         /* a.b.c.d -- 8.8.8.8 bits */
+               if (val > 0xff || parts[0] > 0xff || parts[1] > 0xff ||
+                   parts[2] > 0xff)
+                       return (0);
+               val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
+               break;
+       }
+
+       if (addr != NULL)
+               addr->s_addr = htonl(val);
+       return (1);
+}
+

Modified: stable/8/sys/netinet/in.h
==============================================================================
--- stable/8/sys/netinet/in.h   Sun Nov 22 15:57:08 2009        (r199650)
+++ stable/8/sys/netinet/in.h   Sun Nov 22 16:04:49 2009        (r199651)
@@ -733,6 +733,7 @@ int  in_broadcast(struct in_addr, struct
 int     in_canforward(struct in_addr);
 int     in_localaddr(struct in_addr);
 int     in_localip(struct in_addr);
+int     inet_aton(const char *, struct in_addr *); /* in libkern */
 char   *inet_ntoa(struct in_addr); /* in libkern */
 char   *inet_ntoa_r(struct in_addr ina, char *buf); /* in libkern */
 void    in_ifdetach(struct ifnet *);

Modified: stable/8/sys/netinet/libalias/alias_proxy.c
==============================================================================
--- stable/8/sys/netinet/libalias/alias_proxy.c Sun Nov 22 15:57:08 2009        
(r199650)
+++ stable/8/sys/netinet/libalias/alias_proxy.c Sun Nov 22 16:04:49 2009        
(r199651)
@@ -137,9 +137,6 @@ struct proxy_entry {
                                destination of a proxied IP packet
 */
 
-#ifdef _KERNEL         /* XXX: can it be moved to libkern? */
-static int inet_aton(const char *cp, struct in_addr *addr);
-#endif
 static int     IpMask(int, struct in_addr *);
 static int     IpAddr(char *, struct in_addr *);
 static int     IpPort(char *, int, int *);
@@ -149,107 +146,6 @@ static int        RuleNumberDelete(struct libal
 static void    ProxyEncodeTcpStream(struct alias_link *, struct ip *, int);
 static void    ProxyEncodeIpHeader(struct ip *, int);
 
-#ifdef _KERNEL
-static int
-inet_aton(cp, addr)
-        const char *cp;
-        struct in_addr *addr;
-{
-       u_long parts[4];
-       in_addr_t val;
-       const char *c;
-       char *endptr;
-       int gotend, n;
-
-       c = (const char *)cp;
-       n = 0;
-       /*
-        * Run through the string, grabbing numbers until
-        * the end of the string, or some error
-        */
-       gotend = 0;
-       while (!gotend) {
-               unsigned long l;
-
-               l = strtoul(c, &endptr, 0);
-
-               if (l == ULONG_MAX || (l == 0 && endptr == c))
-                       return (0);
-
-               val = (in_addr_t)l;
-               /*
-                * If the whole string is invalid, endptr will equal
-                * c.. this way we can make sure someone hasn't
-                * gone '.12' or something which would get past
-                * the next check.
-                */
-               if (endptr == c)
-                       return (0);
-               parts[n] = val;
-               c = endptr;
-
-               /* Check the next character past the previous number's end */
-               switch (*c) {
-               case '.' :
-                       /* Make sure we only do 3 dots .. */
-                       if (n == 3)     /* Whoops. Quit. */
-                               return (0);
-                       n++;
-                       c++;
-                       break;
-
-               case '\0':
-                       gotend = 1;
-                       break;
-
-               default:
-                       if (isspace((unsigned char)*c)) {
-                               gotend = 1;
-                               break;
-                       } else
-                               return (0);     /* Invalid character, so fail */
-               }
-
-       }
-
-       /*
-        * Concoct the address according to
-        * the number of parts specified.
-        */
-
-       switch (n) {
-       case 0:                         /* a -- 32 bits */
-               /*
-                * Nothing is necessary here.  Overflow checking was
-                * already done in strtoul().
-                */
-               break;
-       case 1:                         /* a.b -- 8.24 bits */
-               if (val > 0xffffff || parts[0] > 0xff)
-                       return (0);
-               val |= parts[0] << 24;
-               break;
-
-       case 2:                         /* a.b.c -- 8.8.16 bits */
-               if (val > 0xffff || parts[0] > 0xff || parts[1] > 0xff)
-                       return (0);
-               val |= (parts[0] << 24) | (parts[1] << 16);
-               break;
-
-       case 3:                         /* a.b.c.d -- 8.8.8.8 bits */
-               if (val > 0xff || parts[0] > 0xff || parts[1] > 0xff ||
-                   parts[2] > 0xff)
-                       return (0);
-               val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
-               break;
-       }
-
-       if (addr != NULL)
-               addr->s_addr = htonl(val);
-       return (1);
-}
-#endif
-
 static int
 IpMask(int nbits, struct in_addr *mask)
 {
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to