Ethereal-dev: [ethereal-dev] Re: [ethereal-users] Problem with inet_v6defs.h and Linux glibc 2
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Guy Harris <gharris@xxxxxxxxxxxx>
Date: Fri, 14 Jul 2000 00:05:21 -0700
On Tue, Jul 11, 2000 at 10:05:10PM -0400, Craig Rodrigues wrote: > I recently upgraded to glibc 2.2, and when I tried to compile > ethereal, I got the following error: > > gcc -DHAVE_CONFIG_H -I. -I. -I. -I. -I./wiretap -I/usr/local/include -I/usr/include/pcap -Wall -g -O2 -I. -I./wiretap -I/usr/local/include -I/usr/lib/glib/include -I/usr/X11R6/include -I/usr/include/pcap -c inet_pton.c > In file included from inet_pton.c:56: > inet_v6defs.h:33: conflicting types for `inet_aton' > /usr/include/arpa/inet.h:67: previous declaration of `inet_aton' > > inet_aton is defined in the inet.h file with glibc 2.2. > > The attached patch is required to get things to compile. Hmm. I think the correct answer here may be to 1) move the declaration of "inet_aton()" from "inet_v6defs.h" (it's an IPv4 function, not an IPv6 function) to a new "inet_aton.h" file; 2) add a new NEED_INET_ATON_H configuration #define, which is set iff the platform on which you're running doesn't define "inet_aton()" (which presumably means it doesn't declare it, either); 3) have the files that include calls to "inet_aton()" do #ifdef NEED_INET_ATON_H #include "inet_aton.h" #endif so that we declare "inet_aton()" ourselves only if we define it ourselves, i.e. if it doesn't come with the OS (hopefully, if there are any platforms that define it in a library but don't declare it in <arpa/inet.h>, this will, at most, cause whining about it not being declared). If you're building from the Ethereal CVS tree, here's a patch, plus the new "inet_aton.h".
Index: Makefile.am =================================================================== RCS file: /usr/local/cvsroot/ethereal/Makefile.am,v retrieving revision 1.208 diff -c -r1.208 Makefile.am *** Makefile.am 2000/07/06 10:03:41 1.208 --- Makefile.am 2000/07/14 07:04:14 *************** *** 260,265 **** --- 260,266 ---- exceptions.h \ follow.c \ follow.h \ + inet_aton.h \ inet_v6defs.h \ ipproto.c \ ipv4.c \ Index: acconfig.h =================================================================== RCS file: /usr/local/cvsroot/ethereal/acconfig.h,v retrieving revision 1.15 diff -c -r1.15 acconfig.h *** acconfig.h 2000/01/15 10:25:41 1.15 --- acconfig.h 2000/07/14 07:04:14 *************** *** 31,36 **** --- 31,38 ---- #undef DATAFILE_DIR + #undef NEED_INET_ATON_H + #undef NEED_INET_V6DEFS_H #undef NEED_SNPRINTF_H Index: config.h.win32 =================================================================== RCS file: /usr/local/cvsroot/ethereal/config.h.win32,v retrieving revision 1.13 diff -c -r1.13 config.h.win32 *** config.h.win32 2000/07/05 17:24:29 1.13 --- config.h.win32 2000/07/14 07:04:15 *************** *** 72,77 **** --- 72,78 ---- #define HAVE_WINSOCK_H 1 #define HAVE_DIRECT_H 1 #define HAVE_IO_H 1 + #define NEED_INET_ATON_H 1 #define NEED_INET_V6DEFS_H 1 #define NEED_GETOPT_H 1 #define snprintf _snprintf Index: configure.in =================================================================== RCS file: /usr/local/cvsroot/ethereal/configure.in,v retrieving revision 1.94 diff -c -r1.94 configure.in *** configure.in 2000/07/06 10:03:43 1.94 --- configure.in 2000/07/14 07:04:15 *************** *** 313,318 **** --- 313,319 ---- if test "$ac_cv_func_inet_aton" = no ; then INET_ATON_C="inet_aton.c" INET_ATON_O="inet_aton.o" + AC_DEFINE(NEED_INET_ATON_H) fi AC_SUBST(INET_ATON_C) AC_SUBST(INET_ATON_O) Index: inet_aton.c =================================================================== RCS file: /usr/local/cvsroot/ethereal/inet_aton.c,v retrieving revision 1.2 diff -c -r1.2 inet_aton.c *** inet_aton.c 2000/01/10 17:32:51 1.2 --- inet_aton.c 2000/07/14 07:04:16 *************** *** 57,62 **** --- 57,64 ---- #include <ctype.h> + #include "inet_aton.h" + /* * Check whether "cp" is a valid ascii representation * of an Internet address and convert to a binary address. Index: inet_v6defs.h =================================================================== RCS file: /usr/local/cvsroot/ethereal/inet_v6defs.h,v retrieving revision 1.2 diff -c -r1.2 inet_v6defs.h *** inet_v6defs.h 2000/01/10 17:32:51 1.2 --- inet_v6defs.h 2000/07/14 07:04:16 *************** *** 1,4 **** ! /* inet_pton.h * * $Id: inet_v6defs.h,v 1.2 2000/01/10 17:32:51 gram Exp $ * --- 1,4 ---- ! /* inet_v6defs.h * * $Id: inet_v6defs.h,v 1.2 2000/01/10 17:32:51 gram Exp $ * *************** *** 22,36 **** */ /* ! * Version of "inet_pton()" and "inet_ntop()", for the benefit of OSes that * don't have it. */ extern int inet_pton(int af, const char *src, void *dst); extern const char *inet_ntop(int af, const void *src, char *dst, size_t size); - - struct in_addr; - extern int inet_aton(const char* cp_arg, struct in_addr *addr); /* * Those OSes may also not have AF_INET6, so declare it here if it's not --- 22,33 ---- */ /* ! * Versions of "inet_pton()" and "inet_ntop()", for the benefit of OSes that * don't have it. */ extern int inet_pton(int af, const char *src, void *dst); extern const char *inet_ntop(int af, const void *src, char *dst, size_t size); /* * Those OSes may also not have AF_INET6, so declare it here if it's not Index: resolv.c =================================================================== RCS file: /usr/local/cvsroot/ethereal/resolv.c,v retrieving revision 1.23 diff -c -r1.23 resolv.c *** resolv.c 2000/01/29 16:41:14 1.23 --- resolv.c 2000/07/14 07:04:19 *************** *** 69,74 **** --- 69,78 ---- # include <setjmp.h> #endif + #ifdef NEED_INET_ATON_H + # include "inet_aton.h" + #endif + #ifdef NEED_INET_V6DEFS_H # include "inet_v6defs.h" #endif
/* inet_aton.h * * $Id$ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@xxxxxxxx> * Copyright 1998 Gerald Combs * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * Version of "inet_aton()", for the benefit of OSes that don't have it. */ struct in_addr; extern int inet_aton(const char* cp_arg, struct in_addr *addr);
- Prev by Date: [ethereal-dev] Snapshot of new NCP dissector
- Next by Date: [no subject]
- Previous by thread: [ethereal-dev] Snapshot of new NCP dissector
- Next by thread: [no subject]
- Index(es):