On Wed, Jan 24, 2001 at 02:39:36AM +0100, Matthias Andree wrote:
> I just tried to compile libpcap/tcpdump 0.6.1 on SuSE 7.0, libpcap was
> fine, but tcpdump failed in print-snmp.c, first failure was a "no such
> member" at line #970. I found out that removing the gxsnmp-0.0.15.1-25 and
> the libsmi-0.2-50 packages helped.
Hmm. Line 970 is
for (smiRange = smiGetFirstRange(smiType->module, smiType->name);
which is code used only if "LIBSMI_API_V1" is defined - but you have
libsmi-0.2-50 installed, so it presumably has the V2 API, not the V1
API.
Did you also happen to have libsmi 0.1 installed? If not, the check for
which API version you have may not be working correctly; the check is
#if (SMI_VERSION_MAJOR == 0 && SMI_VERSION_MINOR >= 2) || (SMI_VERSION_MAJOR > 0)
but, at least in the libsmi 0.2 source I have here, no header file
defines SMI_VERSION_MAJOR or SMI_VERSION_MINOR, unless I'm missing
something, so I'm not sure how that test would work.
I guess checking whether SMI_NODEKIND_MODULE is defined might work -
it's #defined by libsmi 0.1.8, but not by 0.2.
> After I removed these and
> reconfigured tcpdump, I only got this warning:
>
> ./setsignal.c: In function `setsignal':
> ./setsignal.c:72: warning: return makes pointer from integer without a
> cast
>
> It looks as if on my Linux (2.2.18, BTW), setsignal hat tried to use
> sigset in spite of the comments above setsignal. Might the sigaction
> check be missing from configure.in?
>
> After configuration, I have (config.h):
> /* Define as the return type of signal handlers (int or void). */
> #define RETSIGTYPE void
> /* Define this on IRIX */
> /* #undef _BSD_SIGNALS */
> /* Define if you have the sigaction function. */
> /* #undef HAVE_SIGACTION */
> /* Define if you have the sigset function. */
> #define HAVE_SIGSET 1
>
> I don't get warnings or linker failures on sigset, but I'm wondering who
> checks for SIGACTION and SIGSET as I cannot find these in configure.in.
That's done in AC_LBL_TYPE_SIGNAL in "aclocal.m4"; for some unknown
reason, it "prefer[s] sigset() to sigaction()", as the comment says.
The only reason I can think of is that it has a simpler calling
sequence, but "sigaction()" is in POSIX, so I'd be inclined to prefer
it.
However, where is "signal()" declared in Linux header files? The glibc
2.1.2 "signal.h" header appears to define "sigset()" as returning a
"__sighandler_t", which is a function pointer, and "setsignal.c"
includes <signal.h>, so it sounds as if it *should* think "sigset()"
returns a pointer.
-
This is the TCPDUMP workers list. It is archived at
http://www.tcpdump.org/lists/workers/index.html
To unsubscribe use mailto:[EMAIL PROTECTED]?body=unsubscribe