From: <bac...@li...> - 2004-12-22 17:23:21
|
The following bug has been CLOSED ====================================================================== http://bugs.bacula.org/bug_view_advanced_page.php?bug_id=0000190 ====================================================================== Reported By: abuehler Assigned To: ====================================================================== Project: bacula Bug ID: 190 Category: configure/build process Reproducibility: always Severity: block Priority: normal Status: closed ====================================================================== Date Submitted: 12-02-2004 08:14 PST Last Modified: 12-22-2004 09:27 PST ====================================================================== Summary: Comile src/lib/bnet.c failes, missing protodefs for inet_aton() Description: The g++ version is 2.95.2. ------------------------------------ g++ -c -I/usr/local/include -I. -I.. -I/usr/local/include bnet.c bnet.c: In function `class dlist * bnet_host2ipaddrs(const char *, int, const char **)': bnet.c:620: implicit declaration of function `int inet_aton(...)' gmake[1]: *** [bnet.o] Error 1 ------------------------------------ There are also problems with inet_ntop(), because it is used in conjunction with ipv6, which is not supported by Solaris 2.6. ====================================================================== ---------------------------------------------------------------------- abuehler - 12-03-2004 01:29 PST ---------------------------------------------------------------------- The bnet.diff adds the function inet_aton(). HAVE_OLD_SOCKOPT is only set on Solaris 2.6, as far as I know. ---------------------------------------------------------------------- abuehler - 12-03-2004 01:40 PST ---------------------------------------------------------------------- The no_ipv6.diff adds preprocessor definitions for HAVE_IPV6 in bnet_server.c and address_conf.c. These two diffs allow for a successful compilation on Solaris 2.6. I will try a functionality test today. Please set the severity level to minor. ---------------------------------------------------------------------- kern - 12-03-2004 12:28 PST ---------------------------------------------------------------------- I am willing to take the bnet.diff, because it is probably reasonable that if one has the old sockopt one is not likely to have inet_aton(), though it *really* should be keyed on HAVE_INET_ATON. I am not prepared to take the second patch because you remove calls to several subroutines and error messages and key it on IPv6. This will break the code on most machines. The correct ifdefing is already present as far as I can tell. If the ifdefs are not correctly detected on your system, i.e. you do not have inet_ntop or inet_ntoa, then you will need to supply corrections to autoconf/configure.in or one of the other modules. ---------------------------------------------------------------------- abuehler - 12-03-2004 14:42 PST ---------------------------------------------------------------------- Setting a HAVE_INET_ATON or maybe a NEED_INET_ATON would be good idea, but I don't known much about setting up configure.in. The other patch has nothing to do with a wrong dectection of the inet_ntop function (which is present and working under Solaris 2.6). Configure detects the inet_ntop function right. But the parameters of the inet_ntop use ipv6 related structs or definitions. These are not present on Solaris 2.6. That was the reason why I choose the combination of the ifdefs in the no_ipv6.diff. In the no_ipv6.patch.txt I separate these ifdefs and use the inet_ntop. ---------------------------------------------------------------------- kern - 12-18-2004 03:07 PST ---------------------------------------------------------------------- I've added your replacement for inet_aton(), but put it in address_conf.c since it seems more logical there. I also started modifying the inet_ntop() code for another bug report (bad argument), then starting adding your code. In the end, to do it correctly, the #ifdefing became *really* messy and impossible to read, so I moved all the code into address_conf.c This simplified things enormously. The results are now in the CVS dated (18Nov04). If you could pull down the code and test it, I would appreciate it since I don't have any way to test the "old" networking code here. If the new code breaks or there are #ifdef problems, please reopen the bug report. ---------------------------------------------------------------------- abuehler - 12-21-2004 08:15 PST ---------------------------------------------------------------------- I have checked out the cvs and tried to compile the source. Two errors appeared: 1) typo error, *** address_conf.c.orig Mon Dec 20 11:09:40 2004 --- address_conf.c Mon Dec 20 11:33:11 2004 *************** *** 572,578 **** (void*)&(((struct sockaddr_in*)sa)->sin_addr) : (void*)&(((struct sockaddr_in6*)sa)->sin6_addr), # else ! (void*)&(((struct sockaddr_in*)sa)->sin_addr) : # endif /* HAVE_IPV6 */ buf, len); #else --- 572,578 ---- (void*)&(((struct sockaddr_in*)sa)->sin_addr) : (void*)&(((struct sockaddr_in6*)sa)->sin6_addr), # else ! (void*)&(((struct sockaddr_in*)sa)->sin_addr), # endif /* HAVE_IPV6 */ buf, len); #else 2) e.g. on linking bacula-fd ld: fatal: symbol `inet_aton(char const *, in_addr *)' is multiply defined: (file ../lib/libbac.a(bnet.o) and file ../lib/libbac.a(address_conf.o)); It seems that the inet_aton code is still present in bnet.c After correcting the mentioned typo and removing the inet_aton function from bnet.c the code compiles fine. Backup would run but the file daemon crashes afterwards. Should I raise a new bug report with the traceback? ---------------------------------------------------------------------- kern - 12-21-2004 09:00 PST ---------------------------------------------------------------------- Thanks for the fixes. I've now corrected them and put them in the CVS. It will take a few hours for them to be updated in the public CVS. If the crash in the FD occurs because of my changes and did not occur before, then please attach the traceback to this bug report (with extension .txt). If the crash in the FD has always been there, then please open a new bug report as it is probably not related to these changes. ---------------------------------------------------------------------- abuehler - 12-22-2004 02:03 PST ---------------------------------------------------------------------- The cvs version 1.37.1 (21Dec04) compiles fine now. Only some compiler warnings: "aggregate has a partly bracketed initializer" which also appeared in previous versions. I don't think the crashes where related to these changes, so I raised a new bug report http://bugs.bacula.org/bug_view_advanced_page.php?bug_id=0000209. ---------------------------------------------------------------------- kern - 12-22-2004 09:27 PST ---------------------------------------------------------------------- OK, based on your last bug note, I'm closing this bug report. Thanks for helping me get the code working correctly. Fixed in 1.37.1 Bug History Date Modified Username Field Change ====================================================================== 12-02-04 08:14 abuehler New Bug 12-03-04 01:27 abuehler File Added: bnet.diff 12-03-04 01:29 abuehler Bugnote Added: 0000500 12-03-04 01:29 abuehler File Added: no_ipv6.diff 12-03-04 01:40 abuehler Bugnote Added: 0000501 12-03-04 12:28 kern Bugnote Added: 0000508 12-03-04 12:28 kern Description Updated 12-03-04 12:28 kern Status new => feedback 12-03-04 13:44 abuehler File Added: no_ipv6.patch.txt 12-03-04 14:42 abuehler Bugnote Added: 0000513 12-18-04 03:07 kern Bugnote Added: 0000561 12-18-04 03:07 kern Resolution open => fixed 12-18-04 03:07 kern Status feedback => closed 12-18-04 03:07 kern version 1.36.0 => 1.36.1 12-21-04 08:15 abuehler Bugnote Added: 0000576 12-21-04 08:15 abuehler Resolution fixed => reopened 12-21-04 08:15 abuehler Status closed => feedback 12-21-04 09:00 kern Bugnote Added: 0000577 12-22-04 02:03 abuehler Bugnote Added: 0000580 12-22-04 09:27 kern Bugnote Added: 0000584 12-22-04 09:27 kern Resolution reopened => fixed 12-22-04 09:27 kern Status feedback => closed ====================================================================== |