svn commit: r199208 - in head/sys: conf libkern netinet netinet/libalias

Navdeep Parhar nparhar at gmail.com
Thu Nov 12 03:55:41 UTC 2009


This seems to break kernel builds.  Throwing away the private
inet_aton implementation inside krping.c will probably fix it.

/usr/src/sys/modules/rdma/krping/../../../contrib/rdma/krping/krping.c:117:
error: static declaration of 'inet_aton' follows non-static
declaration
@/netinet/in.h:716: error: previous declaration of 'inet_aton' was here
*** Error code 1

Regards,
Navdeep

On Wed, Nov 11, 2009 at 4:46 PM, Attilio Rao <attilio at freebsd.org> wrote:
> Author: attilio
> Date: Thu Nov 12 00:46:28 2009
> New Revision: 199208
> URL: http://svn.freebsd.org/changeset/base/199208
>
> Log:
>  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.
>
>  Obtained from:        Sandvine Incorporated
>  Sponsored by: Sandvine Incorporated
>  MFC:          1 week
>
> Added:
>  head/sys/libkern/inet_aton.c   (contents, props changed)
> Modified:
>  head/sys/conf/files
>  head/sys/netinet/in.h
>  head/sys/netinet/libalias/alias_proxy.c
>
> Modified: head/sys/conf/files
> ==============================================================================
> --- head/sys/conf/files Thu Nov 12 00:36:22 2009        (r199207)
> +++ head/sys/conf/files Thu Nov 12 00:46:28 2009        (r199208)
> @@ -2193,6 +2193,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
>
> Added: head/sys/libkern/inet_aton.c
> ==============================================================================
> --- /dev/null   00:00:00 1970   (empty, because file is newly added)
> +++ head/sys/libkern/inet_aton.c        Thu Nov 12 00:46:28 2009        (r199208)
> @@ -0,0 +1,136 @@
> +/*-
> + * Copyright (c) 2001 Charles Mott <cm at 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: head/sys/netinet/in.h
> ==============================================================================
> --- head/sys/netinet/in.h       Thu Nov 12 00:36:22 2009        (r199207)
> +++ head/sys/netinet/in.h       Thu Nov 12 00:46:28 2009        (r199208)
> @@ -713,6 +713,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: head/sys/netinet/libalias/alias_proxy.c
> ==============================================================================
> --- head/sys/netinet/libalias/alias_proxy.c     Thu Nov 12 00:36:22 2009        (r199207)
> +++ head/sys/netinet/libalias/alias_proxy.c     Thu Nov 12 00:46:28 2009        (r199208)
> @@ -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 at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/svn-src-all
> To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
>


More information about the svn-src-all mailing list