On Jul 29, 2018, at 5:48 AM, Denis Ovsienko <de...@ovsienko.info> wrote:

> Building (configure+gcc) tcpdump master branch with libpcap 0.6.1 yields the 
> following compiler warnings, some of which are as easy as decorating a 
> variable declaration with #ifdef:
> 
> ./tcpdump.c: In function ‘open_interface’:
> ./tcpdump.c:1382:22: warning: passing argument 1 of ‘pcap_open_live’ discards 
> ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
>  pc = pcap_open_live(device, ndo->ndo_snaplen, !pflag, 1000, ebuf);
>                      ^~~~~~
> In file included from ./tcpdump.c:97:0:
> ../libpcap/pcap.h:136:9: note: expected ‘char *’ but argument is of type 
> ‘const char *’
> pcap_t *pcap_open_live(char *, int, int, int, char *);
>         ^~~~~~~~~~~~~~

Libpcap *should* have had it as const since the beginning, but const was new 
back when libpcap was introduced; we later added const to a bunch of argument 
declarations.

In this particular case, we could make the argument to open_interface() a "char 
*" rather than a "const char *" - it's just a routine internal to tcpdump, so 
it's not as if we're claiming "hey, we might modify this" to code using it.

> ./tcpdump.c: At top level:
> ./tcpdump.c:221:22: warning: ‘show_tstamp_types_and_exit’ declared ‘static’ 
> but never defined [-Wunused-function]
> static NORETURN void show_tstamp_types_and_exit(pcap_t *, const char *device);
>                      ^~~~~~~~~~~~~~~~~~~~~~~~~~
> ./tcpdump.c:195:12: warning: ‘Uflag’ defined but not used [-Wunused-variable]
> static int Uflag;   /* "unbuffered" output of dump files */
>            ^~~~~
> ./tcpdump.c:190:12: warning: ‘jflag’ defined but not used [-Wunused-variable]
> static int jflag = -1;   /* packet time stamp source */
>            ^~~~~
> ./tcpdump.c:155:12: warning: ‘Bflag’ defined but not used [-Wunused-variable]
> static int Bflag;   /* buffer size */
>            ^~~~~

Just #ifdefs around the definitions of the flags and declaration of the routine 
fixes that.  Done in ca47c45b8eab2e205165e175411a5e71e18101fc.

> ./print.c: In function ‘get_if_printer’:
> ./print.c:304:13: warning: implicit declaration of function 
> ‘pcap_datalink_val_to_name’; did you mean ‘pcap_datalink’? 
> [-Wimplicit-function-declaration]
>   dltname = pcap_datalink_val_to_name(type);
>             ^~~~~~~~~~~~~~~~~~~~~~~~~
>             pcap_datalink
> ./print.c:304:11: warning: assignment makes pointer from integer without a 
> cast [-Wint-conversion]
>   dltname = pcap_datalink_val_to_name(type);
>           ^

We need to include "pcap-missing.h" in "print.c" to declare it.  Done in 
b314392dfe5345edfdd8de07c78a4ea2ae636fd9.

> ./print-juniper.c: In function ‘juniper_parse_header’:
> ./print-juniper.c:1203:14: warning: unused variable ‘control_word’ 
> [-Wunused-variable]
>     uint32_t control_word;
>              ^~~~~~~~~~~~
> At top level:
> ./print-juniper.c:1197:1: warning: ‘juniper_parse_header’ defined but not 
> used [-Wunused-function]
> juniper_parse_header(netdissect_options *ndo,
> ^~~~~~~~~~~~~~~~~~~~
> ./print-juniper.c:1079:1: warning: ‘juniper_ppp_heuristic_guess’ defined but 
> not used [-Wunused-function]
> juniper_ppp_heuristic_guess(netdissect_options *ndo,
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> ./print-juniper.c:441:25: warning: ‘juniper_protocol_values’ defined but not 
> used [-Wunused-const-variable=]
> static const struct tok juniper_protocol_values[] = {
>                         ^~~~~~~~~~~~~~~~~~~~~~~
> ./print-juniper.c:67:25: warning: ‘juniper_ipsec_type_values’ defined but not 
> used [-Wunused-const-variable=]
> static const struct tok juniper_ipsec_type_values[] = {
>                         ^~~~~~~~~~~~~~~~~~~~~~~~~

Those required #ifdefs/#ifs.  Done in 09d0c4368cf4e3bb247baf9415cf98416402ea14.
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers@lists.tcpdump.org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers

Reply via email to