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