Date: Wed, 11 Nov 2009 19:55:40 -0800 From: Navdeep Parhar <nparhar@gmail.com> To: Attilio Rao <attilio@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r199208 - in head/sys: conf libkern netinet netinet/libalias Message-ID: <d04e16b70911111955v63b452d6n5c1503f0cb273e01@mail.gmail.com> In-Reply-To: <200911120046.nAC0kS2V012731@svn.freebsd.org> References: <200911120046.nAC0kS2V012731@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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@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@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@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/svn-src-all > To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d04e16b70911111955v63b452d6n5c1503f0cb273e01>
