2 days agoUpdate Guy's e-mail address in CREDITS. [skip ci] master
Denis Ovsienko [Mon, 6 Dec 2021 19:03:50 +0000 (19:03 +0000)] 
Update Guy's e-mail address in CREDITS. [skip ci]

2 months agoCI: Refine GCC identification. coverity_scan
Denis Ovsienko [Tue, 14 Sep 2021 20:42:45 +0000 (21:42 +0100)] 
CI: Refine GCC identification.

Same as in libpcap.

3 months agoCI: Add MAKE_BIN to allow non-default makes. [skip ci]
Denis Ovsienko [Tue, 17 Aug 2021 20:21:48 +0000 (21:21 +0100)] 
CI: Add MAKE_BIN to allow non-default makes. [skip ci]

Same as in tcpdump.

3 months agoLose stringification macros in search.c
Denis Ovsienko [Tue, 10 Aug 2021 08:36:26 +0000 (09:36 +0100)] 
Lose stringification macros in search.c

SunOS solaris11-amd64 5.11 i86pc i386 i86pc
clang version 6.0.0 (tags/RELEASE_600/final)

./search.c:76:9: warning: 'SS' macro redefined [-Wmacro-redefined]
/usr/include/sys/regset.h:75:9: note: previous definition is here

The macros have no purpose since commit e1467ce, so just lose them.

4 months agoRefine diag-control.h. [skip ci]
Denis Ovsienko [Fri, 6 Aug 2021 22:36:16 +0000 (23:36 +0100)] 
Refine diag-control.h. [skip ci]

4 months agoAddress compiler warnings on Solaris.
Denis Ovsienko [Thu, 5 Aug 2021 00:42:36 +0000 (01:42 +0100)] 
Address compiler warnings on Solaris.

In sessions.c include config.h before any other headers, same as all
other .c files do. This resolves the following warning:

"./config.h", line 86: macro redefined: _FILE_OFFSET_BITS

Also squelch a signedness warning that GCC 5.5.0 on Solaris 10 with
libnids does not emit unless run with -Werror:

./sessions.c:736:43: error: comparison between signed and unsigned
  integer expressions [-Werror=sign-compare]

Remove the last exemption rules.

4 months agoSquelch pointer conversion warnings in sessions.c.
Denis Ovsienko [Tue, 3 Aug 2021 11:33:22 +0000 (12:33 +0100)] 
Squelch pointer conversion warnings in sessions.c.

Although compilers implement function-to-void pointer conversion, there
seems to be a difference in opinion whether it deserves a warning and
which level and wording would be the most appropriate.  That said,
libnids headers are unlikely to fix their expected pointer type, and the
warnings have been tainting Linux builds that have libnids-dev, so let's
just squelch them.

In compiler-tests.h synchronize Clang and XL C macros with libpcap.
Port diag-control.h from tcpdump, spell XL C tests and pragmas better
and put the default empty definitions after the if block to make it
easier to follow.  Remove the exemption rule.

4 months agoCI: Get randomness right in mktempdir_diy(). [skip ci]
Denis Ovsienko [Tue, 3 Aug 2021 11:30:56 +0000 (12:30 +0100)] 
CI: Get randomness right in mktempdir_diy(). [skip ci]

On AIX 7.1 something was not exactly right between dd and od, so the hex
dump often had the random bytes interleaved with zeroes.  After trimming
this would yield temporary directory names like
/tmp/tcpslice_build_matrix.19000000 quite often.  Instead of reading a
byte 4 times from /dev/urandom read 4 bytes once and work around this
effect, whatever the root cause is.

4 months agoAddress a warning in extract_slice().
Denis Ovsienko [Mon, 2 Aug 2021 09:12:05 +0000 (10:12 +0100)] 
Address a warning in extract_slice().

tcpslice.c:960:63: warning: cast discards 'const' qualifier from pointer
  target type [-Wcast-qual]

While at it, skip packets that failed to capture any bytes, for whatever
reason. Spell the remaining warnings in the exemption rule comment.

4 months agoFix spelling in an error message.
Denis Ovsienko [Mon, 2 Aug 2021 08:36:30 +0000 (09:36 +0100)] 
Fix spelling in an error message.

4 months agoSquelch more warnings from GCC on Solaris 9.
Denis Ovsienko [Sun, 1 Aug 2021 18:45:36 +0000 (19:45 +0100)] 
Squelch more warnings from GCC on Solaris 9.

It looks like in GCC 4.6.4 the code analyzer is not advanced enough to
verify the code flow completely on its own, so add a few sham
initializations with remarks and remove the exemption rule in

* In timestamp_raw_format_correct() the only way to enter the
  MICROSECONDS state is through the POINT state having initializated

./tcpslice.c:360:32: warning: 'us_digits' may be used uninitialized in
  this function [-Wuninitialized]

* Ibid, the only way to enter the SECONDS state is through the START
  state having initializated s_value.

./tcpslice.c:348:27: warning: 's_value' may be used uninitialized in
  this function [-Wuninitialized]

* In parse_token() the only way to enter the UNIT state is through the
  AMOUNT state having initializated char_unit.

./tcpslice.c:404:4: warning: 'char_unit' may be used uninitialized in
  this function [-Wuninitialized]

* Ibid, the only way to enter the AMOUNT state is through the START
  state having initializated amount.

./tcpslice.c:400:25: warning: 'amount' may be used uninitialized in
  this function [-Wuninitialized]

4 months agoUse ctype functions properly.
Denis Ovsienko [Sun, 1 Aug 2021 18:08:59 +0000 (19:08 +0100)] 
Use ctype functions properly.

As the man page explains it, ctype functions arguments must be cast to
unsigned char unless under specific conditions, which do not apply in
this case. Add the necessary type casts and remove one exemption from

./tcpslice.c:335:10: warning: array subscript is of type 'char'
./tcpslice.c:347:10: warning: array subscript is of type 'char'
./tcpslice.c:352:10: warning: array subscript is of type 'char'
./tcpslice.c:360:10: warning: array subscript is of type 'char'
./tcpslice.c:387:10: warning: array subscript is of type 'char'
./tcpslice.c:393:8: warning: array subscript is of type 'char'
./tcpslice.c:395:17: warning: array subscript is of type 'char'
./tcpslice.c:399:10: warning: array subscript is of type 'char'
./tcpslice.c:643:9: warning: array subscript is of type 'char'
./tcpslice.c:647:10: warning: array subscript is of type 'char'
./tcpslice.c:656:8: warning: array subscript is of type 'char'
./tcpslice.c:657:16: warning: array subscript is of type 'char'

4 months agoFIx a typo in a comment. [skip ci]
Guy Harris [Sat, 31 Jul 2021 22:25:34 +0000 (15:25 -0700)] 
FIx a typo in a comment.  [skip ci]

4 months agoconfigure: use ac_c_werror_flag to force unknown compiler flags to fail.
Guy Harris [Sat, 31 Jul 2021 20:52:29 +0000 (13:52 -0700)] 
configure: use ac_c_werror_flag to force unknown compiler flags to fail.

It's not a documented feature, but it's what the documented
AC_LANG_WERROR has used for 13 years, and there's no push/pop mechanism
for AC_LANG_WERROR, so you can't ensure that "fail even on warnings"
will be applied *only* in AC_LBL_CHECK_COMPILER_OPT(), as that's what we
want.  (If we can make sure that *no* compiler tests will produce
warnings, except for the ones we *want* to fail if they produce
warnings, we could just do AC_LANG_WERROR, but that might be tricky to
ensure in the general case.)

We do this because not all compilers have a command-line flag to force
all warnings, *including* warnings from unknown commad-line flags (I'm
looking at *you* IBM XL C!), so we have to have the test check to make
 sure no warnings are produced (which, for AC_TRY_COMPILE(), means
"nothing is written to the standard output").

In addition, use AC_COMPILE_IFELSE() and AC_LANG_SOURCE() for testing

That lets us completely control the program that's compiled with the
compiler flag we're testing, so we can make it a minimal program that
uses only prototype declarations and that therefore won't generate
warnings with some -W flags, e.g. -Wold-style-definition, and thus won't
falsely report those flags as unsupported.

We were testing whether a -W flag is supported by checking the standard
error of the compiler to see if *any* error/warning messages are
generated, and treating the flag as unsupported if any are, that meant
that -Wunreachable-code-return was be treated as unsupported even though
it *is* supported.

This should fix that.  (That flag isn't currently used here, but it is
used for tcpdump, and we've made these changes there and in libpcap
already.  I'm so glad autoconf makes this all so difficult to do

4 months agoCI: Improve OS and compiler identification.
Denis Ovsienko [Thu, 29 Jul 2021 17:43:55 +0000 (18:43 +0100)] 
CI: Improve OS and compiler identification.

Introduce os_id(). Break print_cc_version() down into several functions.
Implement minimal caching. Simplify a number of conditional statements
that take OS and/or compiler into account. Factor more reusable code out
as gcc_is_clang_in_disguise(). Print OS/compiler identification after
the raw version and add a couple guards for empty parameters.

4 months agoCI: Print matrix progress to stderr.
Denis Ovsienko [Thu, 29 Jul 2021 11:42:08 +0000 (12:42 +0100)] 
CI: Print matrix progress to stderr.

This way it becomes easy to see which steps emitted which warnings:

$ ./ >/dev/null

4 months agoCirrus CI: Reduce freebsd-amd64 footprint a bit.
Denis Ovsienko [Wed, 28 Jul 2021 20:02:59 +0000 (21:02 +0100)] 
Cirrus CI: Reduce freebsd-amd64 footprint a bit.

gcc48 port is no longer supported, so there is no point in testing it.
git-tiny should be sufficient for the purposes of matrix building.

4 months agoCI: Introduce and use TCPSLICE_TAINTED.
Denis Ovsienko [Wed, 28 Jul 2021 18:50:26 +0000 (19:50 +0100)] 
CI: Introduce and use TCPSLICE_TAINTED.

The new environment variable provides means to declare all or some
tcpslice build steps of a specific environment (CI or a working copy) as
tainted. Add explicit conditions to exempt the builds that emit warnings
now and request the compiler to treat warnings as errors *iff* the build
is not tainted. This way if a build that is warning-free now degrades
later, CI will fail it.

Call the variable TCPSLICE_TAINTED so any nested libpcap builds can use
their own logic to manage their own CFLAGS.

4 months agoCI: Copy from tcpdump.
Denis Ovsienko [Tue, 27 Jul 2021 21:41:25 +0000 (22:41 +0100)] 
CI: Copy from tcpdump.

4 months agoGet "make shellcheck" to pass again. [skip ci]
Denis Ovsienko [Fri, 23 Jul 2021 13:15:27 +0000 (14:15 +0100)] 
Get "make shellcheck" to pass again. [skip ci]

4 months agoA recent AIX workaround had fixed Solaris too.
Denis Ovsienko [Thu, 22 Jul 2021 15:59:37 +0000 (16:59 +0100)] 
A recent AIX workaround had fixed Solaris too.

Document the changes in commit 112c5d4 better. For reference, the quirk
below stands for Solaris 9, 10 and 11:

$ mkdir test
$ tar cf - test | dd of=/dev/null
3+0 records in
3+0 records out
$ tar -c -f - test | dd of=/dev/null
tar: /dev/rmt/0: Permission denied
0+0 records in
0+0 records out

4 months agoCI: Adopt some code from tcpdump/ [skip ci]
Denis Ovsienko [Wed, 21 Jul 2021 21:46:24 +0000 (22:46 +0100)] 
CI: Adopt some code from tcpdump/ [skip ci]

Introduce and use print_so_deps(), and make it run ldd by default, as
every OS that can run is either macOS or has ldd. Port
a comment as well.

4 months agoCirrus CI: Install bc on linux-amd64.
Denis Ovsienko [Wed, 21 Jul 2021 14:56:49 +0000 (15:56 +0100)] 
Cirrus CI: Install bc on linux-amd64.

4 months agoCI: Work around some build issues on Solaris.
Denis Ovsienko [Wed, 21 Jul 2021 13:49:04 +0000 (14:49 +0100)] 
CI: Work around some build issues on Solaris.

In Solaris before 11 /bin/sh supports neither $() nor arithmetic
expansion nor "test -e" nor $RANDOM. There is no mktemp(1) in Solaris
before 10. Pathname expansion works differently in Solaris 11.
Accommodate these quirks and get to work on Solaris 9,
10 and 11 OpenCSW hosts:

* Solaris 9 (Sun C 5.9, GCC 4.6.4)
MATRIX_CC='suncc gcc' \

* Solaris 10 and 11 (Sun C 5.13, GCC 5.5.0)
MATRIX_CC='/opt/solarisstudio12.4/bin/suncc gcc' \

Move recent AIX-specific code into a standalone function, generalize and
reuse it. Have a default value for the directory prefix. Run mkdir
without "-p" so it fails if the directory already exists in case of a
race condition. Restructure print_cc_version() for clarity.

4 months agoCI: Use run_after_echo for more commands. [skip ci]
Denis Ovsienko [Sun, 18 Jul 2021 18:01:00 +0000 (19:01 +0100)] 
CI: Use run_after_echo for more commands. [skip ci]

4 months agoWork around some build issues on AIX.
Denis Ovsienko [Sat, 17 Jul 2021 00:48:17 +0000 (01:48 +0100)] 
Work around some build issues on AIX.

tar does not support the "z" flag, make does not support the "-C" flag,
mktemp(1) does not exist, XL C has some specifics with version printing.
Accommodate these quirks and get to work on AIX 7.1:

M4='/opt/freeware/bin/m4' MATRIX_CC='xlc gcc' ./
Tested setup count: 4

gcc (GCC) 8.3.0
IBM XL C/C++ for AIX, V12.1
libpcap version 1.11.0-PRE-GIT
libpcap version aix0.9.8

4 months agoRemove two stray files from "make distclean".
Denis Ovsienko [Sat, 17 Jul 2021 00:29:37 +0000 (01:29 +0100)] 
Remove two stray files from "make distclean".

4 months agoHandle some build errors better.
Denis Ovsienko [Fri, 16 Jul 2021 23:45:07 +0000 (00:45 +0100)] 
Handle some build errors better.

When one of the "make releasetar" steps fails, make sure the target
fails too. When "make depend" fails in ./configure, fail the script.
When "make distclean" fails for libpcap, print a note this is not an

4 months agoCI: Name the temporary directories consistently.
Denis Ovsienko [Fri, 16 Jul 2021 13:19:49 +0000 (14:19 +0100)] 
CI: Name the temporary directories consistently.

Due to some differences in mktemp(1) implementation PREFIX had a
"_XXXXXXXX" in the middle of the temporary directory name on macOS,
FreeBSD and NetBSD. Add a new helper function mktempdir() and do some
OS-specific compensation there to produce more uniform directory names.

4 months agoCI: Introduce and use build_common.h.
Denis Ovsienko [Thu, 15 Jul 2021 12:19:32 +0000 (13:19 +0100)] 
CI: Introduce and use build_common.h.

Rewrite run_after_echo() to take multiple arguments and update the
commands that use it. Condense echo_magenta() and put the newline after
ANSI reset. Factor existing commands out as print_sysinfo(),
print_cc_version() and handle_matrix_debug(). In the latter detect "yes"
instead of "true" to be consistent with other MATRIX_ variables.

Place these helper functions into a file of their own so they can be
reused easily.

4 months Quote some pathnames properly.
Denis Ovsienko [Thu, 15 Jul 2021 12:07:12 +0000 (13:07 +0100)] Quote some pathnames properly.

"make install" and "make uninstall" would fail if the prefix directory
name contained a space. Quote respective command arguments to fix that.

4 months agoCI: Always run "make releasetar".
Denis Ovsienko [Wed, 14 Jul 2021 20:44:55 +0000 (21:44 +0100)] 
CI: Always run "make releasetar".

This is supposed to work and currently works on all OSes that run, so let's have this target CI-tested everywhere.

4 months agoCI: Make default assignments early and uniformly.
Denis Ovsienko [Wed, 14 Jul 2021 20:41:41 +0000 (21:41 +0100)] 
CI: Make default assignments early and uniformly.

This way there is no need to explain the default values in the comments,
and the reader isn't left to look for the actual assignments in the
middle of code.

4 months agoRewrite the README in Markdown. [skip ci]
Denis Ovsienko [Fri, 9 Jul 2021 23:29:11 +0000 (00:29 +0100)] 
Rewrite the README in Markdown. [skip ci]

Use the same structure as in libpcap and tcpdump.

5 months agoCI: Lose the output folding props.
Denis Ovsienko [Mon, 5 Jul 2021 01:04:51 +0000 (02:04 +0100)] 
CI: Lose the output folding props.

Same as in libpcap.

5 months agoCI: Switch from bash to POSIX shell.
Denis Ovsienko [Mon, 5 Jul 2021 00:54:51 +0000 (01:54 +0100)] 
CI: Switch from bash to POSIX shell.

Same as in libpcap.

5 months agoStart tcpslice 1.5-PRE-GIT. [skip ci]
Denis Ovsienko [Tue, 15 Jun 2021 10:45:26 +0000 (11:45 +0100)] 
Start tcpslice 1.5-PRE-GIT. [skip ci]

5 months agoThis is tcpslice 1.4. tcpslice-1.4
Denis Ovsienko [Tue, 15 Jun 2021 07:35:42 +0000 (08:35 +0100)] 
This is tcpslice 1.4.

6 months agoCoverity Scan script: Disable a shellcheck note
Francois-Xavier Le Bail [Thu, 3 Jun 2021 18:45:55 +0000 (20:45 +0200)] 
Coverity Scan script: Disable a shellcheck note

See the comment "Do not quote COV_BUILD_OPTIONS ...".

This reverts commit b3beac179c3af4f19f8c9128ab7165eb56b09e19.

[skip ci]

6 months agoCoverity Scan script: Fix a shellcheck note
Francois-Xavier Le Bail [Thu, 3 Jun 2021 12:10:46 +0000 (14:10 +0200)] 
Coverity Scan script: Fix a shellcheck note

The note was:
Double quote to prevent globbing and word splitting. [SC2086]

[skip ci]

6 months agoshellcheck the Coverity Scan script too [skip ci]
Denis Ovsienko [Wed, 2 Jun 2021 16:43:18 +0000 (17:43 +0100)] 
shellcheck the Coverity Scan script too [skip ci]

6 months Add the shellcheck target
Francois-Xavier Le Bail [Tue, 1 Jun 2021 07:57:48 +0000 (09:57 +0200)] Add the shellcheck target

Run shellcheck on the and the scripts.
(using 'gcc' format: GCC compatible output. See the shellcheck man page)

[skip ci]

6 months Disable a shellcheck error
Francois-Xavier Le Bail [Mon, 31 May 2021 12:29:07 +0000 (14:29 +0200)] Disable a shellcheck error

We need the $@ expansion.

The error was:
Double quote array expansions to avoid re-splitting elements. [SC2068]

6 months Fix two shellcheck warnings
Francois-Xavier Le Bail [Mon, 31 May 2021 11:52:22 +0000 (13:52 +0200)] Fix two shellcheck warnings

The warnings were:
Use "${var:?}" to ensure this never expands to /* . [SC2115]

6 months agoCHANGES: About updating config.{guess,sub}
Francois-Xavier Le Bail [Thu, 27 May 2021 15:44:07 +0000 (17:44 +0200)] 
CHANGES: About updating config.{guess,sub}

6 months agoUpdate config.{guess,sub}, timestamps 2021-01-25,2021-03-10
Francois-Xavier Le Bail [Thu, 27 May 2021 15:38:35 +0000 (17:38 +0200)] 
Update config.{guess,sub}, timestamps 2021-01-25,2021-03-10

From repository git://

6 months agoUpdate the 1.4 section in CHANGES. [skip ci]
Denis Ovsienko [Wed, 26 May 2021 21:04:07 +0000 (22:04 +0100)] 
Update the 1.4 section in CHANGES. [skip ci]

6 months agoFix compilation with OpenBSD libpcap.
Denis Ovsienko [Fri, 21 May 2021 00:12:56 +0000 (01:12 +0100)] 
Fix compilation with OpenBSD libpcap.

OpenBSD (at least 6.8 and 6.9) defines struct pcap_pkthdr differently
from the upstream libpcap. Work around that by using a buffer variable
and copying the struct members one at a time (see also tcpdump commit

This change squelches the following errors and warnings from GCC 4.2.1

./tcpslice.c: In function 'get_next_packet':

./tcpslice.c:748: warning: passing argument 1 of
'sf_timestamp_less_than' from incompatible pointer type

./tcpslice.c:750: error: incompatible types in assignment

./tcpslice.c: In function 'open_files':

./tcpslice.c:790: error: incompatible types in assignment

./tcpslice.c: In function 'extract_slice':

./tcpslice.c:911: error: incompatible types in assignment

./tcpslice.c:912: error: incompatible types in assignment

./tcpslice.c:929: warning: passing argument 2 of
'sf_timestamp_less_than' from incompatible pointer type

./search.c: In function 'sf_find_end':

./search.c:404: error: incompatible types in assignment

./search.c: In function 'read_up_to':

./search.c:486: warning: assignment from incompatible pointer type

./search.c: In function 'sf_find_packet':

./search.c:593: warning: passing argument 1 of 'sf_timestamp_less_than'
from incompatible pointer type

./search.c:595: error: incompatible types in assignment

./search.c:599: warning: passing argument 2 of 'sf_timestamp_less_than'
from incompatible pointer type

./search.c:601: error: incompatible types in assignment

7 months agoCI: Simplify some Coverity Scan props. [skip ci]
Denis Ovsienko [Sat, 8 May 2021 15:43:01 +0000 (16:43 +0100)] 
CI: Simplify some Coverity Scan props. [skip ci]

Lose the custom Travis-specific tests and the associated translations
because modern CI systems provide their own means of conditional
execution. Rename the script for clarity.

7 months agoCirrus CI: Install more Linux packages for libpcap.
Denis Ovsienko [Sat, 8 May 2021 12:54:43 +0000 (13:54 +0100)] 
Cirrus CI: Install more Linux packages for libpcap.

libpcap build dependencies happen to be available by default on FreeBSD
and macOS, but on Linux these need to be installed explicitly. Use the
same packages as tcpdump.

7 months agoCI: Add MATRIX_BUILD_LIBPCAP to pass on FreeBSD.
Denis Ovsienko [Sat, 8 May 2021 11:59:41 +0000 (12:59 +0100)] 

The previously implemented approach was to let ./configure detect
libpcap, which would be either a local libpcap (if the caller has
pre-built it in ../libpcap) or a system libpcap (if it has not). In
particular, the Buildbot master setup arranged a local libpcap, which
defaulted to GCC [1]. The Buildbot workers that could compile tcpslice
varied in which libpcap they were able to use:

* freebsd-aarch64: system only [1]
* linux-aarch64: both
* linux-armv7l: both
* linux-ppc64le: both
* netbsd-aarch64: local only
* netbsd-amd64: local only

To simplify the builder commands and to allow customisation at the same
time, copy the MATRIX_BUILD_LIBPCAP logic from tcpdump and use it in
worker-specific environment variables as necessary.

A useful side effect of this change is compiling the local libpcap using
the same CC as for the current round of tcpslice. This works around a
linking issue [1], restores tcpslice-freebsd-aarch64 and allows it and
other builders to test two additional permutations.

1: FreeBSD shortly before release 13.0 started to have an odd issue, in
that tcpslice compiled using Clang failed to link with local libpcap
compiled using GCC:

ld: error: ./pcap.c:736:(.text+0x116C): unknown relocation (313) against
symbol pcap_netmap_findalldevs

ld: error: ./pcap.c:2335:(.text+0x1548): unknown relocation (313)
against symbol pcap_netmap_create

ld: error: ./pcap.c:3502:(.text+0x2210): unknown relocation (313)
against symbol __stderrp

(and so on)

7 months agoCirrus CI: Bump FreeBSD 13.0 up to the release. [skip buildbot]
Denis Ovsienko [Wed, 14 Apr 2021 10:48:41 +0000 (11:48 +0100)] 
Cirrus CI: Bump FreeBSD 13.0 up to the release. [skip buildbot]

7 months agoCI: Remove the unused .travis.yml. [skip ci]
Denis Ovsienko [Fri, 9 Apr 2021 22:15:14 +0000 (23:15 +0100)] 
CI: Remove the unused .travis.yml. [skip ci]

The service has been disabled for a while, s390x and AArch64 CI runs

8 months agoUse timeradd() and timersub().
Denis Ovsienko [Wed, 31 Mar 2021 22:10:46 +0000 (23:10 +0100)] 
Use timeradd() and timersub().

Use the common [non-standard] macro names for clarity. Define the macros
only if not already defined (the only known case where this is required
is Solaris before 11).

8 months agoCoverity: Use an executable POSIX shell script.
Denis Ovsienko [Sun, 21 Mar 2021 12:19:20 +0000 (12:19 +0000)] 
Coverity: Use an executable POSIX shell script.

Address all shellcheck warnings.

8 months agoCirrus CI: Lose an obsolete script step. [skip ci]
Denis Ovsienko [Sat, 20 Mar 2021 21:06:33 +0000 (21:06 +0000)] 
Cirrus CI: Lose an obsolete script step. [skip ci]

"freebsd-version" is a subset of "uname -a" (now in

8 months agoCI: Fixup a couple loose ends in
Denis Ovsienko [Fri, 19 Mar 2021 20:12:53 +0000 (20:12 +0000)] 
CI: Fixup a couple loose ends in

8 months agoCI: Refine the build matrix scripts more.
Denis Ovsienko [Fri, 19 Mar 2021 12:39:31 +0000 (12:39 +0000)] 
CI: Refine the build matrix scripts more.

Fix skipping GCC on macOS in to make it work
consistently in and outside of a CI environment. Remove the skipping
from the CI space. Print Makefile in a way that works reliably for all
repositories and both build systems. Require travis_fold() parameters to
be set.

8 months agoCI: Refine the build matrix scripts.
Denis Ovsienko [Thu, 18 Mar 2021 13:11:06 +0000 (13:11 +0000)] 
CI: Refine the build matrix scripts.

If not provided with a pre-arranged prefix path, make a temporary one
and remove it when done. Between the rounds delete the contents of the
prefix directory, but not the directory. Quote the prefix variable
properly. Print OS and compiler versions at the beginning. Do not cat
Makefile twice in the Travis CI block.

8 months agoCirrus CI: Relabel the tasks for consistency.
Denis Ovsienko [Sun, 14 Mar 2021 22:39:11 +0000 (22:39 +0000)] 
Cirrus CI: Relabel the tasks for consistency.

9 months ago.cirrus.yml: quote strings in only_if expression
Nikolay Edigaryev [Fri, 5 Mar 2021 18:47:26 +0000 (21:47 +0300)] 
.cirrus.yml: quote strings in only_if expression

9 months agoCI: Relax the branch filters back. [skip ci]
Denis Ovsienko [Thu, 4 Mar 2021 21:50:56 +0000 (21:50 +0000)] 
CI: Relax the branch filters back. [skip ci]

See tcpdump commit 4cff6de.

9 months agoTravis CI: Clean up. [skip CI]
Denis Ovsienko [Wed, 3 Mar 2021 04:23:14 +0000 (04:23 +0000)] 
Travis CI: Clean up. [skip CI]

9 months agoCirrus CI: Size the configurations down. [skip ci]
Denis Ovsienko [Wed, 3 Mar 2021 02:09:21 +0000 (02:09 +0000)] 
Cirrus CI: Size the configurations down. [skip ci]

The default configuration of 4 CPU cores and 4GB of memory is excess
for compiling tcpslice, even more so with the make flags set to "-j 2".

9 months agoCI: Switch Coverity Scan from Travis to Cirrus.
Denis Ovsienko [Wed, 3 Mar 2021 01:25:41 +0000 (01:25 +0000)] 
CI: Switch Coverity Scan from Travis to Cirrus.

9 months agoCoverity: Get HTTP status codes right. [skip ci]
Denis Ovsienko [Wed, 3 Mar 2021 00:31:25 +0000 (00:31 +0000)] 
Coverity: Get HTTP status codes right. [skip ci]

As it turns out, currently returns HTTP status code
200 on a successful upload. Whether the code was different before or
not, that had no apparent effect on Coverity Scan builds in Travis CI
because the latter does not check the addon build script exit status:

Coverity Scan upload failed: Build successfully submitted..
(Although the script exits with code 1, Travis CI proceeds to run the
"script" section commands.)

Add 200 as a valid HTTP status code and expand the error message to tell
the code on error, this way the script can be used and troubleshooted
outside of Travis CI.

9 months agoAdd the release tarball to .gitignore and the 'clean' target
Francois-Xavier Le Bail [Tue, 2 Mar 2021 19:29:26 +0000 (20:29 +0100)] 
Add the release tarball to .gitignore and the 'clean' target

9 months agoTravis CI: Allow the ppc64le job to fail.
Denis Ovsienko [Tue, 2 Mar 2021 17:42:41 +0000 (17:42 +0000)] 
Travis CI: Allow the ppc64le job to fail.

9 months Update the SETUP line printing
Francois-Xavier Le Bail [Wed, 10 Feb 2021 13:39:52 +0000 (14:39 +0100)] Update the SETUP line printing

9 months agoTravis CI: Use AMD64 Linux build only for Coverity build
Francois-Xavier Le Bail [Tue, 9 Feb 2021 19:24:14 +0000 (20:24 +0100)] 
Travis CI: Use AMD64 Linux build only for Coverity build

9 months Fix a typo [skip ci]
Francois-Xavier Le Bail [Tue, 9 Feb 2021 08:28:35 +0000 (09:28 +0100)] Fix a typo [skip ci]

9 months agoCI: Move macOS [AMD64] from Travis to Cirrus too.
Denis Ovsienko [Tue, 9 Feb 2021 04:53:41 +0000 (04:53 +0000)] 
CI: Move macOS [AMD64] from Travis to Cirrus too.

Add a missing command to the Linux task while at it.

9 months agoCI: Move Linux AMD64 from Travis to Cirrus.
Denis Ovsienko [Tue, 9 Feb 2021 01:54:46 +0000 (01:54 +0000)] 
CI: Move Linux AMD64 from Travis to Cirrus.

Apparently, "matrix" now works inside "freebsd_instance", which
simplifies the structure and makes it much easier to define more than
one task.

9 months agoCirrus CI: Switch to [skip travis]
Denis Ovsienko [Mon, 8 Feb 2021 13:43:31 +0000 (13:43 +0000)] 
Cirrus CI: Switch to [skip travis]

9 months agoTravis CI: Build with less builders
Francois-Xavier Le Bail [Mon, 8 Feb 2021 08:55:39 +0000 (09:55 +0100)] 
Travis CI: Build with less builders

This change will save CI runtime.

This will currently run five builders: amd64, arm64, ppc64le, s390x and osx.

The script executes the matrix loop, exclude tests and
It calls the script which runs one build with the setup environment
variable : CC (default: CC=gcc).
The matrix can be configured with the MATRIX_CC environment variable
(default: MATRIX_CC='gcc clang').

These scripts can easily be updated to run new tests (32 bits builds,
sanitizers, coverage, etc). and can be used locally for build tests.

Run examples:
MATRIX_CC=clang ./
CC=clang ./

Update the install directory prefix to /tmp/local.
Use vim modeline in the two shell scripts.

10 months agoTravis CI: Add more architectures
Francois-Xavier Le Bail [Fri, 5 Feb 2021 09:06:27 +0000 (10:06 +0100)] 
Travis CI: Add more architectures

This change add arm64, ppc64le and s390x architectures.

10 months agoCirrus CI: Condense the talk labels.
Denis Ovsienko [Thu, 4 Feb 2021 22:12:45 +0000 (22:12 +0000)] 
Cirrus CI: Condense the talk labels.

10 months agoPut "cd" into a subshell in Makefile-devel-adds.
Denis Ovsienko [Thu, 4 Feb 2021 22:08:03 +0000 (22:08 +0000)] 
Put "cd" into a subshell in Makefile-devel-adds.

This is to prevent the same problem with FreeBSD make that had to be
solved in libpcap.

10 months agoRefine some code style.
Denis Ovsienko [Thu, 28 Jan 2021 14:50:12 +0000 (14:50 +0000)] 
Refine some code style.

Make curly braces indentation more consistent, correct a comment and
lose a trailing newline.

11 months agoTravis CI: Bump Ubuntu up from 18.04 to 20.04.
Denis Ovsienko [Fri, 1 Jan 2021 16:12:34 +0000 (16:12 +0000)] 
Travis CI: Bump Ubuntu up from 18.04 to 20.04.

11 months agoDelete trailing spaces/tabs
Francois-Xavier Le Bail [Tue, 29 Dec 2020 10:17:41 +0000 (11:17 +0100)] 
Delete trailing spaces/tabs

11 months agoUpdate config.{guess,sub}, timestamps 2020-12-22
Francois-Xavier Le Bail [Thu, 24 Dec 2020 12:18:33 +0000 (13:18 +0100)] 
Update config.{guess,sub}, timestamps 2020-12-22

From repository git://

11 months agoCirrus CI: Bump FreeBSD 12.x up [skip travis]
Denis Ovsienko [Thu, 17 Dec 2020 21:37:58 +0000 (21:37 +0000)] 
Cirrus CI: Bump FreeBSD 12.x up [skip travis]

FreeBSD 12.2 has been released, and 12.1 is going to be retired in 1.5
months, so let's see if 12.2 works in Cirrus.

11 months agoFix a typo
Francois-Xavier Le Bail [Sun, 13 Dec 2020 09:59:06 +0000 (10:59 +0100)] 
Fix a typo

[skip ci]

13 months agoFix spelling in a comment. [skip ci]
Denis Ovsienko [Fri, 9 Oct 2020 11:49:50 +0000 (12:49 +0100)] 
Fix spelling in a comment. [skip ci]

15 months agoFix a typo in a comment
Francois-Xavier Le Bail [Tue, 8 Sep 2020 08:34:55 +0000 (10:34 +0200)] 
Fix a typo in a comment

15 months agoSquelch a GCC warning. [skip ci]
Denis Ovsienko [Sun, 6 Sep 2020 23:24:58 +0000 (00:24 +0100)] 
Squelch a GCC warning. [skip ci]

Compiled with libnids, libosip2, libooh323c and GCC 8 (Ubuntu

./sessions.c: In function 'h225_cs_callback':

./sessions.c:1018:23: warning: passing argument 1 of 'ooCreateCall'
discards 'const' qualifier from pointer target type

15 months agoCirrus CI: Sync with tcpdump and libpcap. [skip travis]
Denis Ovsienko [Fri, 4 Sep 2020 18:21:54 +0000 (19:21 +0100)] 
Cirrus CI: Sync with tcpdump and libpcap. [skip travis]

15 months agoAdd a .mailmap file.
Denis Ovsienko [Thu, 3 Sep 2020 01:26:37 +0000 (02:26 +0100)] 
Add a .mailmap file.

15 months agoMake the snprintf() buffer larger.
Denis Ovsienko [Thu, 3 Sep 2020 01:17:39 +0000 (02:17 +0100)] 
Make the snprintf() buffer larger.

Apparently, my idea about the right buffer size in timestamp_to_string()
is different from that of GCC 8 (Ubuntu 8.4.0-1ubuntu1~18.04), so let's
not split the hair and just use the same size as before. This squelches
the following warnings, which appeared after commit e3d63a6:

./tcpslice.c: In function 'timestamp_to_string':

./tcpslice.c:1009:47: warning: '%02d' directive output may be truncated
writing between 2 and 11 bytes into a region of size between 0 and 17

./tcpslice.c:1009:31: note: using the range [0, 4294967295] for directive

/usr/include/x86_64-linux-gnu/bits/stdio2.h:64:10: note:
'__builtin___snprintf_chk' output between 28 and 84 bytes into a
destination of size 28

15 months agoTell libooh323c in the "-h" message.
Denis Ovsienko [Mon, 31 Aug 2020 21:32:27 +0000 (22:32 +0100)] 
Tell libooh323c in the "-h" message.

Also reorder the preprocessor directives the same way as they work in
sessions.c: libosip2 and libooh323c depend on libnids, but not on each
other. It looks as follows in my working copy:

$ ./tcpslice -h
tcpslice version 1.4-PRE-GIT
libpcap version 1.10.0-PRE-GIT (with TPACKET_V3)
libnids version 1.24
libosip2 unknown version
libooh323c v0.9.3
Usage: tcpslice [-DdhlRrtv] [-w file]
                [ -s types [ -e seconds ] [ -f format ] ]
                [start-time [end-time]] file ...

15 months agoAdd some parentheses to macros for consistency.
Denis Ovsienko [Mon, 31 Aug 2020 21:31:28 +0000 (22:31 +0100)] 
Add some parentheses to macros for consistency.

15 months agoConstify some function arguments.
Denis Ovsienko [Mon, 31 Aug 2020 21:15:26 +0000 (22:15 +0100)] 
Constify some function arguments.

15 months agoSquelch some GCC warnings with ooh323c. [skip ci]
Denis Ovsienko [Mon, 31 Aug 2020 18:32:11 +0000 (19:32 +0100)] 
Squelch some GCC warnings with ooh323c. [skip ci]

./sessions.c: In function ‘sessions_init’:
./sessions.c:339:3: warning: implicit declaration of function
‘ooH323EpInitialize’; did you mean ‘ooH323HangCall’?

./sessions.c:340:3: warning: implicit declaration of function
‘ooH323EpDisableAutoAnswer’ [-Wimplicit-function-declaration]

./sessions.c:998:86: warning: unused parameter ‘len’

Skip CI because the CI systems build tcpslice w/o the library.

15 months agoTravis CI: Compile with libnids.
Denis Ovsienko [Thu, 27 Aug 2020 16:29:39 +0000 (17:29 +0100)] 
Travis CI: Compile with libnids.

Require libnids-dev to compile nids-specific code, which also enables
osip2-specific code. This change will result in compiler warnings, so
drop -Werror for the time being. Cirrus compiles the basic version with
-Werror, so there's still some detection of new issues in this area.

15 months agoTravis CI: Add the libosip2-dev library
Francois-Xavier Le Bail [Wed, 26 Aug 2020 20:32:29 +0000 (22:32 +0200)] 
Travis CI: Add the libosip2-dev library

15 months agoTravis CI: Enable Coverity analysis
Francois-Xavier Le Bail [Wed, 26 Aug 2020 18:59:43 +0000 (20:59 +0200)] 
Travis CI: Enable Coverity analysis

15 months agoUpdate MAX_REASONABLE_PACKET_LENGTH to 262144
Francois-Xavier Le Bail [Wed, 26 Aug 2020 06:30:15 +0000 (08:30 +0200)] 

Like the MAXIMUM_SNAPLEN value in libpcap and tpcdump.

15 months agoCI: Use parallel make.
Denis Ovsienko [Tue, 25 Aug 2020 22:53:28 +0000 (23:53 +0100)] 
CI: Use parallel make.

It looks like the parallel make fault I had experienced with tcpslice
earlier accounts to a race condition that is between the top-level
targets, not within one of them. Specifically, in my Linux system
"make -j 4 clean all" often fails with the following:

clang: error: no such file or directory: 'tcpslice.o'
Makefile:125: recipe for target 'tcpslice' failed
make: *** [tcpslice] Error 1

However, "make -j 4 clean; make -j 4 all" always works. This explains why
tcpdump CI never failed because of the race condition despite having
MAKEFLAGS='-j 2' in both Travis and Cirrus -- the scripts run make with
one target at a time. But if run as shown above, tcpdump build will often
fail in a very similar way.

So make tcpslice build parallel and release the shared resource a tiny
bit quicker.

15 months agoAdd a target in for Exuberant Ctags use
Francois-Xavier Le Bail [Tue, 25 Aug 2020 18:29:37 +0000 (20:29 +0200)] 
Add a target in for Exuberant Ctags use

The target name is 'extags'.
Exuberant Ctags has no -d, -t options and -w is ignored.

Remove a non-existent file in TAGHDR to avoid an error on Debian:
make: *** No rule to make target '/usr/include/net/slip.h', needed
by 'extags'.