]> The Tcpdump Group git mirrors - tcpdump/log
tcpdump
4 years agooptional unit suffix on -C 916/head
Steve Kay [Sat, 8 May 2021 18:32:24 +0000 (14:32 -0400)] 
optional unit suffix on -C

4 years agoEthernet: Add a bounds check
Francois-Xavier Le Bail [Thu, 6 May 2021 11:39:10 +0000 (13:39 +0200)] 
Ethernet: Add a bounds check

Avoid to have p (current pointer on packet data) > ndo->ndo_snapend
in isoclns_print() in some cases.

Moreover:
Add a "FIXME" comment.

4 years agoMPTCP: parse MPC data_len field
Paolo Abeni [Tue, 23 Mar 2021 17:29:45 +0000 (18:29 +0100)] 
MPTCP: parse MPC data_len field

The RFC 8684 introduced a new field in the MPC header: the data_len.
If the client has not seen yet a DSS sub-option from the server, it
must use MPC with data_lan instead of a DSS for the first packet
carrying a data payload.

This change print the data_len, if present, after the receiver_key.

The field is already there in the existent pcap test trace, we just
need to update the expected output.

Signed-off-by: Paolo Abeni <[email protected]>
4 years agoHaiku is a supported platform. [skip ci]
Denis Ovsienko [Thu, 6 May 2021 09:07:39 +0000 (10:07 +0100)] 
Haiku is a supported platform. [skip ci]

Haiku R1/Beta 2 includes tcpdump and libpcap, even though these seem to
disregard any specified pcap filter expressions.

~> uname -a
Haiku shredder 1 hrev54154+111 Jun  7 2020 07:16 x86_64 x86_64 Haiku
~> tcpdump --version
tcpdump version 4.9.2
libpcap version 1.8.1

4 years agoRemove PLATFORMS (was merged into README.md)
Francois-Xavier Le Bail [Sun, 25 Apr 2021 18:37:28 +0000 (20:37 +0200)] 
Remove PLATFORMS (was merged into README.md)

[skip ci]

4 years agoman: Update DNS sections
Francois-Xavier Le Bail [Sun, 25 Apr 2021 18:05:45 +0000 (20:05 +0200)] 
man: Update DNS sections

The DNS transactions also take place over TCP.

Harmonize text: s/not including/excluding/ like in Name Server Responses
section.

[skip ci]

4 years agoRefine README.md and some related files. [skip ci]
Denis Ovsienko [Fri, 16 Apr 2021 17:25:11 +0000 (18:25 +0100)] 
Refine README.md and some related files. [skip ci]

Lose the README symlink, it was a bad idea of mine to add it in the
first place as it made the packaging problem space bigger, not smaller.

Remove two CI badges at the top of README.md. One badge was stale
anyway, and the other does not represent the current CI configuration,
which is bigger, changes frequently and fits the web-site much better.

Remove the reference to ITA, it has been down for quite a while, it
looks like it won't re-emerge this time.

Merge PLATFORMS into README.md.

4 years agoCirrus CI: Bump FreeBSD 13.0 up to the release.
Denis Ovsienko [Thu, 15 Apr 2021 22:22:03 +0000 (23:22 +0100)] 
Cirrus CI: Bump FreeBSD 13.0 up to the release.

4 years agoCI: Remove the unused .travis.yml. [skip ci]
Denis Ovsienko [Fri, 9 Apr 2021 22:08:43 +0000 (23:08 +0100)] 
CI: Remove the unused .travis.yml. [skip ci]

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

4 years agoMPTCP: Print 'Length' inside mptcp options
Michal Ruprich [Fri, 19 Mar 2021 13:39:23 +0000 (14:39 +0100)] 
MPTCP: Print 'Length' inside mptcp options

Current mptcp parser prints 'mptcp <Subtype>...' but RFC 8684 in Section
3. states that the format should be 'mptcp <Length> <Subtype>...'

4 years agoGeoNet: Add a ND_TCHECK_LEN() call
Francois-Xavier Le Bail [Wed, 31 Mar 2021 08:11:39 +0000 (10:11 +0200)] 
GeoNet: Add a ND_TCHECK_LEN() call

4 years agoForCES: Get rid of some type casts.
Denis Ovsienko [Mon, 29 Mar 2021 14:59:59 +0000 (15:59 +0100)] 
ForCES: Get rid of some type casts.

4 years agoForCES: Refine SPARSEDATA-TLV length check.
Denis Ovsienko [Mon, 29 Mar 2021 14:49:58 +0000 (15:49 +0100)] 
ForCES: Refine SPARSEDATA-TLV length check.

When ilv_valid() returns a non-zero in sdatailv_print(), the amount of
bytes declared remaining may be insufficient to contain a complete
header, let alone any data. Thus do not try to hex dump the data,
instead print an error message and be done with it.

This fixes an inconsistency discovered by Francois-Xavier.

4 years agoLose a few forward declarations in tcpdump.c.
Denis Ovsienko [Mon, 29 Mar 2021 10:23:21 +0000 (11:23 +0100)] 
Lose a few forward declarations in tcpdump.c.

Reinstate a few comments in print.c for consistency.

4 years agoSpell "indent" where it belongs.
Denis Ovsienko [Sun, 28 Mar 2021 12:44:35 +0000 (13:44 +0100)] 
Spell "indent" where it belongs.

4 years agoLose a few forward declarations in print.c.
Denis Ovsienko [Sun, 28 Mar 2021 12:22:48 +0000 (13:22 +0100)] 
Lose a few forward declarations in print.c.

4 years agoASCII/hex: Use nd_trunc_longjmp() in truncation cases
Francois-Xavier Le Bail [Sat, 27 Mar 2021 15:14:27 +0000 (16:14 +0100)] 
ASCII/hex: Use nd_trunc_longjmp() in truncation cases

In functions ascii_print(), hex_and_ascii_print_with_offset() and
hex_print_with_offset().
Therefore indirectly for the functions hex_and_ascii_print(), hex_print()
and ndo_default_print().

Even if hex_and_ascii_print(), hex_print() and ascii_print() are used in
print.c after the setjmp() block with the calls:

1) hex_and_ascii_print(ndo, "\n\t", sp, h->caplen);
2) hex_and_ascii_print(ndo, "\n\t", sp + hdrlen, h->caplen - hdrlen);
3) hex_print(ndo, "\n\t", sp, h->caplen);
4) hex_print(ndo, "\n\t", sp + hdrlen, h->caplen - hdrlen);
5) ascii_print(ndo, sp, h->caplen);
6) ascii_print(ndo, sp + hdrlen, h->caplen - hdrlen);

sp and h->caplen are unmodified, ndo->ndo_snapend was restored.

1), 3) and 5) the length to print is caplen => no truncation can occur.
2), 4) and 6) the length to print is (caplen - hdrlen) after a shift of
hdrlen => no truncation can occur.

Moreover:
Update the output of three tests accordingly.
Remove an useless comment.
Fix indentation.

4 years agoCoverity: Use an executable POSIX shell script.
Denis Ovsienko [Sun, 21 Mar 2021 13:33:36 +0000 (13:33 +0000)] 
Coverity: Use an executable POSIX shell script.

Address all shellcheck warnings.

4 years agoCI: Apply more cleanups. [skip appveyor]
Denis Ovsienko [Sun, 21 Mar 2021 12:18:35 +0000 (12:18 +0000)] 
CI: Apply more cleanups. [skip appveyor]

Lose travis-conditions in the Travis CI script. Simplify libpcap
cloning. Dissolve choose_libpcap() as it just packed two separate
single-use functions into one, also lose a temporary variable. Fixup
indentation.

4 years agoCI: Refine the build matrix scripts. [skip appveyor]
Denis Ovsienko [Sun, 21 Mar 2021 00:26:58 +0000 (00:26 +0000)] 
CI: Refine the build matrix scripts. [skip appveyor]

Reproduce the recent improvements made in tcpslice and libpcap.

4 years agoCI: Use libpcap.a on MATRIX_BUILD_LIBPCAP=yes. [skip appveyor]
Denis Ovsienko [Thu, 18 Mar 2021 02:14:37 +0000 (02:14 +0000)] 
CI: Use libpcap.a on MATRIX_BUILD_LIBPCAP=yes. [skip appveyor]

The only way to pass tests on OpenBSD is to link with the upstream
libpcap using ../libpcap/libpcap.a (hence not using CMake) because
-lpcap always results in linking with OpenBSD /usr/lib/libpcap.so
regardless of the libpcap.a and libpcap.so that build.sh installs under
/tmp/local/.

Work around by not cleaning in ../libpcap on MATRIX_BUILD_LIBPCAP=yes,
so Autoconf can pick the static library up. On MATRIX_BUILD_LIBPCAP=no
do the cleaning so it cannot.

4 years agoDon't try to run the DLT_RAW test on OpenBSD.
Denis Ovsienko [Wed, 17 Mar 2021 11:49:51 +0000 (11:49 +0000)] 
Don't try to run the DLT_RAW test on OpenBSD.

With this change tcpdump passes "make check" on OpenBSD 6.8 AMD64.

4 years agoFixup formatting in tests/*.tests.
Denis Ovsienko [Wed, 17 Mar 2021 11:29:18 +0000 (11:29 +0000)] 
Fixup formatting in tests/*.tests.

4 years agoSquelch compiler warnings on OpenBSD.
Denis Ovsienko [Wed, 17 Mar 2021 04:02:23 +0000 (04:02 +0000)] 
Squelch compiler warnings on OpenBSD.

With these changes tcpdump passes "CFLAGS=-Werror make" on OpenBSD 6.8
AMD64, so build.sh has one less reason to fail.

gcc (GCC) 4.2.1 20070719
(also from OpenBSD clang version 10.0.1 with different wording)

./addrtoname.c: In function 'etheraddr_string':
./addrtoname.c:605: warning: passing argument 2 of 'ether_ntohost'
discards qualifiers from pointer target type

./addrtoname.c: In function 'init_etherarray':
./addrtoname.c:980: warning: passing argument 2 of 'ether_ntohost'
discards qualifiers from pointer target type

./print.c: In function 'pretty_print_packet':
./print.c:389: warning: passing argument 2 of 'ts_print' from
incompatible pointer type

./bpf_dump.c:34: warning: no previous prototype for 'bpf_dump'

4 years agoCirrus CI: Relabel the tasks for consistency.
Denis Ovsienko [Wed, 17 Mar 2021 03:53:06 +0000 (03:53 +0000)] 
Cirrus CI: Relabel the tasks for consistency.

4 years agobuild.sh, build_matrix.sh: Use more the PREFIX variable
Francois-Xavier Le Bail [Sat, 13 Mar 2021 17:30:19 +0000 (18:30 +0100)] 
build.sh, build_matrix.sh: Use more the PREFIX variable

4 years agoUninstall the version stamped tcpdump
Francois-Xavier Le Bail [Sat, 13 Mar 2021 16:23:43 +0000 (17:23 +0100)] 
Uninstall the version stamped tcpdump

4 years agoFix "make clean" for out-of-tree autotools builds
Francois-Xavier Le Bail [Sat, 13 Mar 2021 15:58:10 +0000 (16:58 +0100)] 
Fix "make clean" for out-of-tree autotools builds

4 years ago.cirrus.yml: quote strings in only_if expression
Nikolay Edigaryev [Fri, 5 Mar 2021 18:46:23 +0000 (21:46 +0300)] 
.cirrus.yml: quote strings in only_if expression

4 years agoCI: Relax the branch filters back. [skip ci]
Denis Ovsienko [Thu, 4 Mar 2021 21:43:16 +0000 (21:43 +0000)] 
CI: Relax the branch filters back. [skip ci]

Address feedback from Francois-Xavier and do not limit everyday CI to
the branches that are known-good for running build_matrix.sh, only mind
to skip the coverity_scan branch. Although this arrangement is not what
an upstream repository should use, it keeps CI simple in fork
repositories that have arbitrarily named branches with a working
build_matrix.sh.

This should also restore pull requests CI if the strict filters had
affected it.

4 years agoAppVeyor: Specify the same branches as elsewhere. [skip ci]
Denis Ovsienko [Thu, 4 Mar 2021 00:11:59 +0000 (00:11 +0000)] 
AppVeyor: Specify the same branches as elsewhere. [skip ci]

4 years agoTravis CI: Clean up. [skip ci]
Denis Ovsienko [Wed, 3 Mar 2021 04:37:40 +0000 (04:37 +0000)] 
Travis CI: Clean up. [skip ci]

4 years agoCI: Switch Coverity Scan from Travis to Cirrus. [skip appveyor]
Denis Ovsienko [Wed, 3 Mar 2021 01:57:13 +0000 (01:57 +0000)] 
CI: Switch Coverity Scan from Travis to Cirrus. [skip appveyor]

4 years agoCoverity: Get HTTP status codes right. [skip ci]
Denis Ovsienko [Wed, 3 Mar 2021 01:35:35 +0000 (01:35 +0000)] 
Coverity: Get HTTP status codes right. [skip ci]

See tcpslice commit 9f4f0b9.

4 years agoVTP: Fix a warning
Francois-Xavier Le Bail [Sun, 28 Feb 2021 13:50:06 +0000 (14:50 +0100)] 
VTP: Fix a warning

The warning on AppVeyor (Visual Studio 2017) was:
print-vtp.c(122): warning C4028: formal parameter 3 different from
declaration

4 years agoTravis CI: Allow the ppc64le job to fail
Francois-Xavier Le Bail [Wed, 24 Feb 2021 17:56:02 +0000 (18:56 +0100)] 
Travis CI: Allow the ppc64le job to fail

4 years agoTCP: Add a comment
Francois-Xavier Le Bail [Tue, 16 Feb 2021 20:01:27 +0000 (21:01 +0100)] 
TCP: Add a comment

This is a follow-up to commit 568d18f6eafb8df0d2500652b1cad49618051349.

[skip ci]

4 years agoBFD: Refine the previous commit.
Denis Ovsienko [Tue, 16 Feb 2021 00:59:17 +0000 (00:59 +0000)] 
BFD: Refine the previous commit.

Spell acronyms as they appear in respective specifications, fix a
reference in a comment, add a change log entry and update some tests.

4 years agoBFD: add SBFD support (RFC7880 and RFC7881) 905/head
Bill Fenner [Fri, 5 Feb 2021 05:10:31 +0000 (21:10 -0800)] 
BFD: add SBFD support (RFC7880 and RFC7881)

Add support for SBFD on UDP port 7784.  SBFD is different
in that packets from the reflector will be sent with *source*
port 7784; in all other BFD mechanisms, it is only the
destination port that matters.  For SBFD print-udp.c has to
check both source and destination port.

4 years agoL2TP: Add a bounds check
Francois-Xavier Le Bail [Sun, 14 Feb 2021 10:35:40 +0000 (11:35 +0100)] 
L2TP: Add a bounds check

Check if the offset padding octets are in the packet buffer.

4 years agoTCP: Add a bounds check before decoding the payload
Francois-Xavier Le Bail [Fri, 12 Feb 2021 20:49:40 +0000 (21:49 +0100)] 
TCP: Add a bounds check before decoding the payload

At least the header data is required.

Moreover:
Update the output of a test accordingly.
Fix indentation.

4 years agoIP: Add a bounds check before calling ip_demux_print()
Francois-Xavier Le Bail [Fri, 12 Feb 2021 13:20:52 +0000 (14:20 +0100)] 
IP: Add a bounds check before calling ip_demux_print()

At least the header data is required.

Moreover:
Fix indentation.

4 years agoTCP: Update the snapend before decoding a MPTCP option
Francois-Xavier Le Bail [Thu, 11 Feb 2021 20:09:00 +0000 (21:09 +0100)] 
TCP: Update the snapend before decoding a MPTCP option

Update the snapend to the end of the option before calling mptcp_print().
Some options (MPTCP or others) may be present after a MPTCP option.
This prevents that, in mptcp_print(), the remaining length < the remaining
caplen.

4 years agoDHCPv6: Rework the update of the snapend for nested DHCPv6 packets
Francois-Xavier Le Bail [Thu, 11 Feb 2021 18:41:39 +0000 (19:41 +0100)] 
DHCPv6: Rework the update of the snapend for nested DHCPv6 packets

There is no need to use nd_push_snapend()/nd_pop_packet_info().

4 years agoDHCPv6: Update the snapend for nested DHCPv6 packets
Francois-Xavier Le Bail [Thu, 11 Feb 2021 16:46:02 +0000 (17:46 +0100)] 
DHCPv6: Update the snapend for nested DHCPv6 packets

Update the snapend to the end of the option before calling recursively
dhcp6_print() for the nested packet.
Other options may be present after the nested DHCPv6 packet.
This prevents that, in dhcp6_print(), for the nested DHCPv6 packet,
the remaining length < remaining caplen.

4 years agoRestore the possibility of building when remote is enabled in libpcap
Francois-Xavier Le Bail [Thu, 11 Feb 2021 08:25:29 +0000 (09:25 +0100)] 
Restore the possibility of building when remote is enabled in libpcap

This change allows to test the build with HAVE_PCAP_FINDALLDEVS_EX and
HAVE_PCAP_OPEN enabled.

Some ways to run theses tests:

MATRIX_BUILD_LIBPCAP=yes MATRIX_REMOTE=yes MATRIX_CMAKE=no MATRIX_CC=gcc \
MATRIX_CRYPTO=no MATRIX_SMB=no ./build_matrix.sh
(configure should display:
checking for pcap_open... yes
checking for pcap_findalldevs_ex... yes)

MATRIX_BUILD_LIBPCAP=yes MATRIX_REMOTE=yes MATRIX_CMAKE=yes MATRIX_CC=gcc \
MATRIX_CRYPTO=no MATRIX_SMB=no ./build_matrix.sh
(cmake should display:
Looking for pcap_open - found
Looking for pcap_findalldevs_ex - found)

Don't enable the builds with REMOTE=yes by default.

This partially reverts commit 3861a41bfa60b9a8bed2d5a11a2ba7a7b1bbed3d.
"Remove the REMOTE dimension from the nested matrix."

4 years agoCirrus CI: Try to speed FreeBSD 13.0 up. [skip appveyor] [skip travis]
Denis Ovsienko [Thu, 11 Feb 2021 00:53:59 +0000 (00:53 +0000)] 
Cirrus CI: Try to speed FreeBSD 13.0 up. [skip appveyor] [skip travis]

Whatever the underlying reason, freebsd-13-0-snap used to take a couple
times more time to make it through the build than the other two image
families. After switching to the full nested matrix this started to
cause task timeouts and rescheduling. Let's see if a different
distribution of resources can improve this. Update the Linux task
comment while at it.

4 years agoESP: Remove padding, padding length and next header from the buffer
Francois-Xavier Le Bail [Wed, 10 Feb 2021 19:48:18 +0000 (20:48 +0100)] 
ESP: Remove padding, padding length and next header from the buffer

Moreover:
Fix indentation.

4 years agoCirrus CI: Refine some resource allocation. [skip appveyor] [skip travis]
Denis Ovsienko [Wed, 10 Feb 2021 16:27:15 +0000 (16:27 +0000)] 
Cirrus CI: Refine some resource allocation. [skip appveyor] [skip travis]

For FreeBSD and Linux request less memory than the default 4 GB.

Cirrus build graph claims that both FreeBSD and Linux tasks never use
more than 2 CPUs. For FreeBSD request 2 CPUs instead of 4 to enable all
three permutations run in parallel. For Linux request 4 CPUs instead of
8 to enable two concurrent tasks and split the nested matrix into two to
take advantage of that.

For macOS move and expand the comment.

4 years agoCirrus CI: Run build_matrix.sh on FreeBSD. [skip appveyor] [skip travis]
Denis Ovsienko [Wed, 10 Feb 2021 15:34:22 +0000 (15:34 +0000)] 
Cirrus CI: Run build_matrix.sh on FreeBSD. [skip appveyor] [skip travis]

4 years agoRemove the REMOTE dimension from the nested matrix. [skip appveyor]
Denis Ovsienko [Wed, 10 Feb 2021 14:10:06 +0000 (14:10 +0000)] 
Remove the REMOTE dimension from the nested matrix. [skip appveyor]

Neither the build process nor the tests of tcpdump currently depend on
presence or absence of the libpcap remote feature, and there is already
the libpcap nested matrix to cover that dimension, thus in the tcpdump
nested matrix just leave this aspect of the local libpcap build
unspecified and reduce the total number of rounds from 48 to 32.

4 years agobuild_matrix.sh: Update the SETUP line and the 'Build libpcap' printings
Francois-Xavier Le Bail [Wed, 10 Feb 2021 13:48:56 +0000 (14:48 +0100)] 
build_matrix.sh: Update the SETUP line and the 'Build libpcap' printings

4 years agobuild_matrix.sh: Fix typoes
Francois-Xavier Le Bail [Wed, 10 Feb 2021 13:02:45 +0000 (14:02 +0100)] 
build_matrix.sh: Fix typoes

For harmonization s/=/:/ between some keywords and values.

4 years agoTravis CI: Use AMD64 Linux build only for Coverity build
Francois-Xavier Le Bail [Wed, 10 Feb 2021 10:24:55 +0000 (11:24 +0100)] 
Travis CI: Use AMD64 Linux build only for Coverity build

4 years agoCirrus CI: Start building AMD64 Linux. [skip appveyor] [skip travis]
Denis Ovsienko [Tue, 9 Feb 2021 19:06:58 +0000 (19:06 +0000)] 
Cirrus CI: Start building AMD64 Linux. [skip appveyor] [skip travis]

4 years agoCI: Move [AMD64] macOS from Travis to Cirrus. [skip appveyor]
Denis Ovsienko [Tue, 9 Feb 2021 16:23:53 +0000 (16:23 +0000)] 
CI: Move [AMD64] macOS from Travis to Cirrus. [skip appveyor]

This change restores macOS CI, it might also unblock the stuck Travis CI
builds, as was the case with tcpslice and libpcap earlier. Let's see.

Also refine the FreeBSD tasks a bit, but do not switch them to
build_matrix.sh yet, as that combination is currently broken.

4 years agoAdd the build_matrix.sh and build.sh scripts
Francois-Xavier Le Bail [Sun, 7 Feb 2021 10:22:24 +0000 (11:22 +0100)] 
Add the build_matrix.sh and build.sh scripts

Use them with Travis CI to build with less builders and save CI runtime.
This will currently run five builders: amd64, arm64, ppc64le, s390x and osx.

The build_matrix.sh script executes the matrix loops, exclude tests and
cleaning.
It conditionally builds libpcap running the build.sh script of libpcap.
It calls the build.sh script which runs one build with setup environment
variables: BUILD_LIBPCAP, REMOTE, CC, CMAKE, CRYPTO and SMB
(default: BUILD_LIBPCAP=no, REMOTE=no, CC=gcc, CMAKE=no, CRYPTO=no, SMB=no).
The matrix can be configured with environment variables
MATRIX_BUILD_LIBPCAP, MATRIX_REMOTE, MATRIX_CC, MATRIX_CMAKE, MATRIX_CRYPTO
and MATRIX_SMB
(default: MATRIX_BUILD_LIBPCAP='no yes', MATRIX_REMOTE='no yes',
MATRIX_CC='gcc clang', MATRIX_CMAKE='no yes', MATRIX_CRYPTO='no yes',
MATRIX_SMB='no yes').

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

They can be used locally for build tests or used with other CI systems.

Run examples:
./build_matrix.sh
MATRIX_BUILD_LIBPCAP=yes ./build_matrix.sh
MATRIX_CC=clang ./build_matrix.sh
CC=clang ./build.sh
CMAKE=yes ./build.sh
CC=clang CMAKE=yes CRYPTO=yes ./build.sh

Moreover:
Remove the old workaround PATH=$PATH...
Update the install directory prefix to /tmp/local.
Use vim modeline in the two shell scripts.

4 years agoRemove GENSRC remnants from Makefile.in. [skip appveyor]
Denis Ovsienko [Sat, 6 Feb 2021 01:45:41 +0000 (01:45 +0000)] 
Remove GENSRC remnants from Makefile.in. [skip appveyor]

The variable does not exist since commit 4943adf.

4 years agoSMB: Disable the printer by default with CMake build
Francois-Xavier Le Bail [Fri, 5 Feb 2021 17:01:41 +0000 (18:01 +0100)] 
SMB: Disable the printer by default with CMake build

This is a follow-up to commit 192db0a116f5ee419fddbdadf5822a7a3179d6c3.

[skip ci]

4 years agoDrop a stale comment. [skip appveyor]
Denis Ovsienko [Fri, 5 Feb 2021 16:08:46 +0000 (16:08 +0000)] 
Drop a stale comment. [skip appveyor]

Let's see if one more commit helps Travis CI pull itself together.

4 years agoRefine Markdown in README.md. [skip appveyor]
Denis Ovsienko [Fri, 5 Feb 2021 14:25:11 +0000 (14:25 +0000)] 
Refine Markdown in README.md. [skip appveyor]

Move "by TTG" to the main header and eliminate a few duplicate "by"
sentences. Update a CI badge to use the travis-ci.com URLs. Make the
security note bold to help more people actually get it. Change the git
URL to github.com to be consistent with libpcap. Add and refine a few
headers. Add and improve hyperlink formatting in a few places. Lose a
few excess generic sentences. Fixup some minor editorial issues. Fence
the "from LBL" boilerplate, move it to the bottom of the dedicated
section and eliminate a few duplicate "from" sentences.

Skip only some CI on this occasion, so Travis CI can transfer the build
history from travis-ci.org to travus-ci.com and complete the migration.

4 years agoZMTP: Replace custom code with bittok2str().
Denis Ovsienko [Tue, 2 Feb 2021 00:25:25 +0000 (00:25 +0000)] 
ZMTP: Replace custom code with bittok2str().

4 years agoPTP: Use ND_LCHECK_U for checking invalid length
Francois-Xavier Le Bail [Mon, 1 Feb 2021 12:44:21 +0000 (13:44 +0100)] 
PTP: Use ND_LCHECK_U for checking invalid length

Moreover:
Rename a variable.

4 years agoMSDP: Print ": " before the protocol name
Francois-Xavier Le Bail [Mon, 1 Feb 2021 09:31:34 +0000 (10:31 +0100)] 
MSDP: Print ": " before the protocol name

Like with most TCP encapsulated protocols.
Use nd_print_protocol().
No more ":" after protocol name.
This change will print the protocol name even in truncation cases.

4 years agoRemove some storage class specifier 'register'
Francois-Xavier Le Bail [Sat, 30 Jan 2021 08:49:25 +0000 (09:49 +0100)] 
Remove some storage class specifier 'register'

This is a follow-up to commit 5cea2703185c6af1616dc338c43c6cf67b0bec60.

[skip ci]

4 years agoDCCP: Replace custom code with tok2str(). [skip ci]
Denis Ovsienko [Fri, 29 Jan 2021 17:03:15 +0000 (17:03 +0000)] 
DCCP: Replace custom code with tok2str(). [skip ci]

4 years agoVQP: Do not print unknown error codes twice. [skip ci]
Denis Ovsienko [Fri, 29 Jan 2021 16:23:05 +0000 (16:23 +0000)] 
VQP: Do not print unknown error codes twice. [skip ci]

4 years agoman: Update a reference as www.cifs.org is gone. [skip ci]
Denis Ovsienko [Thu, 28 Jan 2021 23:29:57 +0000 (23:29 +0000)] 
man: Update a reference as www.cifs.org is gone. [skip ci]

4 years agoAdd an entry in CHANGES
Francois-Xavier Le Bail [Wed, 27 Jan 2021 09:33:11 +0000 (10:33 +0100)] 
Add an entry in CHANGES

[skip ci]

4 years agoMACsec: Add a comment about the previous change
Francois-Xavier Le Bail [Tue, 26 Jan 2021 11:22:30 +0000 (12:22 +0100)] 
MACsec: Add a comment about the previous change

[skip ci]

4 years agoMACsec: Update the snapend thus the ICV field is not payload for the caller
Francois-Xavier Le Bail [Mon, 25 Jan 2021 17:05:59 +0000 (18:05 +0100)] 
MACsec: Update the snapend thus the ICV field is not payload for the caller

The ICV (Integrity Check Value) is at the end of the frame, after the
secure data.

4 years agoRPKI-Router: Refine length and bounds checks. [skip ci]
Denis Ovsienko [Mon, 25 Jan 2021 19:09:49 +0000 (19:09 +0000)] 
RPKI-Router: Refine length and bounds checks. [skip ci]

Fetch PDU version only once and use the PDU header structure for that.
Check data length before accessing it. Remove two redundant
ND_TCHECK_LEN() instances and move the associated comments below
respective GET_BE_U_4() instances.

List recent updates in CHANGES while at it.

4 years agoOpenFlow 1.0: Simplify the snapend management. [skip ci]
Denis Ovsienko [Mon, 25 Jan 2021 12:51:54 +0000 (12:51 +0000)] 
OpenFlow 1.0: Simplify the snapend management. [skip ci]

As Guy explains it, nd_push_snapend() makes it easy to save and to
restore the snapend from different functions or different invocations
of the same function. In a simple case a local variable and ND_MIN()
do the job just as well without the associated memory management and
error checking.

4 years agoMACsec: Put the function definition names at the beginning of the line
Francois-Xavier Le Bail [Mon, 25 Jan 2021 11:07:08 +0000 (12:07 +0100)] 
MACsec: Put the function definition names at the beginning of the line

This change allows easier update by script.

[skip ci]

4 years agoICMP: Update the snapend for some nested IP packets
Francois-Xavier Le Bail [Sun, 24 Jan 2021 09:52:50 +0000 (10:52 +0100)] 
ICMP: Update the snapend for some nested IP packets

Update the snapend because extensions (MPLS, ...) may be present
after the IP packet. In this case the current (outer) packet's
snapend is not what ip_print() needs to decode an IP packet nested
in the middle of an ICMP payload.

This prevents that, in ip_print(), for the nested IP packet, the
remaining length < remaining caplen.

Moreover:
Reduce the scope of a variable.
Fix spaces

4 years ago.gitignore: Add *.gcda *.gcno *.gcov (coverage files)
Francois-Xavier Le Bail [Sun, 24 Jan 2021 13:56:15 +0000 (14:56 +0100)] 
.gitignore: Add *.gcda *.gcno *.gcov (coverage files)

[skip ci]

4 years agoNetFlow: Modernize packet parsing style. [skip ci]
Denis Ovsienko [Sat, 23 Jan 2021 15:24:32 +0000 (15:24 +0000)] 
NetFlow: Modernize packet parsing style. [skip ci]

Enable ND_LONGJMP_FROM_TCHECK. Remove one redundant ND_TCHECK_SIZE()
instance and place the remaining ones after the code that prints
individual structure fields, so it can print incomplete structures. Lose
intermediate snprintf() calls and associated props. Lose trailing spaces
in v1 and v5 output.

4 years agoOSPF: Update more router properties bits. [skip ci]
Denis Ovsienko [Sat, 23 Jan 2021 14:18:22 +0000 (14:18 +0000)] 
OSPF: Update more router properties bits. [skip ci]

4 years agoospf: add support bit Nt RFC3101 904/head
ckishimo [Fri, 22 Jan 2021 09:45:24 +0000 (10:45 +0100)] 
ospf: add support bit Nt RFC3101

4 years agoOpenFlow 1.0: Get snapend right for nested frames. [skip ci]
Denis Ovsienko [Fri, 22 Jan 2021 12:51:15 +0000 (12:51 +0000)] 
OpenFlow 1.0: Get snapend right for nested frames. [skip ci]

The current and the nested packets can and do have different snapend,
implement and comment that in of10_packet_data_print() to fix an issue
discovered by Francois-Xavier Le Bail.

4 years agoIEEE 802.11: Simplify handle_action(). [skip ci]
Denis Ovsienko [Fri, 22 Jan 2021 01:24:15 +0000 (01:24 +0000)] 
IEEE 802.11: Simplify handle_action(). [skip ci]

Lose PRINT_MESHLINK_ACTION(), PRINT_MESHPEERING_ACTION() and
PRINT_MESHPATH_ACTION(), which were unused since commit f1c0553. Convert
the remaining 5 macros and hard-coded strings using tok2str() and
uint2tokary().

4 years agoForCES: Modernize packet parsing style.
Denis Ovsienko [Thu, 21 Jan 2021 01:43:42 +0000 (01:43 +0000)] 
ForCES: Modernize packet parsing style.

Enable ND_LONGJMP_FROM_TCHECK. Add and use many standard "invalid"
sections. Use tok2str() in asttlv_print(). In forces_print() don't
hex-dump the invalid data by default, there's ndo_vflag for that.
Simplify some code in genoptlv_print(). In pdata_print() instead of 0
return the value that pdatacnt_print() returned if it was not good. Lose
a disabled debug line.

4 years agoSNMP: Modernize packet parsing style.
Denis Ovsienko [Wed, 20 Jan 2021 14:50:59 +0000 (14:50 +0000)] 
SNMP: Modernize packet parsing style.

Enable ND_LONGJMP_FROM_TCHECK. Remove a few redundant ND_TCHECK*()
instances. Make asn1_print_octets() and asn1_print_string() void. Harden
an improvised snapshot end guard with ND_TCHECK_LEN().

4 years agoSCTP: Modernize packet parsing style.
Denis Ovsienko [Tue, 19 Jan 2021 16:25:27 +0000 (16:25 +0000)] 
SCTP: Modernize packet parsing style.

Enable ND_LONGJMP_FROM_TCHECK. Report invalid packets as invalid.

4 years agoAdd missing and regroup existing entries in CHANGES. [skip ci]
Denis Ovsienko [Tue, 19 Jan 2021 00:25:45 +0000 (00:25 +0000)] 
Add missing and regroup existing entries in CHANGES. [skip ci]

4 years agoTCP: Add a test with data in the RST segment, truncated example
Francois-Xavier Le Bail [Tue, 19 Jan 2021 13:58:48 +0000 (14:58 +0100)] 
TCP: Add a test with data in the RST segment, truncated example

4 years agoNTP: Modernize packet parsing style. [skip ci]
Denis Ovsienko [Mon, 18 Jan 2021 23:59:45 +0000 (23:59 +0000)] 
NTP: Modernize packet parsing style. [skip ci]

Enable ND_LONGJMP_FROM_TCHECK. Remove a few redundant ND_TCHECK()
instances. Move one ND_TCHECK_4() to where it belongs. Have nd_printjn()
guard the snapshot end.

4 years agoTCP: Add a test with data in the RST segment
Francois-Xavier Le Bail [Mon, 18 Jan 2021 11:46:23 +0000 (12:46 +0100)] 
TCP: Add a test with data in the RST segment

4 years agoTry the new ND_LCHECK*() macros. [skip ci]
Denis Ovsienko [Sun, 17 Jan 2021 23:11:19 +0000 (23:11 +0000)] 
Try the new ND_LCHECK*() macros. [skip ci]

4 years agoTCP: Modernize packet parsing style.
Denis Ovsienko [Sun, 17 Jan 2021 21:22:34 +0000 (21:22 +0000)] 
TCP: Modernize packet parsing style.

Enable ND_LONGJMP_FROM_TCHECK. Report invalid packets as invalid. Remove
most ND_TCHECK*() instances as they were redundant. Update a custom
snapend guard to use nd_trunc_longjmp(). Reduce arity of
print_tcp_fastopen_option(). Use ND_TTEST_LEN() in
tcp_verify_signature() and nd_printn() in print_tcp_rst_data(). For
NFS_PORT remove ND_TTEST_4() from the test condition as it is not a
valid factor, there is the subsequent GET_BE_U_4() to check bounds.

4 years agoMPTCP: Put GET_U_1() outside of macros.
Denis Ovsienko [Sat, 16 Jan 2021 23:39:01 +0000 (23:39 +0000)] 
MPTCP: Put GET_U_1() outside of macros.

This way it is much easier to proof-read the bounds checks coverage
even without the comments. Fixup some whitespace while at it.

4 years agoNetFlow: Use tcp_flag_values[] for TCP flags.
Denis Ovsienko [Sat, 16 Jan 2021 10:56:30 +0000 (10:56 +0000)] 
NetFlow: Use tcp_flag_values[] for TCP flags.

This way there is less code duplication and more consistency.

4 years agoOLSR: Fix a goto before ND_PRINT
Francois-Xavier Le Bail [Sun, 17 Jan 2021 10:30:26 +0000 (11:30 +0100)] 
OLSR: Fix a goto before ND_PRINT

4 years agoFix a typo in ND_LCHECK_ZU definition
Francois-Xavier Le Bail [Sun, 17 Jan 2021 09:29:12 +0000 (10:29 +0100)] 
Fix a typo in ND_LCHECK_ZU definition

[skip ci]

4 years agoAdd ND_LCHECKMSG_U, ND_LCHECK_U, ND_LCHECKMSG_ZU and ND_LCHECK_ZU macros
Francois-Xavier Le Bail [Sat, 16 Jan 2021 13:27:21 +0000 (14:27 +0100)] 
Add ND_LCHECKMSG_U, ND_LCHECK_U, ND_LCHECKMSG_ZU and ND_LCHECK_ZU macros

They check length < minimum for invalid packet with or without a custom
message, format %u or %zu.

%zu (ND_LCHECKMSG_ZU and ND_LCHECK_ZU) is useful when minimum is a
sizeof(...).

[skip ci]

4 years agoDCCP: Replace some magic numbers
Francois-Xavier Le Bail [Sat, 16 Jan 2021 10:54:03 +0000 (11:54 +0100)] 
DCCP: Replace some magic numbers

4 years agoAODV: Modernize packet parsing style.
Denis Ovsienko [Fri, 15 Jan 2021 22:30:40 +0000 (22:30 +0000)] 
AODV: Modernize packet parsing style.

Make all ND_TCHECK_SIZE() instances redundant and remove them. Always
print a reason when reporting a packet as invalid. Undo the changes from
commit f875106 to remove support for draft-perkins-aodv6-01, which had
expired in 2001. Use tok2str() to print the message type. Don't print an
additional "v6" for RREQ, as the address family is apparent from the UDP
header. Update a test.

4 years agoOLSR: Print the protocol name even if the packet is invalid
Francois-Xavier Le Bail [Fri, 15 Jan 2021 13:16:18 +0000 (14:16 +0100)] 
OLSR: Print the protocol name even if the packet is invalid

4 years agoRIP: Modernize packet parsing style.
Denis Ovsienko [Thu, 14 Jan 2021 03:48:28 +0000 (03:48 +0000)] 
RIP: Modernize packet parsing style.

Enable ND_LONGJMP_FROM_TCHECK. Report invalid packets as invalid. Remove
two redundant ND_TCHECK_SIZE() instances and an improvised snapshot end
guard. Check bounds for the remaining part of the packet header after
printing version and command, not before. Lose one pointer and one
length variable in rip_print(), also account for the header size when
estimating the number of routes. Update two tests.

4 years agoRIP: Make a couple trivial protocol updates.
Denis Ovsienko [Thu, 14 Jan 2021 03:31:50 +0000 (03:31 +0000)] 
RIP: Make a couple trivial protocol updates.

Synchronize with the RIP Commands IANA registry and treat version 0 as
invalid.