tcpdump mailing list archives

uint_XX_t, u_int_XX_t and NFLOG test case


From: Denis Ovsienko <infrastation () yandex ru>
Date: Wed, 23 Apr 2014 14:46:18 +0400

Greetings.

After the recent u_intXX_t type elimination in tcpdump I did a test build on an OpenIndiana x86_64 VM (which identifies 
itself as SunOS 5.11) and suddenly it failed on the NFLOG test case. Interestingly, that test case not just used to 
fail on OpenCSW Solaris 10 build servers during automatic builds (linked from www.tcpdump.org), but on one of the 
servers it sometimes recovered on itself and then failed again. All that said, it never failed in a live shell on the 
same server. But now it did:

Failed test: nflog-e

1,4d0
< version 0, resource ID 20, family IPv4 (2), length 180: 74.82.42.42.53 > 10.0.0.20.42585: 17265 1/0/0 A 
93.184.216.119 (45)
< version 0, resource ID 20, family IPv4 (2), length 192: 74.82.42.42.53 > 10.0.0.20.45190: 52954 1/0/0 AAAA 
2606:2800:220:6d:26bf:1447:1097:aa7 (57)
< version 0, resource ID 20, family IPv4 (2), length 184: 74.82.42.42.53 > 10.0.0.20.44031: 8279 1/0/0 A 93.184.216.119 
(49)
< version 0, resource ID 20, family IPv4 (2), length 196: 74.82.42.42.53 > 10.0.0.20.48736: 2122 1/0/0 AAAA 
2606:2800:220:6d:26bf:1447:1097:aa7 (61)

So, finally it had reproduced at hand and the reason for tcpdump not decoding DLT_NFLOG was that HAVE_PCAP_NFLOG_H was 
not defined at compile time and the following was in config.log:

configure:7341: checking for pcap/nflog.h
configure:7341: /usr/gcc/4.3/bin/gcc -c -DINET6 -I/usr/inet6/include -g -O2  -I./../libpcap  conftest.c >&5
In file included from conftest.c:71:
./../libpcap/pcap/nflog.h:43: error: expected specifier-qualifier-list before 'u_int8_t'
./../libpcap/pcap/nflog.h:49: error: expected specifier-qualifier-list before 'u_int16_t'
./../libpcap/pcap/nflog.h:55: error: expected specifier-qualifier-list before 'u_int16_t'
./../libpcap/pcap/nflog.h:61: error: expected specifier-qualifier-list before 'u_int16_t'
./../libpcap/pcap/nflog.h:67: error: expected specifier-qualifier-list before 'u_int64_t'
configure:7341: $? = 1

The checks for other libpcap headers also failed due to the same error:

checking for pcap/bluetooth.h... no
checking for pcap/nflog.h... no
checking for pcap/usb.h... no

Updating these headers to use uint_XX_t instead of u_intXX_t fixes respective detection and the NFLOG test case in 
particular but it seems tcpdump should tolerate the u_intXX_t types from libpcap for indefinitely longer time as there 
are many old libpcap installations around. Other opinions are welcome.

-- 
    Denis Ovsienko
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers () lists tcpdump org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers

Current thread: