inet_ntop/inet_pton/inet_aton, and don't use AC_REPLACE_FUNCS to set
LIBOBJS to include the replacement module, as that does the full check
for the routine again, not just the simple replacement.
Move the tests in question after AC_LBL_LIBPCAP, so that we link with
the appropriate libraries (e.g., "-lsocket -lnsl" on Solaris) to use
when using those routines.
the output stream for "-w" to be flushed after each packet is dumped.
Add checks for "pcap_dump_flush()", and only enable the "-U" flag if
it's present. Clean up the handling of the "getopt()" argument and the
usage message to get rid of the pile of #ifdefs.
Add documentation for the "-L" and "-y" flags.
Tweak the description of "-r" to properly format "-w" in the text.
the libpcap that comes with some platforms doesn't define it.
Check for "pcap_debug" and "yydebug" in libpcap in the configure
scripts, so that whichever one is present (which might depend on whether
libpcap was built with standard YACC or Berkeley YACC/Bison), if any is
present, will be used by the "-Y" flag (if none is present, "-Y" won't
be supported).
From Neil T. Spring: fixes for many of those warnings:
addrtoname.c, configure.in: Linux needs netinet/ether.h for
ether_ntohost
print-*.c: change char *foo = "bar" to const char *foo = "bar"
to appease -Wwrite-strings; should affect no run-time behavior.
print-*.c: make some variables unsigned.
print-bgp.c: plen ('prefix len') is unsigned, no reason to
validate by comparing to zero.
print-cnfp.c, print-rx.c: use intoa, provided by addrtoname,
instead of inet_ntoa.
print-domain.c: unsigned int l; (l=foo()) < 0 is guaranteed to
be false, so check for (u_int)-1, which represents failure,
explicitly.
print-isakmp.c: complete initialization of attrmap objects.
print-lwres.c: "if(x); print foo;" seemed much more likely to be
intended to be "if(x) { print foo; }".
print-smb.c: complete initialization of some structures.
In addition, add some fixes for the signed vs. unsigned comparison
warnings:
extract.h: cast the result of the byte-extraction-and-combining,
as, at least for the 16-bit version, C's integral promotions
will turn "u_int16_t" into "int" if there are other "int"s
nearby.
print-*.c: make some more variables unsigned, or add casts to an
unsigned type of signed values known not to be negative, or add
casts to "int" of unsigned values known to fit in an "int", and
make other changes needed to handle the aforementioned variables
now being unsigned.
print-isakmp.c: clean up the handling of error/status indicators
in notify messages.
print-ppp.c: get rid of a check that an unsigned quantity is >=
0.
print-radius.c: clean up some of the bounds checking.
print-smb.c: extract the word count into a "u_int" to avoid the
aforementioned problems with C's integral promotions.
print-snmp.c: change a check that an unsigned variable is >= 0
to a check that it's != 0.
Also, fix some formats to use "%u" rather than "%d" for unsigned
quantities.
return a structure pointer. Check whether the C compiler can handle
inline functions that return a structure pointer, not whether they can
handle inline functions that return an int, as at least some versions of
autoconf's AC_C_INLINE do.
Here is a patch for draft-ietf-mobileip-ipv6-17.
- print-mobility.c: Mobility header(MIPv6 defines a new IPv6 protocol)
printing
- added Routing header type 2
- ICMPv6 Home Agent Address Discovery and Mobile Prefix Sol., Adv.
message update
Here is a patch that addresses a few SSL-related issues noticed:
1. The "/usr" directory is not the best choice to start looking
for SSL libraries when cross-compiling. The patch adds
"/usr/${host_alias}" at the front. Actually the test is quite
bogus anyway -- there might be no libcrypto.a library at all
(but e.g. libcrypto.so), so a better approach would be trying to
link against -lcrypto and seeing if that works. First with no
additional options (it might be in the default compiler/linker's
search patch, like on sane systems), then with the -L<dir>
option.
2. The "cast.h" and "rc5.h" headers should include the
"openssl/" path as that is what is used throughout the code.
Right now they are simply not found by configure.
3. The buggy CAST128 test should use a cache variable to permit
overriding by an educated user.
I think I may actually rewrite the test as described in #1 above
one day, but my time is quite limited and tcpdump is not my
priority task, so it might not happen soon. I won't mind if
someone does it earlier.
DECnet support currently assumes certain conditions instead of
checking for them explicitly. The following code checks if
dnet_htoa() is available, possibly in libdnet and also verifies
there is no declaration for the function in <netdnet/dnetdb.h>
before it decides to provide a substitute.
An incomplete getaddrinfo bug test may prevent from
cross-compiling a working IPv6 support. Caching the test's
variable permits a user to override a result if he knows a given
stack implementation is fine.
"no" after printing the "Checking whether to enable the possibly-buggy
SMB printer" message (as we default to not enabling it), rather than
printing nothing and having the next "Checking ..." message show up
after it on the same line.
Don't check for getipnodebyname(), since we don't use it.
Use AC_SEARCH_LIBS instead of AC_CHECK_LIB for -lnsl, so that it
doesn't get included when not needed.
Redo AC_LBL_LIBRARY_NET to use AC_SEARCH_LIBS extensively.
(which doesn't actually seem to be significantly more efficient than
"strdup()", at least not to the extent that it makes any difference to
"tcpdump"), modified to use the BSD "strdup()", rather than the old
"savestr()", on platforms that lack "strdup()".
version of "snprintf()" unless the platform on which we're running lacks
"snprintf()" or "vsnprintf()" - if it lacks one of the "asprintf" family
of routines, we don't drag it in, as we don't use those routines.
when compiling on Linux, as we extracted from those copies the
definitions and declarations we need in order to dissect packets, and
put them into our own header files in the regular source directory.
We should also no longer need to define __STDC__ as 2 on Digital UNIX,
as we're no longer including the native OS's <netinet/ip.h> to get the
layout of an IP packet declared, we're using our own "ip.h" header file
for that.
Digital UNIX using "ip_vhl" rather than "ip_v" and "ip_hl" bitfields if
__STDC__ is defined (we have our own "ip.h", and we don't use bitfields
in it).
Get rid of HAVE_INET_ATON, HAVE_INET_NTOP, and HAVE_INET_PTON - we don't
use them; instead, we supply our own versions of "inet_aton()",
"inet_ntop()", and "inet_pton()". (Defining them in "configure.in"
caused complaints from "autoreconf".)
Check for the "rc5.h" header, as we *do* use HAVE_RC5_H.
bsdi4 ships with BIND8 resolver, and the way it defines inet_{ntop,pton}
is rather strange; it does not ship with libc symbol "inet_ntop".
it ships with "_inet_ntop", and has a #define macro in header to rename it.
AC_CHECK_FUNCS will always fail for resolver functions.
i consider it as a bug in merger. bsdi should have done the following:
- supply _inet_ntop for libc-internal calls
- supply weak symbol inet_ntop for external reference
- no #define in headers
from kame.
- presense of rc5.h does not correctly identify availability of rc5 library
(neither AC_CHECK_FUNCS),
- we don't advocate it,
- and its use is very rare.
"linux-includes/netinet/if_ether.h" to "ethertype.h".
Move other stuff used by dissectors from <netinet/if_ether.h> to
"ether.h", along the lines of "fddi.h" and "token.h".
Move ARP declarations from BSD include files to "print-arp.c".
Remove from dissectors includes of <netinet/if_ether.h>, and add
includes of "ethertype.h" and/or "ether.h" as necessary.
Get rid of configuration options that test declarations now made in
"ether.h" or "print-arp.c", as those declarations are now under our
control, not the OS's control.