From ccacd09b39be1e4c3ade5129f66cb0ed74fd2757 Mon Sep 17 00:00:00 2001 From: Apple OSS Distributions <91980991+AppleOSSDistributions@users.noreply.github.com> Date: Tue, 3 Aug 2021 06:19:41 +0000 Subject: [PATCH] tcpdump-112 Imported from tcpdump-112.tar.gz --- .../pktmetadatafilter_test.c | 70 +++++ gen_tcpdump_version/gen_tcpdump_version.sh | 42 ++- .../print-tcpdump-git-branch.sh | 47 ++++ gen_tcpdump_version/print_tcpdump_version.c | 6 +- tcpdump.xcodeproj/project.pbxproj | 249 ++++++++++++++++-- tcpdump/netdissect-ctype.h | 55 ++++ tcpdump/netdissect.h | 4 + tcpdump/pktaputil.c | 11 +- tcpdump/pktmetadatafilter.c | 185 ++++++++----- tcpdump/pktmetadatafilter.h | 4 + tcpdump/print-mptcp.c | 115 +++++--- tcpdump/print-ppp.c | 20 +- tcpdump/print-tcp.c | 24 +- tcpdump/print-unsupported.c | 38 +++ tcpdump/print.c | 12 +- tcpdump/print_pktap.c | 29 +- tcpdump/tcpdump.1 | 8 + tcpdump/tcpdump.c | 15 +- tcpdump/tests/TESTLISTRADAR | 6 + tcpdump/tests/mptcp-fclose.out | 6 +- tcpdump/tests/mptcp.out | 8 +- tcpdump/tests/radar-74957353.out | 197 ++++++++++++++ tcpdump/tests/radar-74957353.pcapng | Bin 0 -> 131060 bytes tcpdump/tests/radar-79792659.out | 10 + tcpdump/tests/radar-79792659.pcapng | Bin 0 -> 2156 bytes tcpdump/tests/radar-81131821.out | 10 + tcpdump/tests/radar-81131821.pcapng | Bin 0 -> 6788 bytes tcpdump/util-print.c | 10 + 28 files changed, 1002 insertions(+), 179 deletions(-) create mode 100644 Tests/pktmetadatafilter_test/pktmetadatafilter_test.c create mode 100644 gen_tcpdump_version/print-tcpdump-git-branch.sh create mode 100644 tcpdump/netdissect-ctype.h create mode 100644 tcpdump/print-unsupported.c create mode 100644 tcpdump/tests/radar-74957353.out create mode 100644 tcpdump/tests/radar-74957353.pcapng create mode 100644 tcpdump/tests/radar-79792659.out create mode 100644 tcpdump/tests/radar-79792659.pcapng create mode 100644 tcpdump/tests/radar-81131821.out create mode 100644 tcpdump/tests/radar-81131821.pcapng diff --git a/Tests/pktmetadatafilter_test/pktmetadatafilter_test.c b/Tests/pktmetadatafilter_test/pktmetadatafilter_test.c new file mode 100644 index 0000000..c6e2b04 --- /dev/null +++ b/Tests/pktmetadatafilter_test/pktmetadatafilter_test.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2021 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +#include +#include +#include +#include +#include +#include + +#include "pktmetadatafilter.h" + +int main(int argc, char * const argv[]) +{ + int ch; + char *input_str = NULL; + node_t *pkt_meta_data_expression = NULL; + int verbose = 0; + + while ((ch = getopt(argc, argv, "Q:v")) != -1) { + switch (ch) { + case 'Q': + if (input_str != NULL) { + errx(EX_USAGE, "-Q used twice"); + } + input_str = strdup(optarg); + if (input_str == NULL) { + errx(EX_OSERR, "calloc() failed"); + } + break; + case 'v': + verbose = 1; + break; + } + } + set_parse_verbose(verbose); + + pkt_meta_data_expression = parse_expression(input_str); + if (pkt_meta_data_expression == NULL) + errx(EX_SOFTWARE, "invalid expression \"%s\"", input_str); + + free(input_str); + + return 0; +} diff --git a/gen_tcpdump_version/gen_tcpdump_version.sh b/gen_tcpdump_version/gen_tcpdump_version.sh index c5313d9..8fe8cba 100644 --- a/gen_tcpdump_version/gen_tcpdump_version.sh +++ b/gen_tcpdump_version/gen_tcpdump_version.sh @@ -1,21 +1,49 @@ #!/bin/sh +#RC_ProjectSourceVersion=1.2.3 +#RC_ProjectSourceVersion=9999.99.99 +#RC_ProjectNameAndSourceVersion=tcpdump-Branch.eng_PR_123456789__623e4dd2d9945f007629c0c7801b418635791e13 +#RC_ProjectNameAndSourceVersion=tcpdump-Branch.SHA__ea89f6fda992afd6cd6fec108722c18034564220 + print_tcpdump_version() { - cat tcpdump/VERSION + cat tcpdump/VERSION 2>/dev/null } - print_darwin_version() { - darwin_version="${RC_ProjectSourceVersion}" - if [ -z ${darwin_version} ]; then - darwin_version="`git branch|grep '* '|awk '{ print $2 }'`" - fi echo ${darwin_version} } -version_string="tcpdump version `print_tcpdump_version` -- Apple version `print_darwin_version`" +if [ -z "${RC_ProjectSourceVersion}" ]; then + if [ -f .git/config ]; then + grep -q tcpdump.git .git/config + if [ $? -eq 0 ]; then + darwin_version="`git status|head -n 1|awk '{ print $NF }'` (`date '+%Y-%m-%d %H:%M:%S'`)" + fi + fi +elif [ "${RC_ProjectSourceVersion}" = "9999.99.99" ]; then + echo ${RC_ProjectNameAndSourceVersion}|grep -q "^tcpdump-Branch.*__" + if [ $? -eq 0 ]; then + branch="`echo ${RC_ProjectNameAndSourceVersion}|sed s/^tcpdump-Branch.*__//`" + if [ -n "${branch}" ]; then + darwin_version="${branch}" + fi + fi +else + darwin_version="${RC_ProjectSourceVersion}" +fi + +if [ -z "${darwin_version}" ]; then + darwin_version="main (`date '+%Y-%m-%d %H:%M:%S'`)" +fi + +version_string="`print_tcpdump_version` -- Apple version `print_darwin_version`" + +if [ -z "${SHARED_DERIVED_FILE_DIR}" ]; then + echo ${version_string} + exit 0 +fi mkdir -p "${SHARED_DERIVED_FILE_DIR}" diff --git a/gen_tcpdump_version/print-tcpdump-git-branch.sh b/gen_tcpdump_version/print-tcpdump-git-branch.sh new file mode 100644 index 0000000..a023fce --- /dev/null +++ b/gen_tcpdump_version/print-tcpdump-git-branch.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +# +# print-tcpdump-git-branch.sh +# + +PROGNAME="`basename ${0}`" +COMMAND=tcpdump +USAGE="# usage: ${PROGNAME} [-h] [-p ] [-v]" +VERBOSE=0 + +while getopts hp:v OPTION; do + case ${OPTION} in + h) echo "${USAGE}"; exit 0;; + + p) COMMAND="${OPTARG}";; + + v) VERBOSE=1;; + + \?) echo "${USAGE}"; exit 0;; + esac +done + +TMPFILE=`mktemp /tmp/${PROGNAME}.XXXXXX` || exit 1 + +# +# Grab the word after "Apple version ": +# - An official build version is made of digits [0-9] and dots '.' +# - A development build has the branch name followed by the build date +# +VERSION=`${COMMAND} --version 2>&1 |head -n 1|sed s/".*Apple version "//|awk '{ print $1}'` + +if [ ${VERBOSE} -ge 1 ]; then + echo "base version of ${COMMAND}: ${VERSION}" +fi + +echo "${VERSION}" > "${TMPFILE}" + +# Add 'tcpdump-' prefix for official builds +grep -q "[^0-9.]" "${TMPFILE}" &> /dev/null +if [ $? -eq 1 ]; then + VERSION=tcpdump-"${VERSION}" +fi + +rm "${TMPFILE}" + +echo "${VERSION}" diff --git a/gen_tcpdump_version/print_tcpdump_version.c b/gen_tcpdump_version/print_tcpdump_version.c index 13bfcd7..6b316e7 100644 --- a/gen_tcpdump_version/print_tcpdump_version.c +++ b/gen_tcpdump_version/print_tcpdump_version.c @@ -1,9 +1,5 @@ // -// main.c -// gen_tcpdump_version.sh -// -// Created by Vincent Lubet on 2/7/17. -// +// print_tcpdump_version.c // #include diff --git a/tcpdump.xcodeproj/project.pbxproj b/tcpdump.xcodeproj/project.pbxproj index d06f53c..a8444e4 100644 --- a/tcpdump.xcodeproj/project.pbxproj +++ b/tcpdump.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -50,6 +50,8 @@ 722B0E2B1AE87A0200DAFE7A /* print-openflow.c in Sources */ = {isa = PBXBuildFile; fileRef = 722B0E0D1AE8248200DAFE7A /* print-openflow.c */; }; 722B0E2C1AE87A0200DAFE7A /* print-rtsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 722B0E0E1AE8248200DAFE7A /* print-rtsp.c */; }; 722B0E2D1AE87A0200DAFE7A /* print-smtp.c in Sources */ = {isa = PBXBuildFile; fileRef = 722B0E0F1AE8248200DAFE7A /* print-smtp.c */; }; + 723CA048265ED315007C96B4 /* print-unsupported.c in Sources */ = {isa = PBXBuildFile; fileRef = 723CA045265ED315007C96B4 /* print-unsupported.c */; }; + 723CA049265ED315007C96B4 /* print-unsupported.c in Sources */ = {isa = PBXBuildFile; fileRef = 723CA045265ED315007C96B4 /* print-unsupported.c */; }; 7244CBF51624FF2100141ECF /* addrtoname.c in Sources */ = {isa = PBXBuildFile; fileRef = FC79153D103A295700CBA90E /* addrtoname.c */; }; 7244CBF61624FF2100141ECF /* af.c in Sources */ = {isa = PBXBuildFile; fileRef = FC79153E103A295700CBA90E /* af.c */; }; 7244CBF71624FF2100141ECF /* checksum.c in Sources */ = {isa = PBXBuildFile; fileRef = FC79153F103A295700CBA90E /* checksum.c */; }; @@ -228,9 +230,13 @@ 727CF92A1E49260E00BAE514 /* print.c in Sources */ = {isa = PBXBuildFile; fileRef = 727CF9261E4925FE00BAE514 /* print.c */; }; 727CF92C1E49264A00BAE514 /* strtoaddr.c in Sources */ = {isa = PBXBuildFile; fileRef = 727CF92B1E49264A00BAE514 /* strtoaddr.c */; }; 727CF9311E49269E00BAE514 /* strtoaddr.c in Sources */ = {isa = PBXBuildFile; fileRef = 727CF92B1E49264A00BAE514 /* strtoaddr.c */; }; + 727D62CA25C4D9FE0003EC82 /* pktmetadatafilter_test.c in Sources */ = {isa = PBXBuildFile; fileRef = 727D62C925C4D9FE0003EC82 /* pktmetadatafilter_test.c */; }; + 727D62CF25C4DC950003EC82 /* pktmetadatafilter.c in Sources */ = {isa = PBXBuildFile; fileRef = 72575F7E166D607900EFB348 /* pktmetadatafilter.c */; }; 72D1EDC31AAB9ABF00405853 /* print-kev_msg.c in Sources */ = {isa = PBXBuildFile; fileRef = 72D1EDC21AAB9ABF00405853 /* print-kev_msg.c */; }; 72D1EDC41AAB9ABF00405853 /* print-kev_msg.c in Sources */ = {isa = PBXBuildFile; fileRef = 72D1EDC21AAB9ABF00405853 /* print-kev_msg.c */; }; 72DA6D101E4A569100568AC1 /* print_tcpdump_version.c in Sources */ = {isa = PBXBuildFile; fileRef = 72DA6D0F1E4A569100568AC1 /* print_tcpdump_version.c */; }; + 72DEEDFE26000257003466BA /* tcpdump.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7255E40B1C9CB5A800D64FA0 /* tcpdump.1 */; }; + 72DEEE00260002ED003466BA /* tcpdump.plist in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7255E4091C9C801800D64FA0 /* tcpdump.plist */; }; E07AD53110AA1D0300E8B167 /* print-pflog.c in Sources */ = {isa = PBXBuildFile; fileRef = E07AD53010AA1D0300E8B167 /* print-pflog.c */; }; FC791681103A35FE00CBA90E /* addrtoname.c in Sources */ = {isa = PBXBuildFile; fileRef = FC79153D103A295700CBA90E /* addrtoname.c */; }; FC791682103A35FE00CBA90E /* af.c in Sources */ = {isa = PBXBuildFile; fileRef = FC79153E103A295700CBA90E /* af.c */; }; @@ -378,6 +384,15 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ + 727D62C525C4D9FE0003EC82 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; 72DA6CFE1E4A52F300568AC1 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -387,6 +402,26 @@ ); runOnlyForDeploymentPostprocessing = 1; }; + 72DEEDFD26000223003466BA /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 8; + dstPath = /usr/share/man/man1; + dstSubfolderSpec = 0; + files = ( + 72DEEDFE26000257003466BA /* tcpdump.1 in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 1; + }; + 72DEEDFF26000285003466BA /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 8; + dstPath = /usr/local/OpenSourceVersions; + dstSubfolderSpec = 0; + files = ( + 72DEEE00260002ED003466BA /* tcpdump.plist in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 1; + }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ @@ -426,6 +461,7 @@ 722B0E0D1AE8248200DAFE7A /* print-openflow.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "print-openflow.c"; path = "tcpdump/print-openflow.c"; sourceTree = ""; }; 722B0E0E1AE8248200DAFE7A /* print-rtsp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "print-rtsp.c"; path = "tcpdump/print-rtsp.c"; sourceTree = ""; }; 722B0E0F1AE8248200DAFE7A /* print-smtp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "print-smtp.c"; path = "tcpdump/print-smtp.c"; sourceTree = ""; }; + 723CA045265ED315007C96B4 /* print-unsupported.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "print-unsupported.c"; path = "tcpdump/print-unsupported.c"; sourceTree = ""; }; 7244CC891624FF2100141ECF /* tcpdumpstatic */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = tcpdumpstatic; sourceTree = BUILT_PRODUCTS_DIR; }; 724976E517BC46EF0041BF58 /* print-msnlb.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "print-msnlb.c"; path = "tcpdump/print-msnlb.c"; sourceTree = ""; }; 724976E617BC46EF0041BF58 /* print-otv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "print-otv.c"; path = "tcpdump/print-otv.c"; sourceTree = ""; }; @@ -501,6 +537,10 @@ 727CF92E1E49266700BAE514 /* print.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = print.h; path = tcpdump/print.h; sourceTree = ""; }; 727CF92F1E49266700BAE514 /* strtoaddr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = strtoaddr.h; path = tcpdump/strtoaddr.h; sourceTree = ""; }; 727CF9301E49268D00BAE514 /* rpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rpl.h; path = tcpdump/rpl.h; sourceTree = ""; }; + 727D62C725C4D9FE0003EC82 /* pktmetadatafilter_test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = pktmetadatafilter_test; sourceTree = BUILT_PRODUCTS_DIR; }; + 727D62C925C4D9FE0003EC82 /* pktmetadatafilter_test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pktmetadatafilter_test.c; sourceTree = ""; }; + 728F2C3525F82F2900591787 /* gen_tcpdump_version.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = gen_tcpdump_version.sh; path = gen_tcpdump_version/gen_tcpdump_version.sh; sourceTree = ""; }; + 728F2C3725F850CE00591787 /* print-tcpdump-git-branch.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = "print-tcpdump-git-branch.sh"; path = "gen_tcpdump_version/print-tcpdump-git-branch.sh"; sourceTree = ""; }; 72D1EDC21AAB9ABF00405853 /* print-kev_msg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "print-kev_msg.c"; path = "tcpdump/print-kev_msg.c"; sourceTree = ""; }; 72DA6D001E4A52F300568AC1 /* gen_tcpdump_version */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = gen_tcpdump_version; sourceTree = BUILT_PRODUCTS_DIR; }; 72DA6D0F1E4A569100568AC1 /* print_tcpdump_version.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = print_tcpdump_version.c; path = gen_tcpdump_version/print_tcpdump_version.c; sourceTree = ""; }; @@ -643,6 +683,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 727D62C425C4D9FE0003EC82 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 72DA6CFD1E4A52F300568AC1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -669,6 +716,7 @@ 7255E4081C9C800700D64FA0 /* Resources */, 72DA6D111E4A569D00568AC1 /* gen_tcpdump_version */, 7218C1281F6749000052EB54 /* Scripts */, + 727D62C225C4D97A0003EC82 /* Tests */, 1AB674ADFE9D54B511CA2CBB /* Products */, FC791654103A2F1B00CBA90E /* libpcap.dylib */, 727B12DA162745A90039A877 /* libpcap_static.a */, @@ -835,6 +883,7 @@ FC7915AD103A295700CBA90E /* print-token.c */, FC7915AE103A295700CBA90E /* print-udld.c */, FC7915AF103A295700CBA90E /* print-udp.c */, + 723CA045265ED315007C96B4 /* print-unsupported.c */, 720E462F1231644C0056BE01 /* print-usb.c */, FC7915B0103A295700CBA90E /* print-vjc.c */, FC7915B1103A295700CBA90E /* print-vqp.c */, @@ -864,6 +913,7 @@ FC79167E103A35EA00CBA90E /* tcpdump */, 7244CC891624FF2100141ECF /* tcpdumpstatic */, 72DA6D001E4A52F300568AC1 /* gen_tcpdump_version */, + 727D62C725C4D9FE0003EC82 /* pktmetadatafilter_test */, ); name = Products; sourceTree = ""; @@ -958,10 +1008,28 @@ name = Frameworks; sourceTree = ""; }; + 727D62C225C4D97A0003EC82 /* Tests */ = { + isa = PBXGroup; + children = ( + 727D62C825C4D9FE0003EC82 /* pktmetadatafilter_test */, + ); + path = Tests; + sourceTree = ""; + }; + 727D62C825C4D9FE0003EC82 /* pktmetadatafilter_test */ = { + isa = PBXGroup; + children = ( + 727D62C925C4D9FE0003EC82 /* pktmetadatafilter_test.c */, + ); + path = pktmetadatafilter_test; + sourceTree = ""; + }; 72DA6D111E4A569D00568AC1 /* gen_tcpdump_version */ = { isa = PBXGroup; children = ( 72DA6D0F1E4A569100568AC1 /* print_tcpdump_version.c */, + 728F2C3525F82F2900591787 /* gen_tcpdump_version.sh */, + 728F2C3725F850CE00591787 /* print-tcpdump-git-branch.sh */, ); name = gen_tcpdump_version; sourceTree = ""; @@ -975,7 +1043,6 @@ buildPhases = ( 7244CBF41624FF2100141ECF /* Sources */, 7244CC831624FF2100141ECF /* Frameworks */, - 7244CC851624FF2100141ECF /* ShellScript */, ); buildRules = ( ); @@ -987,6 +1054,23 @@ productReference = 7244CC891624FF2100141ECF /* tcpdumpstatic */; productType = "com.apple.product-type.tool"; }; + 727D62C625C4D9FE0003EC82 /* pktmetadatafilter_test */ = { + isa = PBXNativeTarget; + buildConfigurationList = 727D62CB25C4D9FE0003EC82 /* Build configuration list for PBXNativeTarget "pktmetadatafilter_test" */; + buildPhases = ( + 727D62C325C4D9FE0003EC82 /* Sources */, + 727D62C425C4D9FE0003EC82 /* Frameworks */, + 727D62C525C4D9FE0003EC82 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = pktmetadatafilter_test; + productName = pktmetadatafilter_test; + productReference = 727D62C725C4D9FE0003EC82 /* pktmetadatafilter_test */; + productType = "com.apple.product-type.tool"; + }; 72DA6CFF1E4A52F300568AC1 /* gen_tcpdump_version */ = { isa = PBXNativeTarget; buildConfigurationList = 72DA6D061E4A52F300568AC1 /* Build configuration list for PBXNativeTarget "gen_tcpdump_version" */; @@ -1012,6 +1096,8 @@ FC79167B103A35EA00CBA90E /* Sources */, FC79167C103A35EA00CBA90E /* Frameworks */, FC791702103A362700CBA90E /* ShellScript */, + 72DEEDFD26000223003466BA /* CopyFiles */, + 72DEEDFF26000285003466BA /* CopyFiles */, ); buildRules = ( ); @@ -1033,6 +1119,10 @@ LastSwiftUpdateCheck = 0700; LastUpgradeCheck = 0800; TargetAttributes = { + 727D62C625C4D9FE0003EC82 = { + CreatedOnToolsVersion = 12.4; + ProvisioningStyle = Automatic; + }; 72DA6CFF1E4A52F300568AC1 = { CreatedOnToolsVersion = 8.3; ProvisioningStyle = Automatic; @@ -1054,24 +1144,12 @@ FC79167D103A35EA00CBA90E /* tcpdump */, 7244CBF31624FF2100141ECF /* tcpdump_static */, 72DA6CFF1E4A52F300568AC1 /* gen_tcpdump_version */, + 727D62C625C4D9FE0003EC82 /* pktmetadatafilter_test */, ); }; /* End PBXProject section */ /* Begin PBXShellScriptBuildPhase section */ - 7244CC851624FF2100141ECF /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 8; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 1; - shellPath = /bin/sh; - shellScript = "# exit immediately on failure\nset -e\n\nMANDIR=/usr/share/man\n\ninstall -d -o root -g wheel -m 0755 \"$DSTROOT\"/\"$MANDIR\"/man1\ninstall -c -o root -g wheel -m 0644 \"$PROJECT_DIR\"/tcpdump/tcpdump.1 \"$DSTROOT\"/\"$MANDIR\"/man1\n\n# Install open source information\ninstall -d -o root -g wheel -m 0755 \"$DSTROOT\"/usr/local/OpenSourceVersions\ninstall -c -o root -g wheel -m 0444 \"$PROJECT_DIR\"/tcpdump.plist \"$DSTROOT\"/usr/local/OpenSourceVersions\ninstall -d -o root -g wheel -m 0755 \"$DSTROOT\"/usr/local/OpenSourceLicenses\ninstall -c -o root -g wheel -m 0444 \"$PROJECT_DIR\"/tcpdump/LICENSE \"$DSTROOT\"/usr/local/OpenSourceLicenses/tcpdump.txt\n"; - }; 72DA6D0C1E4A55B300568AC1 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1081,13 +1159,15 @@ "", ); outputPaths = ( + "$(DERIVED_FILE_DIR)/newOutputFile", ); runOnlyForDeploymentPostprocessing = 0; shellPath = "/bin/sh -v"; - shellScript = "print_tcpdump_version()\n{\n cat tcpdump/VERSION\n}\n\n\nprint_darwin_version()\n{\n darwin_version=\"${RC_ProjectSourceVersion}\"\n if [ -z ${darwin_version} ]; then\n darwin_version=\"`git branch|grep '* '|awk '{ print $2 }'` (`date '+%Y-%m-%d %H:%M:%S'`)\"\n fi\n echo ${darwin_version}\n}\n\nversion_string=\"tcpdump version `print_tcpdump_version` -- Apple version `print_darwin_version`\"\n\nmkdir -p \"${SHARED_DERIVED_FILE_DIR}\"\n\necho \"const char version[] = \\\"${version_string}\\\";\" > \"${SHARED_DERIVED_FILE_DIR}/tcpdump_version.h\"\n\nexit 0\n"; + shellScript = "print_tcpdump_version()\n{\n cat tcpdump/VERSION\n}\n\nprint_darwin_version()\n{\n echo ${darwin_version}\n}\n\nif [ -z \"${RC_ProjectSourceVersion}\" ]; then\n if [ -f .git/config ]; then\n grep -q tcpdump.git .git/config\n if [ $? -eq 0 ]; then\n darwin_version=\"`git status|head -n 1|awk '{ print $NF }'` (`date '+%Y-%m-%d %H:%M:%S'`)\"\n fi\n fi\nelif [ \"${RC_ProjectSourceVersion}\" = \"9999.99.99\" ]; then\n\techo ${RC_ProjectNameAndSourceVersion}|grep -q \"^tcpdump-Branch.*__\"\n\tif [ $? -eq 0 ]; then\n\t\tbranch=\"`echo ${RC_ProjectNameAndSourceVersion}|sed s/^tcpdump-Branch.*__//`\"\n\t\tif [ -n \"${branch}\" ]; then\n\t\t\tdarwin_version=\"${branch}\"\n\t\tfi\n\tfi\nelse\n darwin_version=\"${RC_ProjectSourceVersion}\"\nfi\n\nif [ -z \"${darwin_version}\" ]; then\n darwin_version=\"main (`date '+%Y-%m-%d %H:%M:%S'`)\"\nfi\n\nversion_string=\"`print_tcpdump_version` -- Apple version `print_darwin_version`\"\n\nmkdir -p \"${SHARED_DERIVED_FILE_DIR}\"\n\necho \"const char version[] = \\\"${version_string}\\\";\" > \"${SHARED_DERIVED_FILE_DIR}/tcpdump_version.h\"\n\nexit 0\n"; }; FC791702103A362700CBA90E /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 8; files = ( ); @@ -1097,7 +1177,7 @@ ); runOnlyForDeploymentPostprocessing = 1; shellPath = /bin/sh; - shellScript = "# exit immediately on failure\nset -e\n\nMANDIR=/usr/share/man\n\ninstall -d -o root -g wheel -m 0755 \"$DSTROOT\"/\"$MANDIR\"/man1\ninstall -c -o root -g wheel -m 0644 \"$PROJECT_DIR\"/tcpdump/tcpdump.1 \"$DSTROOT\"/\"$MANDIR\"/man1\n\n# Install open source information\ninstall -d -o root -g wheel -m 0755 \"$DSTROOT\"/usr/local/OpenSourceVersions\ninstall -c -o root -g wheel -m 0444 \"$PROJECT_DIR\"/tcpdump.plist \"$DSTROOT\"/usr/local/OpenSourceVersions\ninstall -d -o root -g wheel -m 0755 \"$DSTROOT\"/usr/local/OpenSourceLicenses\ninstall -c -o root -g wheel -m 0444 \"$PROJECT_DIR\"/tcpdump/LICENSE \"$DSTROOT\"/usr/local/OpenSourceLicenses/tcpdump.txt\n"; + shellScript = "# exit immediately on failure\nset -e\n\ninstall -d -m 0755 \"$DSTROOT\"/usr/local/OpenSourceLicenses\ninstall -c -m 0444 \"$PROJECT_DIR\"/tcpdump/LICENSE \"$DSTROOT\"/usr/local/OpenSourceLicenses/tcpdump.txt\n"; }; /* End PBXShellScriptBuildPhase section */ @@ -1261,6 +1341,7 @@ 7244CC651624FF2100141ECF /* print-token.c in Sources */, 7244CC661624FF2100141ECF /* print-udld.c in Sources */, 7244CC671624FF2100141ECF /* print-udp.c in Sources */, + 723CA049265ED315007C96B4 /* print-unsupported.c in Sources */, 7244CC761624FF2100141ECF /* print-usb.c in Sources */, 7244CC681624FF2100141ECF /* print-vjc.c in Sources */, 7244CC691624FF2100141ECF /* print-vqp.c in Sources */, @@ -1283,6 +1364,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 727D62C325C4D9FE0003EC82 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 727D62CF25C4DC950003EC82 /* pktmetadatafilter.c in Sources */, + 727D62CA25C4D9FE0003EC82 /* pktmetadatafilter_test.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 72DA6CFC1E4A52F300568AC1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1450,6 +1540,7 @@ FC7916F1103A35FE00CBA90E /* print-token.c in Sources */, FC7916F2103A35FE00CBA90E /* print-udld.c in Sources */, FC7916F3103A35FE00CBA90E /* print-udp.c in Sources */, + 723CA048265ED315007C96B4 /* print-unsupported.c in Sources */, 720E46301231644C0056BE01 /* print-usb.c in Sources */, FC7916F4103A35FE00CBA90E /* print-vjc.c in Sources */, FC7916F5103A35FE00CBA90E /* print-vqp.c in Sources */, @@ -1558,6 +1649,121 @@ }; name = Debug; }; + 727D62CC25C4D9FE0003EC82 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + OTHER_CFLAGS = "-DDEBUG=1"; + "OTHER_LDFLAGS[sdk=macosx*]" = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + }; + name = Release; + }; + 727D62CD25C4D9FE0003EC82 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = "-DDEBUG=1"; + "OTHER_LDFLAGS[sdk=macosx*]" = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + }; + name = Debug; + }; 72C2859F15FFD8C200E35042 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1729,6 +1935,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 727D62CB25C4D9FE0003EC82 /* Build configuration list for PBXNativeTarget "pktmetadatafilter_test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 727D62CC25C4D9FE0003EC82 /* Release */, + 727D62CD25C4D9FE0003EC82 /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 72DA6D061E4A52F300568AC1 /* Build configuration list for PBXNativeTarget "gen_tcpdump_version" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/tcpdump/netdissect-ctype.h b/tcpdump/netdissect-ctype.h new file mode 100644 index 0000000..a608716 --- /dev/null +++ b/tcpdump/netdissect-ctype.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 1988-1997 + * The Regents of the University of California. All rights reserved. + * + * Copyright (c) 1998-2012 Michael Richardson + * The TCPDUMP project + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by the University of California, + * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of + * the University nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + +#ifndef netdissect_ctype_h +#define netdissect_ctype_h + +/* + * Locale-independent macros for testing character properties and + * stripping the 8th bit from characters. + * + * Byte values outside the ASCII range are considered unprintable, so + * both ND_ASCII_ISPRINT() and ND_ASCII_ISGRAPH() return "false" for them. + * + * Assumed to be handed a value between 0 and 255, i.e. don't hand them + * a char, as those might be in the range -128 to 127. + */ +#define ND_ISASCII(c) (!((c) & 0x80)) /* value is an ASCII code point */ +#define ND_ASCII_ISPRINT(c) ((c) >= 0x20 && (c) <= 0x7E) +#define ND_ASCII_ISGRAPH(c) ((c) > 0x20 && (c) <= 0x7E) +#define ND_ASCII_ISDIGIT(c) ((c) >= '0' && (c) <= '9') +#define ND_TOASCII(c) ((c) & 0x7F) + +/* + * Locale-independent macros for coverting to upper or lower case. + * + * Byte values outside the ASCII range are not converted. Byte values + * *in* the ASCII range are converted to byte values in the ASCII range; + * in particular, 'i' is upper-cased to 'I" and 'I' is lower-cased to 'i', + * even in Turkish locales. + */ +#define ND_ASCII_TOLOWER(c) (((c) >= 'A' && (c) <= 'Z') ? (c) - 'A' + 'a' : (c)) +#define ND_ASCII_TOUPPER(c) (((c) >= 'a' && (c) <= 'z') ? (c) - 'a' + 'A' : (c)) + +#endif /* netdissect-ctype.h */ diff --git a/tcpdump/netdissect.h b/tcpdump/netdissect.h index 0399360..26ca5f2 100644 --- a/tcpdump/netdissect.h +++ b/tcpdump/netdissect.h @@ -157,6 +157,7 @@ struct netdissect_options { * LF, CR and SPACE as graphical chars */ int ndo_Hflag; /* dissect 802.11s draft mesh standard */ + const char *ndo_protocol; /* protocol */ #ifdef __APPLE__ int ndo_gflag; /* no line break in verbose mode for easier grepping */ @@ -484,6 +485,7 @@ extern u_int sll_if_print IF_PRINTER_ARGS; extern u_int sunatm_if_print IF_PRINTER_ARGS; extern u_int symantec_if_print IF_PRINTER_ARGS; extern u_int token_if_print IF_PRINTER_ARGS; +extern void unsupported_if_print IF_PRINTER_ARGS; extern u_int usb_linux_48_byte_print IF_PRINTER_ARGS; extern u_int usb_linux_64_byte_print IF_PRINTER_ARGS; @@ -689,6 +691,8 @@ extern int nextproto4_cksum(netdissect_options *, const struct ip *, const uint8 extern int nextproto6_cksum(netdissect_options *, const struct ip6_hdr *, const uint8_t *, u_int, u_int, u_int); /* Utilities */ +extern void nd_print_protocol_caps(netdissect_options *); + extern int mask2plen(uint32_t); extern int mask62plen(const u_char *); diff --git a/tcpdump/pktaputil.c b/tcpdump/pktaputil.c index bbdce0d..b0eb3bc 100644 --- a/tcpdump/pktaputil.c +++ b/tcpdump/pktaputil.c @@ -43,6 +43,7 @@ #include #endif /* DLT_PCAPNG */ +#include #include #include #include @@ -60,7 +61,6 @@ extern u_int packets_mtdt_fltr_drop; extern char *svc2str(uint32_t); - /* * Returns: * -1: pktap header is truncated and cannot be parsed @@ -90,12 +90,13 @@ pktap_filter_packet(netdissect_options *ndo, struct pcap_if_info *if_info, * New interface */ if (if_info == NULL) { - if_info = pcap_add_if_info(pcap, pktp_hdr->pth_ifname, - -1, pktp_hdr->pth_dlt, ndo->ndo_snaplen); + if_info = pcap_add_if_info(pcap, pktp_hdr->pth_ifname, -1, + pktp_hdr->pth_dlt, ndo->ndo_snaplen); if (if_info == NULL) { fprintf(stderr, "%s: pcap_add_if_info(%s, %u) failed: %s\n", - __func__, pktp_hdr->pth_ifname, pktp_hdr->pth_dlt, pcap_geterr(pcap)); - return (0); + __func__, pktp_hdr->pth_ifname, pktp_hdr->pth_dlt, pcap_geterr(pcap)); + kill(getpid(), SIGTERM); + return 0; } } } diff --git a/tcpdump/pktmetadatafilter.c b/tcpdump/pktmetadatafilter.c index e28b17f..8bc4447 100644 --- a/tcpdump/pktmetadatafilter.c +++ b/tcpdump/pktmetadatafilter.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013 Apple Inc. All rights reserved. + * Copyright (c) 2012-2021 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -43,47 +43,52 @@ * ifexpr: "if" compexpr * compexpr: equalexpr | notequalexpr * equalexpr: "=" str + * notequalexpr: "!=" str * str: a-zA-Z0-9 * procexpr: "proc" compexpr * svcexpre: "svc" compexpr * direxpr: "dir" compexpr - * - */ +` */ -#include -#include #include -#include +#include +#include +#include #include +#include #include -#include +#include #include "pktmetadatafilter.h" -enum { - TOK_NONE, - - TOK_OR, - TOK_AND, - TOK_NOT, - TOK_LP, - TOK_RP, - TOK_IF, - TOK_PROC, - TOK_EPROC, - TOK_PID, - TOK_EPID, - TOK_SVC, - TOK_DIR, - TOK_EQ, - TOK_NEQ, - TOK_STR +#define TOKEN_ID_LIST \ + X(TOK_NONE) \ + X(TOK_OR) \ + X(TOK_AND) \ + X(TOK_NOT) \ + X(TOK_LP) \ + X(TOK_RP) \ + X(TOK_IF) \ + X(TOK_PROC) \ + X(TOK_EPROC) \ + X(TOK_PID) \ + X(TOK_EPID) \ + X(TOK_SVC) \ + X(TOK_DIR) \ + X(TOK_EQ) \ + X(TOK_NEQ) \ + X(TOK_STR) \ + +enum token_id_type { +#define X(name, ...) name, + TOKEN_ID_LIST +#undef X }; struct token { - int id; - char *label; - size_t len; + int tok_id; + char *tok_label; + size_t tok_len; }; struct token lex_token = { TOK_NONE, NULL, 0 }; @@ -102,7 +107,7 @@ struct token tokens[] = { { TOK_SVC, "svc", 0 }, { TOK_DIR, "dir", 0 }, { TOK_EQ, "=", 0 }, - { TOK_NEQ, "!=", 0 }, + { TOK_NEQ, "!=", 0 }, /* alternate notation */ { TOK_OR, "||", 0 }, @@ -126,7 +131,7 @@ static int num_nodes = 0; static struct node * alloc_node(int); static void free_node(struct node *); -static const char * get_strcharset(void); +static const char * get_strcharset(bool); static void get_token(const char **); static struct node * parse_term_expression(const char **); static struct node * parse_paren_expression(const char **); @@ -136,6 +141,26 @@ static struct node * parse_or_expression(const char **); #ifdef DEBUG static int parse_verbose = 0; + +void +set_parse_verbose(int val) +{ + parse_verbose = val; +} + +const char * +get_token_id_str(int tok_id) +{ +#define X(name, ...) case name: return #name; + switch (tok_id) { + TOKEN_ID_LIST + + default: + break; + } + return "invalid token"; +#undef X +} #endif /* DEBUG */ static struct node * @@ -162,7 +187,7 @@ free_node(struct node *node) } static const char * -get_strcharset(void) +get_strcharset(bool quoted) { static char *strcharset = NULL; @@ -183,7 +208,10 @@ get_strcharset(void) strcharset[n++] = '_'; strcharset[n++] = '+'; strcharset[n++] = '.'; - strcharset[n++] = '*'; + strcharset[n++] = '*'; + if (quoted) { + strcharset[n++] = ' '; + } } return strcharset; @@ -192,7 +220,7 @@ get_strcharset(void) static void get_token(const char **ptr) { - size_t len; + size_t len = 0; const char *charset; struct token *tok; @@ -208,45 +236,69 @@ get_token(const char **ptr) /* Are we at the end of the expression */ if (**ptr == 0) { - lex_token.id = TOK_NONE; + lex_token.tok_id = TOK_NONE; return; } - for (tok = &tokens[0]; tok->id != TOK_NONE; tok++) { - if (tok->len == 0) - tok->len = strlen(tok->label); + for (tok = &tokens[0]; tok->tok_id != TOK_NONE; tok++) { + if (tok->tok_len == 0) + tok->tok_len = strlen(tok->tok_label); - if (strncmp(*ptr, tok->label, tok->len) == 0) { + if (strncmp(*ptr, tok->tok_label, tok->tok_len) == 0) { #ifdef DEBUG if (parse_verbose) - printf("tok id: %d label: %s\n", tok->id, tok->label); + printf("tok id: %s label: %s\n", get_token_id_str(tok->tok_id), tok->tok_label); #endif /* DEBUG */ - lex_token.id = tok->id; - lex_token.label = strdup(tok->label); - lex_token.len = tok->len; - *ptr += lex_token.len; + lex_token.tok_id = tok->tok_id; + lex_token.tok_label = strdup(tok->tok_label); + lex_token.tok_len = tok->tok_len; + *ptr += lex_token.tok_len; return; } } - lex_token.id = TOK_STR; + lex_token.tok_id = TOK_STR; if (strncmp(*ptr, "''", 2) == 0 || strncmp(*ptr, "\"\"", 2) == 0) { - lex_token.label = malloc(1); - *lex_token.label = 0; // empty string - lex_token.len = 0; + lex_token.tok_label = malloc(1); + *lex_token.tok_label = 0; // empty string + lex_token.tok_len = 0; *ptr += 2; } else { - charset = get_strcharset(); + bool single_quoted = false; + bool double_quoted = false; + + if (**ptr == '\'') { + single_quoted = 1; + *ptr += 1; + } else if (**ptr == '"') { + double_quoted = 1; + *ptr += 1; + } + charset = get_strcharset(single_quoted || double_quoted); len = strspn(*ptr, charset); - lex_token.label = realloc(lex_token.label, len + 1); - strlcpy(lex_token.label, *ptr, len + 1); - lex_token.len = len; - *ptr += lex_token.len; + lex_token.tok_label = realloc(lex_token.tok_label, len + 1); + strlcpy(lex_token.tok_label, *ptr, len + 1); + lex_token.tok_len = len; + *ptr += lex_token.tok_len; + + if (single_quoted) { + if (**ptr != '\'') { + lex_token.tok_id = TOK_NONE; + } else { + *ptr += 1; + } + } else if (double_quoted) { + if (**ptr != '"') { + lex_token.tok_id = TOK_NONE; + } else { + *ptr += 1; + } + } } #ifdef DEBUG @@ -254,8 +306,8 @@ get_token(const char **ptr) char fmt[50]; bzero(fmt, sizeof(fmt)); - snprintf(fmt, sizeof(fmt), "tok id: %%d len: %%lu str: %%.%lus\n", len); - printf(fmt, lex_token.id , lex_token.len, lex_token.label); + snprintf(fmt, sizeof(fmt), "tok id: %%s len: %%lu str: %%.%lus *ptr: %%s\n", len); + printf(fmt, get_token_id_str(lex_token.tok_id) , lex_token.tok_len, lex_token.tok_label, *ptr); } #endif /* DEBUG */ return; @@ -271,7 +323,7 @@ parse_term_expression(const char **ptr) printf("%s\n", __func__); #endif /* DEBUG */ - switch (lex_token.id) { + switch (lex_token.tok_id) { case TOK_IF: case TOK_PROC: case TOK_EPROC: @@ -279,17 +331,17 @@ parse_term_expression(const char **ptr) case TOK_EPID: case TOK_SVC: case TOK_DIR: - term_node = alloc_node(lex_token.id); + term_node = alloc_node(lex_token.tok_id); get_token(ptr); - if (lex_token.id == TOK_EQ || lex_token.id == TOK_NEQ) - term_node->op = lex_token.id; + if (lex_token.tok_id == TOK_EQ || lex_token.tok_id == TOK_NEQ) + term_node->op = lex_token.tok_id; else { warnx("cannot parse operator at: %s", *ptr); goto fail; } get_token(ptr); - if (lex_token.id != TOK_STR) { + if (lex_token.tok_id != TOK_STR) { warnx("missig comparison string at: %s", *ptr); goto fail; } @@ -298,7 +350,7 @@ parse_term_expression(const char **ptr) * For TOK_SVC and TOK_DIR restrict to meaningful values */ - term_node->str = strdup(lex_token.label); + term_node->str = strdup(lex_token.tok_label); if (term_node->id == TOK_PID || term_node->id == TOK_EPID) term_node->num = atoi(term_node->str); @@ -323,7 +375,7 @@ parse_paren_expression(const char **ptr) printf("%s\n", __func__); #endif /* DEBUG */ - if (lex_token.id == TOK_LP) { + if (lex_token.tok_id == TOK_LP) { struct node *or_node; get_token(ptr); @@ -331,7 +383,7 @@ parse_paren_expression(const char **ptr) if (or_node == NULL) return (NULL); - if (lex_token.id != TOK_RP) { + if (lex_token.tok_id != TOK_RP) { warnx("missing right parenthesis at %s", *ptr); free_node(or_node); @@ -352,7 +404,7 @@ parse_not_expression(const char **ptr) printf("%s\n", __func__); #endif /* DEBUG */ - if (lex_token.id == TOK_NOT) { + if (lex_token.tok_id == TOK_NOT) { struct node *other_node; get_token(ptr); @@ -389,7 +441,7 @@ parse_and_expression(const char **ptr) return (NULL); get_token(ptr); - if (lex_token.id == TOK_AND) { + if (lex_token.tok_id == TOK_AND) { struct node *other_node; get_token(ptr); @@ -430,7 +482,7 @@ parse_or_expression(const char **ptr) * Note that parse_and_expression() returns * with the current token */ - if (lex_token.id == TOK_OR) { + if (lex_token.tok_id == TOK_OR) { struct node *other_node; get_token(ptr); @@ -538,6 +590,9 @@ evaluate_expression(node_t *expression, struct pkt_meta_data *p) void print_expression(node_t *expression) { + if (expression == NULL) { + return; + } switch (expression->id) { case TOK_AND: printf("("); diff --git a/tcpdump/pktmetadatafilter.h b/tcpdump/pktmetadatafilter.h index ad4edea..50ac283 100644 --- a/tcpdump/pktmetadatafilter.h +++ b/tcpdump/pktmetadatafilter.h @@ -48,4 +48,8 @@ void print_expression(node_t *); int evaluate_expression(node_t *, struct pkt_meta_data *); void free_expression(node_t *); +#ifdef DEBUG +void set_parse_verbose(int val); +#endif /* DEBUG */ + #endif diff --git a/tcpdump/print-mptcp.c b/tcpdump/print-mptcp.c index 392791e..3a71471 100644 --- a/tcpdump/print-mptcp.c +++ b/tcpdump/print-mptcp.c @@ -113,21 +113,39 @@ struct mp_dss { #define MP_DSS_a 0x02 #define MP_DSS_A 0x01 +static const struct tok mptcp_addr_subecho_bits[] = { + { 0x6, "v0-ip6" }, + { 0x4, "v0-ip4" }, + { 0x1, "v1-echo" }, + { 0x0, "v1" }, + { 0, NULL } +}; + struct mp_add_addr { - uint8_t kind; - uint8_t len; - uint8_t sub_ipver; - uint8_t addr_id; - union { - struct { - uint8_t addr[4]; - uint8_t port[2]; - } v4; - struct { - uint8_t addr[16]; - uint8_t port[2]; - } v6; - } u; + uint8_t kind; + uint8_t len; + uint8_t sub_echo; + uint8_t addr_id; + union { + struct { + uint8_t addr[4]; + uint8_t port[2]; + uint8_t mac[8]; + } v4; + struct { + uint8_t addr[4]; + uint8_t mac[8]; + } v4np; + struct { + uint8_t addr[16];; + uint8_t port[2]; + uint8_t mac[8]; + } v6; + struct { + uint8_t addr[16]; + uint8_t mac[8]; + } v6np; + } u; }; #define MP_ADD_ADDR_IPVER(sub_ipver) (((sub_ipver) >> 0) & 0xF) @@ -177,22 +195,32 @@ mp_capable_print(netdissect_options *ndo, const u_char *opt, u_int opt_len, u_char flags) { const struct mp_capable *mpc = (const struct mp_capable *) opt; + uint8_t version; - if (!(opt_len == 12 && (flags & TH_SYN)) && - !(opt_len == 20 && (flags & (TH_SYN | TH_ACK)) == TH_ACK)) + if (!((opt_len == 12 || opt_len == 4) && flags & TH_SYN) && + !((opt_len == 20 || opt_len == 22) && (flags & (TH_SYN | TH_ACK)) == + TH_ACK)) return 0; - if (MP_CAPABLE_OPT_VERSION(mpc->sub_ver) != 0) { - ND_PRINT((ndo, " Unknown Version (%d)", MP_CAPABLE_OPT_VERSION(mpc->sub_ver))); + version = MP_CAPABLE_OPT_VERSION(mpc->sub_ver); + switch (version) { + case 0: /* fall through */ + case 1: + ND_PRINT((ndo, " v%u", version)); + break; + default: + ND_PRINT((ndo, " Unknown Version (%u)", version)); return 1; } if (mpc->flags & MP_CAPABLE_C) ND_PRINT((ndo, " csum")); - ND_PRINT((ndo, " {0x%" PRIx64, EXTRACT_64BITS(mpc->sender_key))); - if (opt_len == 20) /* ACK */ - ND_PRINT((ndo, ",0x%" PRIx64, EXTRACT_64BITS(mpc->receiver_key))); - ND_PRINT((ndo, "}")); + if (opt_len == 12 || opt_len >= 20) { + ND_PRINT((ndo, " {0x%" PRIx64, EXTRACT_64BITS(mpc->sender_key))); + if (opt_len >= 20) + ND_PRINT((ndo, ",0x%" PRIx64, EXTRACT_64BITS(mpc->receiver_key))); + ND_PRINT((ndo, "}")); + } return 1; } @@ -330,27 +358,34 @@ add_addr_print(netdissect_options *ndo, const u_char *opt, u_int opt_len, u_char flags _U_) { const struct mp_add_addr *add_addr = (const struct mp_add_addr *) opt; - u_int ipver = MP_ADD_ADDR_IPVER(add_addr->sub_ipver); - if (!((opt_len == 8 || opt_len == 10) && ipver == 4) && - !((opt_len == 20 || opt_len == 22) && ipver == 6)) - return 0; + if (!(opt_len == 8 || opt_len == 10 || opt_len == 16 || opt_len == 18 || + opt_len == 20 || opt_len == 22 || opt_len == 28 || opt_len == 30)) + return 0; + + ND_PRINT((ndo, " %s", + tok2str(mptcp_addr_subecho_bits, "[bad version/echo]", + add_addr->sub_echo & 0xF))); ND_PRINT((ndo, " id %u", add_addr->addr_id)); - switch (ipver) { - case 4: - ND_PRINT((ndo, " %s", ipaddr_string(ndo, add_addr->u.v4.addr))); - if (opt_len == 10) - ND_PRINT((ndo, ":%u", EXTRACT_16BITS(add_addr->u.v4.port))); - break; - case 6: - ND_PRINT((ndo, " %s", ip6addr_string(ndo, add_addr->u.v6.addr))); - if (opt_len == 22) - ND_PRINT((ndo, ":%u", EXTRACT_16BITS(add_addr->u.v6.port))); - break; - default: - return 0; - } + if (opt_len == 8 || opt_len == 10 || opt_len == 16 || opt_len == 18) { + ND_PRINT((ndo, " %s", ipaddr_string(ndo, add_addr->u.v4.addr))); + if (opt_len == 10 || opt_len == 18) + ND_PRINT((ndo, ":%u", EXTRACT_16BITS(add_addr->u.v4.port))); + if (opt_len == 16) + ND_PRINT((ndo, " hmac 0x%" PRIx64, EXTRACT_64BITS(add_addr->u.v4np.mac))); + if (opt_len == 18) + ND_PRINT((ndo, " hmac 0x%" PRIx64, EXTRACT_64BITS(add_addr->u.v4.mac))); + } + if (opt_len == 20 || opt_len == 22 || opt_len == 28 || opt_len == 30) { + ND_PRINT((ndo, " %s", ip6addr_string(ndo, add_addr->u.v6.addr))); + if (opt_len == 22 || opt_len == 30) + ND_PRINT((ndo, ":%u", EXTRACT_16BITS(add_addr->u.v6.port))); + if (opt_len == 28) + ND_PRINT((ndo, " hmac 0x%" PRIx64, EXTRACT_64BITS(add_addr->u.v6np.mac))); + if (opt_len == 30) + ND_PRINT((ndo, " hmac 0x%" PRIx64, EXTRACT_64BITS(add_addr->u.v6.mac))); + } return 1; } diff --git a/tcpdump/print-ppp.c b/tcpdump/print-ppp.c index 8917617..a51989f 100644 --- a/tcpdump/print-ppp.c +++ b/tcpdump/print-ppp.c @@ -1367,19 +1367,29 @@ print_bacp_config_options(netdissect_options *ndo, return 0; } +/* + * Un-escape RFC 1662 PPP in HDLC-like framing, with octet escapes. + * The length argument is the on-the-wire length, not the captured + * length; we can only un-escape the captured part. + */ static void ppp_hdlc(netdissect_options *ndo, const u_char *p, int length) { + u_int caplen = ndo->ndo_snapend - p; u_char *b, *t, c; const u_char *s; - int i, proto; + u_int i; + int proto; const void *se; - if (length <= 0) + if (caplen == 0) + return; + + if (length == 0) return; - b = (u_char *)malloc(length); + b = (u_char *)malloc(caplen); if (b == NULL) return; @@ -1388,10 +1398,10 @@ ppp_hdlc(netdissect_options *ndo, * Do this so that we dont overwrite the original packet * contents. */ - for (s = p, t = b, i = length; i > 0 && ND_TTEST(*s); i--) { + for (s = p, t = b, i = caplen; i > 0; i--) { c = *s++; if (c == 0x7d) { - if (i <= 1 || !ND_TTEST(*s)) + if (i <= 1) break; i--; c = *s++ ^ 0x20; diff --git a/tcpdump/print-tcp.c b/tcpdump/print-tcp.c index b80a2f2..34c46b8 100644 --- a/tcpdump/print-tcp.c +++ b/tcpdump/print-tcp.c @@ -590,11 +590,33 @@ tcp_print(netdissect_options *ndo, break; case TCPOPT_MPTCP: + { + const u_char *snapend_save; + int ret; + datalen = len - 2; LENCHECK(datalen); - if (!mptcp_print(ndo, cp-2, len, flags)) + /* FIXME: Proof-read mptcp_print() and if it + * always covers all bytes when it returns 1, + * only do ND_TCHECK_LEN() if it returned 0. + */ + ND_TCHECK2(*cp, datalen); + /* 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. + */ + snapend_save = ndo->ndo_snapend; + ndo->ndo_snapend = min(cp - 2 + len, + ndo->ndo_snapend); + ret = mptcp_print(ndo, cp - 2, len, flags); + ndo->ndo_snapend = snapend_save; + if (!ret) goto bad; break; + } case TCPOPT_FASTOPEN: datalen = len - 2; diff --git a/tcpdump/print-unsupported.c b/tcpdump/print-unsupported.c new file mode 100644 index 0000000..deb83dc --- /dev/null +++ b/tcpdump/print-unsupported.c @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2020 The TCPDUMP project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code + * distributions retain the above copyright notice and this paragraph + * in its entirety, and (2) distributions including binary code include + * the above copyright notice and this paragraph in its entirety in + * the documentation or other materials provided with the distribution. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND + * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT + * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE. + */ + +/* \summary: unsupported link-layer protocols printer */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "netdissect-stdinc.h" + +#include "netdissect.h" + +void +unsupported_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, + const u_char *p) +{ + ndo->ndo_protocol = "unsupported"; + nd_print_protocol_caps(ndo); +#ifdef __APPLE__ + hex_and_ascii_print(ndo, "\n\t", p, MIN(h->caplen, ndo->ndo_snaplen)); +#else /* __APPLE__ */ + hex_and_ascii_print(ndo, "\n\t", p, h->caplen); +#endif /* __APPLE__ */ +} diff --git a/tcpdump/print.c b/tcpdump/print.c index 5cd5bff..f98ccab 100644 --- a/tcpdump/print.c +++ b/tcpdump/print.c @@ -302,16 +302,8 @@ get_if_printer(netdissect_options *ndo, int type) if_printer printer; printer = lookup_printer(type); - if (printer == NULL) { - dltname = pcap_datalink_val_to_name(type); - if (dltname != NULL) - (*ndo->ndo_error)(ndo, - "packet printing is not supported for link type %s: use -w", - dltname); - else - (*ndo->ndo_error)(ndo, - "packet printing is not supported for link type %d: use -w", type); - } + if (printer == NULL) + printer = unsupported_if_print; return printer; } diff --git a/tcpdump/print_pktap.c b/tcpdump/print_pktap.c index 8cbab48..074b08a 100644 --- a/tcpdump/print_pktap.c +++ b/tcpdump/print_pktap.c @@ -49,20 +49,16 @@ extern char *svc2str(uint32_t); void print_pktap_header(struct netdissect_options *ndo, struct pktap_header *pktp_hdr) { - ND_PRINT((ndo, "pth_length %u (sizeof(struct pktap_header) %lu)\n", + ND_PRINT((ndo, "pth_length %u (sizeof(struct pktap_header) %lu)", pktp_hdr->pth_length, sizeof(struct pktap_header))); - ND_PRINT((ndo, "pth_type_next %u\n", pktp_hdr->pth_type_next)); - ND_PRINT((ndo, "pth_dlt %u\n", pktp_hdr->pth_dlt)); - ND_PRINT((ndo, "pth_ifname %s\n", pktp_hdr->pth_ifname)); - ND_PRINT((ndo, "pth_flags 0x%x\n", pktp_hdr->pth_flags)); - ND_PRINT((ndo, "pth_protocol_family %u\n", pktp_hdr->pth_protocol_family)); - ND_PRINT((ndo, "pth_frame_pre_length %u\n", pktp_hdr->pth_frame_pre_length)); - ND_PRINT((ndo, "pth_frame_post_length %u\n", pktp_hdr->pth_frame_post_length)); - ND_PRINT((ndo, "pth_pid %d\n", pktp_hdr->pth_pid)); - ND_PRINT((ndo, "pth_comm %s\n", pktp_hdr->pth_comm)); - ND_PRINT((ndo, "pth_svc %u\n", pktp_hdr->pth_svc)); - ND_PRINT((ndo, "pth_epid %d\n", pktp_hdr->pth_epid)); - ND_PRINT((ndo, "pth_ecomm %s\n", pktp_hdr->pth_ecomm)); + ND_PRINT((ndo, " type_next %u", pktp_hdr->pth_type_next)); + ND_PRINT((ndo, " dlt %u", pktp_hdr->pth_dlt)); + ND_PRINT((ndo, " ifname %s", pktp_hdr->pth_ifname)); + ND_PRINT((ndo, " flags 0x%x", pktp_hdr->pth_flags)); + ND_PRINT((ndo, " protocol_family %u", pktp_hdr->pth_protocol_family)); + ND_PRINT((ndo, " frame_pre_length %u", pktp_hdr->pth_frame_pre_length)); + ND_PRINT((ndo, " frame_post_length %u", pktp_hdr->pth_frame_post_length)); + ND_PRINT((ndo, " iftype %u\n", pktp_hdr->pth_iftype)); } #endif /* DEBUG */ @@ -188,6 +184,13 @@ pktap_if_print(struct netdissect_options *ndo, const struct pcap_pkthdr *h, prsep)); prsep = ", "; } +#ifdef PTH_FLAG_WAKE_PKT + if ((pktp_hdr->pth_flags & PTH_FLAG_WAKE_PKT)) { + ND_PRINT((ndo, "%s" "wk", + prsep)); + prsep = ", "; + } +#endif /* PTH_FLAG_WAKE_PKT */ } ND_PRINT((ndo, ") ")); } diff --git a/tcpdump/tcpdump.1 b/tcpdump/tcpdump.1 index 29bd09e..870978c 100644 --- a/tcpdump/tcpdump.1 +++ b/tcpdump/tcpdump.1 @@ -2087,6 +2087,14 @@ incoming packet not on interface en0: Note that a complex packet metadata filter expression needs to be put in quotes as the option .B \-Q takes a single string parameter. +.LP +Likewise, strings that contain spaces have to be surrounded by quotes. For example: +.LP +.RS +.nf +\fB-Q "proc = 'Some App'"\fP +.fi +.RE .SH "SEE ALSO" stty(1), pcap(3PCAP), bpf(4), nit(4P), \%pcap-savefile(5), \%pcap-filter(7), \%pcap-tstamp(7) diff --git a/tcpdump/tcpdump.c b/tcpdump/tcpdump.c index 3b08914..967ec8e 100644 --- a/tcpdump/tcpdump.c +++ b/tcpdump/tcpdump.c @@ -3688,13 +3688,13 @@ print_pcap_ng_block(u_char *user, const struct pcap_pkthdr *h, const u_char *sp) if (pcap_ng_block_get_option(block, PCAPNG_IF_NAME, &option_info) == 1) ifname = (const char *)option_info.value; - if_info = pcap_add_if_info(ndo->ndo_pcap, ifname, -1, idbp->idb_linktype, idbp->idb_snaplen); + if_info = pcap_add_if_info(ndo->ndo_pcap, ifname, -1, linktype_to_dlt(idbp->idb_linktype), idbp->idb_snaplen); if (if_info == NULL) error("%s: cannot allocate memory", __func__); if (ndo->ndo_kflag & PRMD_VERBOSE) - ND_PRINT((ndo, "Interface Description Block id: %d name: %s linktype: %u snaplen: %u\n", - if_info->if_id, if_info->if_name, if_info->if_linktype, + ND_PRINT((ndo, "Interface Description Block id: %d name: %s linktype: %u (dlt: %d) snaplen: %u\n", + if_info->if_id, if_info->if_name, idbp->idb_linktype, if_info->if_linktype, if_info->if_snaplen)); goto done; @@ -3929,7 +3929,7 @@ print_pcap_ng_block(u_char *user, const struct pcap_pkthdr *h, const u_char *sp) /* * Packet metadata */ - if (ndo->ndo_kflag != PRMD_NONE && ndo->ndo_kflag != PRMD_VERBOSE) { + if (ndo->ndo_kflag != PRMD_NONE && ndo->ndo_kflag != PRMD_VERBOSE) { const char *prsep = ""; ND_PRINT((ndo, "(")); @@ -4004,6 +4004,13 @@ print_pcap_ng_block(u_char *user, const struct pcap_pkthdr *h, const u_char *sp) prsep)); prsep = ", "; } +#ifdef PCAPNG_EPB_PMDF_WAKE_PKT + if ((pmdflags & PCAPNG_EPB_PMDF_WAKE_PKT)) { + ND_PRINT((ndo, "%s" "wk", + prsep)); + prsep = ", "; + } +#endif /* PCAPNG_EPB_PMDF_WAKE_PKT */ } /* diff --git a/tcpdump/tests/TESTLISTRADAR b/tcpdump/tests/TESTLISTRADAR index 88f47ea..d5347e5 100644 --- a/tcpdump/tests/TESTLISTRADAR +++ b/tcpdump/tests/TESTLISTRADAR @@ -10,3 +10,9 @@ radar-31053702 radar-31053702.pcapng radar-31053702.out -w `mktemp /tmp/tcpdump radar-61850230 radar-61850230.pcapng radar-61850230.out -v -K -g tcp radar-63494669 radar-63494669.pcapng radar-63494669.out -k + +radar-74957353 radar-74957353.pcapng radar-74957353.out tcp + +radar-79792659 radar-79792659.pcapng radar-79792659.out -k + +radar-81131821 radar-81131821.pcapng radar-81131821.out diff --git a/tcpdump/tests/mptcp-fclose.out b/tcpdump/tests/mptcp-fclose.out index 90ab599..a9cb7e4 100644 --- a/tcpdump/tests/mptcp-fclose.out +++ b/tcpdump/tests/mptcp-fclose.out @@ -1,8 +1,8 @@ ARP, Request who-has 10.2.1.2 tell 10.2.1.1, length 28 ARP, Reply 10.2.1.2 is-at d6:06:3c:4a:35:7a, length 28 -IP 10.1.1.2.37479 > 10.2.1.2.2002: Flags [S], seq 1895673170, win 14600, options [mss 1460,sackOK,TS val 38230 ecr 0,nop,wscale 6,mptcp capable csum {0x9b59be3d695e66a7}], length 0 -IP 10.2.1.2.2002 > 10.1.1.2.37479: Flags [S.], seq 2868811558, ack 1895673171, win 14280, options [mss 1460,sackOK,TS val 4294943148 ecr 38230,nop,wscale 6,mptcp capable csum {0xd005b1ab34bad344}], length 0 -IP 10.1.1.2.37479 > 10.2.1.2.2002: Flags [.], ack 1, win 229, options [nop,nop,TS val 38230 ecr 4294943148,mptcp capable csum {0x9b59be3d695e66a7,0xd005b1ab34bad344}], length 0 +IP 10.1.1.2.37479 > 10.2.1.2.2002: Flags [S], seq 1895673170, win 14600, options [mss 1460,sackOK,TS val 38230 ecr 0,nop,wscale 6,mptcp capable v0 csum {0x9b59be3d695e66a7}], length 0 +IP 10.2.1.2.2002 > 10.1.1.2.37479: Flags [S.], seq 2868811558, ack 1895673171, win 14280, options [mss 1460,sackOK,TS val 4294943148 ecr 38230,nop,wscale 6,mptcp capable v0 csum {0xd005b1ab34bad344}], length 0 +IP 10.1.1.2.37479 > 10.2.1.2.2002: Flags [.], ack 1, win 229, options [nop,nop,TS val 38230 ecr 4294943148,mptcp capable v0 csum {0x9b59be3d695e66a7,0xd005b1ab34bad344}], length 0 IP 10.1.1.2.37479 > 10.2.1.2.2002: Flags [P.], seq 1:2, ack 1, win 229, options [nop,nop,TS val 38230 ecr 4294943148,mptcp dss ack 3386645601 seq 2976985014 subseq 1 len 1 csum 0x9e91], length 1 IP 10.2.1.2.2002 > 10.1.1.2.37479: Flags [.], ack 2, win 224, options [nop,nop,TS val 4294943148 ecr 38230,mptcp dss ack 2976985015], length 0 IP 10.2.1.2.2002 > 10.1.1.2.37479: Flags [P.], seq 1:2, ack 2, win 224, options [nop,nop,TS val 4294943250 ecr 38230,mptcp dss ack 2976985015 seq 3386645601 subseq 1 len 1 csum 0x54ab], length 1 diff --git a/tcpdump/tests/mptcp.out b/tcpdump/tests/mptcp.out index e52cab1..8f99b04 100644 --- a/tcpdump/tests/mptcp.out +++ b/tcpdump/tests/mptcp.out @@ -1,7 +1,7 @@ -IP 10.2.1.2.35961 > 10.1.1.2.22: Flags [S], seq 2912457561, win 14600, options [mss 1460,sackOK,TS val 4294943152 ecr 0,nop,wscale 6,mptcp capable csum {0x9c9eabd1e46a33b2}], length 0 -IP 10.1.1.2.22 > 10.2.1.2.35961: Flags [S.], seq 125971326, ack 2912457562, win 14280, options [mss 1460,sackOK,TS val 4294943467 ecr 4294943152,nop,wscale 5,mptcp capable csum {0x967d2770b6960552}], length 0 -IP 10.2.1.2.35961 > 10.1.1.2.22: Flags [.], ack 1, win 229, options [nop,nop,TS val 4294943152 ecr 4294943467,mptcp capable csum {0x9c9eabd1e46a33b2,0x967d2770b6960552}], length 0 -IP 10.1.1.2.22 > 10.2.1.2.35961: Flags [P.], seq 1:42, ack 1, win 447, options [nop,nop,TS val 4294943474 ecr 4294943152,mptcp add-addr id 1 10.1.2.2,mptcp dss ack 3576348362 seq 3518592144 subseq 1 len 41 csum 0x82f], length 41 +IP 10.2.1.2.35961 > 10.1.1.2.22: Flags [S], seq 2912457561, win 14600, options [mss 1460,sackOK,TS val 4294943152 ecr 0,nop,wscale 6,mptcp capable v0 csum {0x9c9eabd1e46a33b2}], length 0 +IP 10.1.1.2.22 > 10.2.1.2.35961: Flags [S.], seq 125971326, ack 2912457562, win 14280, options [mss 1460,sackOK,TS val 4294943467 ecr 4294943152,nop,wscale 5,mptcp capable v0 csum {0x967d2770b6960552}], length 0 +IP 10.2.1.2.35961 > 10.1.1.2.22: Flags [.], ack 1, win 229, options [nop,nop,TS val 4294943152 ecr 4294943467,mptcp capable v0 csum {0x9c9eabd1e46a33b2,0x967d2770b6960552}], length 0 +IP 10.1.1.2.22 > 10.2.1.2.35961: Flags [P.], seq 1:42, ack 1, win 447, options [nop,nop,TS val 4294943474 ecr 4294943152,mptcp add-addr v0-ip4 id 1 10.1.2.2,mptcp dss ack 3576348362 seq 3518592144 subseq 1 len 41 csum 0x82f], length 41 IP 10.2.1.2.35961 > 10.1.1.2.22: Flags [.], ack 42, win 229, options [nop,nop,TS val 4294943168 ecr 4294943474,mptcp dss ack 3518592185], length 0 IP 10.2.1.2.35961 > 10.1.1.2.22: Flags [P.], seq 1:42, ack 42, win 229, options [nop,nop,TS val 4294943168 ecr 4294943474,mptcp dss ack 3518592185 seq 3576348362 subseq 1 len 41 csum 0x45c9], length 41 IP 10.1.1.2.22 > 10.2.1.2.35961: Flags [.], ack 42, win 447, options [nop,nop,TS val 4294943474 ecr 4294943168,mptcp dss ack 3576348403], length 0 diff --git a/tcpdump/tests/radar-74957353.out b/tcpdump/tests/radar-74957353.out new file mode 100644 index 0000000..898aff0 --- /dev/null +++ b/tcpdump/tests/radar-74957353.out @@ -0,0 +1,197 @@ +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [SEW], seq 2445669383, win 65535, options [mss 1460,nop,wscale 5,mptcp capable v1,nop,nop,TS val 1979236006 ecr 0,sackOK,eol], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50000: Flags [S.E], seq 436714502, ack 2445669384, win 62503, options [mss 1460,sackOK,TS val 3534614510 ecr 1979236006,nop,wscale 7,mptcp capable v1 csum {0xe2232841fa0ef689}], length 0 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [.], ack 1, win 4096, options [nop,nop,TS val 1979236040 ecr 3534614510,mptcp capable v1 csum {0x406125b6882119e6,0xe2232841fa0ef689}], length 0 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [.], seq 1:1429, ack 1, win 4096, options [nop,nop,TS val 1979236312 ecr 3534614510,mptcp dss ack 3789686029 seq 804902517 subseq 1 len 2000 csum 0x6e5d], length 1428 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [P.], seq 1429:2001, ack 1, win 4096, options [nop,nop,TS val 1979236312 ecr 3534614510,mptcp dss ack 3789686029 seq 804902517 subseq 1 len 2000 csum 0x6e5d], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50000: Flags [.], ack 2001, win 489, options [nop,nop,TS val 3534614818 ecr 1979236312,mptcp dss ack 4066747377], length 0 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [.], seq 2001:3429, ack 1, win 4096, options [nop,nop,TS val 1979236590 ecr 3534614818,mptcp dss ack 3789686029 seq 804904517 subseq 2001 len 2000 csum 0x5ebd], length 1428 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [P.], seq 3429:4001, ack 1, win 4096, options [nop,nop,TS val 1979236590 ecr 3534614818,mptcp dss ack 3789686029 seq 804904517 subseq 2001 len 2000 csum 0x5ebd], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50000: Flags [.], ack 4001, win 489, options [nop,nop,TS val 3534615097 ecr 1979236590,mptcp dss ack 4066747377], length 0 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [.], seq 4001:5429, ack 1, win 4096, options [nop,nop,TS val 1979236864 ecr 3534615097,mptcp dss ack 3789686029 seq 804906517 subseq 4001 len 2000 csum 0x4f1d], length 1428 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [P.], seq 5429:6001, ack 1, win 4096, options [nop,nop,TS val 1979236864 ecr 3534615097,mptcp dss ack 3789686029 seq 804906517 subseq 4001 len 2000 csum 0x4f1d], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50000: Flags [.], ack 6001, win 489, options [nop,nop,TS val 3534615369 ecr 1979236864,mptcp dss ack 4066747377], length 0 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [.], seq 6001:7429, ack 1, win 4096, options [nop,nop,TS val 1979237137 ecr 3534615369,mptcp dss ack 3789686029 seq 804908517 subseq 6001 len 2000 csum 0x3f7d], length 1428 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [P.], seq 7429:8001, ack 1, win 4096, options [nop,nop,TS val 1979237137 ecr 3534615369,mptcp dss ack 3789686029 seq 804908517 subseq 6001 len 2000 csum 0x3f7d], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50000: Flags [.], ack 7429, win 489, options [nop,nop,TS val 3534615637 ecr 1979237137,mptcp dss ack 4066747377], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50000: Flags [.], ack 8001, win 489, options [nop,nop,TS val 3534615637 ecr 1979237137,mptcp dss ack 4066747377], length 0 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [.], seq 8001:9429, ack 1, win 4096, options [nop,nop,TS val 1979237410 ecr 3534615637,mptcp dss ack 3789686029 seq 804910517 subseq 8001 len 2000 csum 0x2fdd], length 1428 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [P.], seq 9429:10001, ack 1, win 4096, options [nop,nop,TS val 1979237410 ecr 3534615637,mptcp dss ack 3789686029 seq 804910517 subseq 8001 len 2000 csum 0x2fdd], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50000: Flags [.], ack 10001, win 489, options [nop,nop,TS val 3534615915 ecr 1979237410,mptcp dss ack 4066747377], length 0 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [.], seq 10001:11429, ack 1, win 4096, options [nop,nop,TS val 1979237681 ecr 3534615915,mptcp dss ack 3789686029 seq 804912517 subseq 10001 len 2000 csum 0x203d], length 1428 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [P.], seq 11429:12001, ack 1, win 4096, options [nop,nop,TS val 1979237681 ecr 3534615915,mptcp dss ack 3789686029 seq 804912517 subseq 10001 len 2000 csum 0x203d], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50000: Flags [.], ack 12001, win 489, options [nop,nop,TS val 3534616187 ecr 1979237681,mptcp dss ack 4066747377], length 0 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [.], seq 12001:13429, ack 1, win 4096, options [nop,nop,TS val 1979237952 ecr 3534616187,mptcp dss ack 3789686029 seq 804914517 subseq 12001 len 2000 csum 0x109d], length 1428 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [P.], seq 13429:14001, ack 1, win 4096, options [nop,nop,TS val 1979237952 ecr 3534616187,mptcp dss ack 3789686029 seq 804914517 subseq 12001 len 2000 csum 0x109d], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50000: Flags [.], ack 14001, win 489, options [nop,nop,TS val 3534616455 ecr 1979237952,mptcp dss ack 4066747377], length 0 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [.], seq 14001:15429, ack 1, win 4096, options [nop,nop,TS val 1979238225 ecr 3534616455,mptcp dss ack 3789686029 seq 804916517 subseq 14001 len 2000 csum 0xfd], length 1428 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [P.], seq 15429:16001, ack 1, win 4096, options [nop,nop,TS val 1979238225 ecr 3534616455,mptcp dss ack 3789686029 seq 804916517 subseq 14001 len 2000 csum 0xfd], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50000: Flags [.], ack 16001, win 489, options [nop,nop,TS val 3534616730 ecr 1979238225,mptcp dss ack 4066747377], length 0 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [.], seq 16001:17429, ack 1, win 4096, options [nop,nop,TS val 1979238498 ecr 3534616730,mptcp dss ack 3789686029 seq 804918517 subseq 16001 len 2000 csum 0xf15c], length 1428 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [P.], seq 17429:18001, ack 1, win 4096, options [nop,nop,TS val 1979238498 ecr 3534616730,mptcp dss ack 3789686029 seq 804918517 subseq 16001 len 2000 csum 0xf15c], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50000: Flags [.], ack 18001, win 489, options [nop,nop,TS val 3534617003 ecr 1979238498,mptcp dss ack 4066747377], length 0 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [.], seq 18001:19429, ack 1, win 4096, options [nop,nop,TS val 1979238771 ecr 3534617003,mptcp dss ack 3789686029 seq 804920517 subseq 18001 len 2000 csum 0xe1bc], length 1428 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [P.], seq 19429:20001, ack 1, win 4096, options [nop,nop,TS val 1979238771 ecr 3534617003,mptcp dss ack 3789686029 seq 804920517 subseq 18001 len 2000 csum 0xe1bc], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50000: Flags [.], ack 20001, win 489, options [nop,nop,TS val 3534617274 ecr 1979238771,mptcp dss ack 4066747377], length 0 +IP 10.42.53.132.50000 > 52.41.70.31.5201: Flags [F.], seq 20001, ack 1, win 4096, options [nop,nop,TS val 1979257673 ecr 3534617274,mptcp dss fin ack 3789686029 seq 804922517 subseq 0 len 1 csum 0xef4], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50000: Flags [.], ack 20002, win 489, options [nop,nop,TS val 3534636218 ecr 1979257673,mptcp dss ack 4066747377], length 0 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [SEW], seq 3111594058, win 65535, options [mss 1460,nop,wscale 5,mptcp capable v0 {0x10b4a985eac6e5d9},nop,nop,TS val 3192558561 ecr 0,sackOK,eol], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [S.E], seq 3152720739, ack 3111594059, win 62503, options [mss 1460,sackOK,TS val 3534642216 ecr 3192558561,nop,wscale 7,mptcp capable v0 csum {0x580fe1c914225d29}], length 0 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 1, win 4096, options [nop,nop,TS val 3192558595 ecr 3534642216,mptcp capable v0 csum {0x10b4a985eac6e5d9,0x580fe1c914225d29}], length 0 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], seq 1:1429, ack 1, win 4096, options [nop,nop,TS val 3192558874 ecr 3534642216,mptcp dss ack 1179770297 seq 3554115263 subseq 1 len 2000 csum 0x7010], length 1428 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [P.], seq 1429:2001, ack 1, win 4096, options [nop,nop,TS val 3192558874 ecr 3534642216,mptcp dss ack 1179770297 seq 3554115263 subseq 1 len 2000 csum 0x7010], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [.], ack 2001, win 473, options [nop,nop,TS val 3534642530 ecr 3192558874,mptcp dss ack 3554117263], length 0 +IP6 2607:fb90:3635:797b:5986:1647:4961:b852.50003 > 2607:7700:0:13::3429:461f.5201: Flags [S], seq 1266509227, win 0, options [mss 1404,nop,wscale 5,mptcp join backup id 3 token 0x15110639 nonce 0xda4cb2e9,nop,nop,TS val 590899905 ecr 0,sackOK,eol], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 1:1025, ack 2001, win 473, options [nop,nop,TS val 3534642530 ecr 3192558874,mptcp dss ack 3554117263 seq 1179770297 subseq 1 len 1024 csum 0xe70b], length 1024 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 1025, win 8169, options [nop,nop,TS val 3192558909 ecr 3534642530,mptcp dss ack 1179771321], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 1025:2001, ack 2001, win 473, options [nop,nop,TS val 3534642556 ecr 3192558874,mptcp dss ack 3554117263 seq 1179771321 subseq 1025 len 976 csum 0xfd59], length 976 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 2001, win 8171, options [nop,nop,TS val 3192558934 ecr 3534642556,mptcp dss ack 1179772297], length 0 +IP6 2607:7700:0:13::3429:461f.5201 > 2607:fb90:3635:797b:5986:1647:4961:b852.50003: Flags [S.], seq 3531829736, ack 1266509228, win 62503, options [mss 1400,sackOK,TS val 1772841781 ecr 590899905,nop,wscale 7,mptcp join id 0 hmac 0xaf8488892c4f796b nonce 0xe34303eb], length 0 +IP6 2607:fb90:3635:797b:5986:1647:4961:b852.50003 > 2607:7700:0:13::3429:461f.5201: Flags [.], ack 1, win 8201, options [nop,nop,TS val 590900118 ecr 1772841781,mptcp join hmac 0xd65ad8e33a106f374b4a6e9b11f4a5739ad65260], length 0 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], seq 2001:3429, ack 2001, win 8201, options [nop,nop,TS val 3192559134 ecr 3534642556,mptcp dss ack 1179772297 seq 3554117263 subseq 2001 len 2000 csum 0x6070], length 1428 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [P.], seq 3429:4001, ack 2001, win 8201, options [nop,nop,TS val 3192559134 ecr 3534642556,mptcp dss ack 1179772297 seq 3554117263 subseq 2001 len 2000 csum 0x6070], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [.], ack 3429, win 473, options [nop,nop,TS val 3534642782 ecr 3192559134,mptcp dss ack 3554117263], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [.], ack 4001, win 458, options [nop,nop,TS val 3534642783 ecr 3192559134,mptcp dss ack 3554119263], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 2001:3025, ack 4001, win 458, options [nop,nop,TS val 3534642783 ecr 3192559134,mptcp dss ack 3554119263 seq 1179772297 subseq 2001 len 1024 csum 0xd76b], length 1024 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 3025, win 8177, options [nop,nop,TS val 3192559161 ecr 3534642783,mptcp dss ack 1179773321], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 3025:4001, ack 4001, win 458, options [nop,nop,TS val 3534642808 ecr 3192559134,mptcp dss ack 3554119263 seq 1179773321 subseq 3025 len 976 csum 0xedb9], length 976 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 4001, win 8179, options [nop,nop,TS val 3192559186 ecr 3534642808,mptcp dss ack 1179774297], length 0 +IP6 2607:7700:0:13::3429:461f.5201 > 2607:fb90:3635:797b:5986:1647:4961:b852.50003: Flags [.], ack 1, win 884, options [nop,nop,TS val 1772841860 ecr 590900118,mptcp dss ack 3554119263], length 0 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], seq 4001:5429, ack 4001, win 8209, options [nop,nop,TS val 3192559407 ecr 3534642808,mptcp dss ack 1179774297 seq 3554119263 subseq 4001 len 2000 csum 0x50d0], length 1428 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [P.], seq 5429:6001, ack 4001, win 8209, options [nop,nop,TS val 3192559407 ecr 3534642808,mptcp dss ack 1179774297 seq 3554119263 subseq 4001 len 2000 csum 0x50d0], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [.], ack 5429, win 884, options [nop,nop,TS val 3534643062 ecr 3192559407,mptcp dss ack 3554119263], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [.], ack 6001, win 884, options [nop,nop,TS val 3534643062 ecr 3192559407,mptcp dss ack 3554121263], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 4001:5025, ack 6001, win 884, options [nop,nop,TS val 3534643062 ecr 3192559407,mptcp dss ack 3554121263 seq 1179774297 subseq 4001 len 1024 csum 0xc7cb], length 1024 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 5025, win 8177, options [nop,nop,TS val 3192559440 ecr 3534643062,mptcp dss ack 1179775321], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 5025:6001, ack 6001, win 884, options [nop,nop,TS val 3534643087 ecr 3192559407,mptcp dss ack 3554121263 seq 1179775321 subseq 5025 len 976 csum 0xde19], length 976 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 6001, win 8179, options [nop,nop,TS val 3192559465 ecr 3534643087,mptcp dss ack 1179776297], length 0 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], seq 6001:7429, ack 6001, win 8209, options [nop,nop,TS val 3192559676 ecr 3534643087,mptcp dss ack 1179776297 seq 3554121263 subseq 6001 len 2000 csum 0x4130], length 1428 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [P.], seq 7429:8001, ack 6001, win 8209, options [nop,nop,TS val 3192559676 ecr 3534643087,mptcp dss ack 1179776297 seq 3554121263 subseq 6001 len 2000 csum 0x4130], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [.], ack 8001, win 884, options [nop,nop,TS val 3534643331 ecr 3192559676,mptcp dss ack 3554123263], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 6001:7025, ack 8001, win 884, options [nop,nop,TS val 3534643332 ecr 3192559676,mptcp dss ack 3554123263 seq 1179776297 subseq 6001 len 1024 csum 0xb82b], length 1024 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 7025, win 8177, options [nop,nop,TS val 3192559709 ecr 3534643332,mptcp dss ack 1179777321], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 7025:8001, ack 8001, win 884, options [nop,nop,TS val 3534643357 ecr 3192559676,mptcp dss ack 3554123263 seq 1179777321 subseq 7025 len 976 csum 0xce79], length 976 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 8001, win 8179, options [nop,nop,TS val 3192559736 ecr 3534643357,mptcp dss ack 1179778297], length 0 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], seq 8001:9429, ack 8001, win 8209, options [nop,nop,TS val 3192559954 ecr 3534643357,mptcp dss ack 1179778297 seq 3554123263 subseq 8001 len 2000 csum 0x3190], length 1428 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [P.], seq 9429:10001, ack 8001, win 8209, options [nop,nop,TS val 3192559954 ecr 3534643357,mptcp dss ack 1179778297 seq 3554123263 subseq 8001 len 2000 csum 0x3190], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [.], ack 10001, win 884, options [nop,nop,TS val 3534643608 ecr 3192559954,mptcp dss ack 3554125263], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 8001:9025, ack 10001, win 884, options [nop,nop,TS val 3534643608 ecr 3192559954,mptcp dss ack 3554125263 seq 1179778297 subseq 8001 len 1024 csum 0xa88b], length 1024 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 9025, win 8177, options [nop,nop,TS val 3192559987 ecr 3534643608,mptcp dss ack 1179779321], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 9025:10001, ack 10001, win 884, options [nop,nop,TS val 3534643633 ecr 3192559954,mptcp dss ack 3554125263 seq 1179779321 subseq 9025 len 976 csum 0xbed9], length 976 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 10001, win 8179, options [nop,nop,TS val 3192560011 ecr 3534643633,mptcp dss ack 1179780297], length 0 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], seq 10001:11429, ack 10001, win 8209, options [nop,nop,TS val 3192560223 ecr 3534643633,mptcp dss ack 1179780297 seq 3554125263 subseq 10001 len 2000 csum 0x21f0], length 1428 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [P.], seq 11429:12001, ack 10001, win 8209, options [nop,nop,TS val 3192560223 ecr 3534643633,mptcp dss ack 1179780297 seq 3554125263 subseq 10001 len 2000 csum 0x21f0], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [.], ack 12001, win 884, options [nop,nop,TS val 3534643878 ecr 3192560223,mptcp dss ack 3554127263], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 10001:11025, ack 12001, win 884, options [nop,nop,TS val 3534643878 ecr 3192560223,mptcp dss ack 3554127263 seq 1179780297 subseq 10001 len 1024 csum 0x98eb], length 1024 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 11025, win 8177, options [nop,nop,TS val 3192560257 ecr 3534643878,mptcp dss ack 1179781321], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 11025:12001, ack 12001, win 884, options [nop,nop,TS val 3534643903 ecr 3192560223,mptcp dss ack 3554127263 seq 1179781321 subseq 11025 len 976 csum 0xaf39], length 976 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 12001, win 8179, options [nop,nop,TS val 3192560297 ecr 3534643903,mptcp dss ack 1179782297], length 0 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], seq 12001:13429, ack 12001, win 8209, options [nop,nop,TS val 3192560493 ecr 3534643903,mptcp dss ack 1179782297 seq 3554127263 subseq 12001 len 2000 csum 0x1250], length 1428 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [P.], seq 13429:14001, ack 12001, win 8209, options [nop,nop,TS val 3192560493 ecr 3534643903,mptcp dss ack 1179782297 seq 3554127263 subseq 12001 len 2000 csum 0x1250], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [.], ack 14001, win 884, options [nop,nop,TS val 3534644148 ecr 3192560493,mptcp dss ack 3554129263], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 12001:13025, ack 14001, win 884, options [nop,nop,TS val 3534644148 ecr 3192560493,mptcp dss ack 3554129263 seq 1179782297 subseq 12001 len 1024 csum 0x894b], length 1024 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 13025, win 8177, options [nop,nop,TS val 3192560527 ecr 3534644148,mptcp dss ack 1179783321], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 13025:14001, ack 14001, win 884, options [nop,nop,TS val 3534644173 ecr 3192560493,mptcp dss ack 3554129263 seq 1179783321 subseq 13025 len 976 csum 0x9f99], length 976 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 14001, win 8179, options [nop,nop,TS val 3192560552 ecr 3534644173,mptcp dss ack 1179784297], length 0 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], seq 14001:15429, ack 14001, win 8209, options [nop,nop,TS val 3192560762 ecr 3534644173,mptcp dss ack 1179784297 seq 3554129263 subseq 14001 len 2000 csum 0x2b0], length 1428 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [P.], seq 15429:16001, ack 14001, win 8209, options [nop,nop,TS val 3192560762 ecr 3534644173,mptcp dss ack 1179784297 seq 3554129263 subseq 14001 len 2000 csum 0x2b0], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [.], ack 16001, win 884, options [nop,nop,TS val 3534644412 ecr 3192560762,mptcp dss ack 3554131263], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 14001:15025, ack 16001, win 884, options [nop,nop,TS val 3534644412 ecr 3192560762,mptcp dss ack 3554131263 seq 1179784297 subseq 14001 len 1024 csum 0x79ab], length 1024 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 15025, win 8177, options [nop,nop,TS val 3192560791 ecr 3534644412,mptcp dss ack 1179785321], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 15025:16001, ack 16001, win 884, options [nop,nop,TS val 3534644438 ecr 3192560762,mptcp dss ack 3554131263 seq 1179785321 subseq 15025 len 976 csum 0x8ff9], length 976 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 16001, win 8179, options [nop,nop,TS val 3192560816 ecr 3534644438,mptcp dss ack 1179786297], length 0 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], seq 16001:17429, ack 16001, win 8209, options [nop,nop,TS val 3192561031 ecr 3534644438,mptcp dss ack 1179786297 seq 3554131263 subseq 16001 len 2000 csum 0xf30f], length 1428 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [P.], seq 17429:18001, ack 16001, win 8209, options [nop,nop,TS val 3192561031 ecr 3534644438,mptcp dss ack 1179786297 seq 3554131263 subseq 16001 len 2000 csum 0xf30f], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [.], ack 18001, win 884, options [nop,nop,TS val 3534644686 ecr 3192561031,mptcp dss ack 3554133263], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 16001:17025, ack 18001, win 884, options [nop,nop,TS val 3534644686 ecr 3192561031,mptcp dss ack 3554133263 seq 1179786297 subseq 16001 len 1024 csum 0x6a0b], length 1024 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 17025, win 8177, options [nop,nop,TS val 3192561065 ecr 3534644686,mptcp dss ack 1179787321], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 17025:18001, ack 18001, win 884, options [nop,nop,TS val 3534644711 ecr 3192561031,mptcp dss ack 3554133263 seq 1179787321 subseq 17025 len 976 csum 0x8059], length 976 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 18001, win 8179, options [nop,nop,TS val 3192561090 ecr 3534644711,mptcp dss ack 1179788297], length 0 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], seq 18001:19429, ack 18001, win 8209, options [nop,nop,TS val 3192561300 ecr 3534644711,mptcp dss ack 1179788297 seq 3554133263 subseq 18001 len 2000 csum 0xe36f], length 1428 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [P.], seq 19429:20001, ack 18001, win 8209, options [nop,nop,TS val 3192561300 ecr 3534644711,mptcp dss ack 1179788297 seq 3554133263 subseq 18001 len 2000 csum 0xe36f], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [.], ack 20001, win 884, options [nop,nop,TS val 3534644949 ecr 3192561300,mptcp dss ack 3554135263], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 18001:19025, ack 20001, win 884, options [nop,nop,TS val 3534644949 ecr 3192561300,mptcp dss ack 3554135263 seq 1179788297 subseq 18001 len 1024 csum 0x5a6b], length 1024 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 19025, win 8177, options [nop,nop,TS val 3192561328 ecr 3534644949,mptcp dss ack 1179789321], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [P.], seq 19025:20001, ack 20001, win 884, options [nop,nop,TS val 3534644974 ecr 3192561300,mptcp dss ack 3554135263 seq 1179789321 subseq 19025 len 976 csum 0x70b9], length 976 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 20001, win 8179, options [nop,nop,TS val 3192561352 ecr 3534644974,mptcp dss ack 1179790297], length 0 +IP6 2607:fb90:3635:797b:5986:1647:4961:b852.50003 > 2607:7700:0:13::3429:461f.5201: Flags [F.], seq 1, ack 1, win 8209, options [nop,nop,TS val 590902356 ecr 1772841860,mptcp dss fin ack 1179790297 seq 3554135263 subseq 0 len 1 csum 0x10a7], length 0 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [F.], seq 20001, ack 20001, win 8209, options [nop,nop,TS val 3192561360 ecr 3534644974,mptcp dss fin ack 1179790297 seq 3554135263 subseq 0 len 1 csum 0x10a7], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [.], ack 20002, win 884, options [nop,nop,TS val 3534645008 ecr 3192561360,mptcp dss ack 3554135264], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50002: Flags [F.], seq 20001, ack 20002, win 884, options [nop,nop,TS val 3534645008 ecr 3192561360,mptcp dss fin ack 3554135264 seq 1179790297 subseq 0 len 1 csum 0x1f6e], length 0 +IP 10.42.53.132.50002 > 52.41.70.31.5201: Flags [.], ack 20002, win 8209, options [nop,nop,TS val 3192561386 ecr 3534645008,mptcp dss ack 1179790298], length 0 +IP6 2607:7700:0:13::3429:461f.5201 > 2607:fb90:3635:797b:5986:1647:4961:b852.50003: Flags [F.], seq 1, ack 2, win 884, options [nop,nop,TS val 1772844115 ecr 590902356,mptcp dss ack 3554135264], length 0 +IP6 2607:fb90:3635:797b:5986:1647:4961:b852.50003 > 2607:7700:0:13::3429:461f.5201: Flags [.], ack 2, win 8209, options [nop,nop,TS val 590902468 ecr 1772844115,mptcp dss ack 1179790298], length 0 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [SEW], seq 2889004778, win 65535, options [mss 1460,nop,wscale 5,mptcp capable v1,nop,nop,TS val 1952099318 ecr 0,sackOK,eol], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [S.E], seq 851672643, ack 2889004779, win 62503, options [mss 1460,sackOK,TS val 3534736900 ecr 1952099318,nop,wscale 7,mptcp capable v1 csum {0x288a718919d7fdeb}], length 0 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [.], ack 1, win 4096, options [nop,nop,TS val 1952099358 ecr 3534736900,mptcp capable v1 csum {0x2d2800beb7b89352,0x288a718919d7fdeb}], length 0 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [.], seq 1:1429, ack 1, win 4096, options [nop,nop,TS val 1952099616 ecr 3534736900,mptcp dss ack 621856857 seq 4042235108 subseq 1 len 2000 csum 0x2f61], length 1428 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [P.], seq 1429:2001, ack 1, win 4096, options [nop,nop,TS val 1952099616 ecr 3534736900,mptcp dss ack 621856857 seq 4042235108 subseq 1 len 2000 csum 0x2f61], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 1429, win 489, options [nop,nop,TS val 3534737201 ecr 1952099616,mptcp dss ack 836911334], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 2001, win 489, options [nop,nop,TS val 3534737201 ecr 1952099616,mptcp dss ack 836911334], length 0 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [.], seq 2001:3429, ack 1, win 4096, options [nop,nop,TS val 1952099875 ecr 3534737201,mptcp dss ack 621856857 seq 4042237108 subseq 2001 len 2000 csum 0x1fc1], length 1428 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [P.], seq 3429:4001, ack 1, win 4096, options [nop,nop,TS val 1952099875 ecr 3534737201,mptcp dss ack 621856857 seq 4042237108 subseq 2001 len 2000 csum 0x1fc1], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 4001, win 489, options [nop,nop,TS val 3534737460 ecr 1952099875,mptcp dss ack 836911334], length 0 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [.], seq 4001:5429, ack 1, win 4096, options [nop,nop,TS val 1952100152 ecr 3534737460,mptcp dss ack 621856857 seq 4042239108 subseq 4001 len 2000 csum 0x1021], length 1428 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [P.], seq 5429:6001, ack 1, win 4096, options [nop,nop,TS val 1952100152 ecr 3534737460,mptcp dss ack 621856857 seq 4042239108 subseq 4001 len 2000 csum 0x1021], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 6001, win 489, options [nop,nop,TS val 3534737734 ecr 1952100152,mptcp dss ack 836911334], length 0 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [.], seq 6001:7429, ack 1, win 4096, options [nop,nop,TS val 1952100409 ecr 3534737734,mptcp dss ack 621856857 seq 4042241108 subseq 6001 len 2000 csum 0x81], length 1428 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [P.], seq 7429:8001, ack 1, win 4096, options [nop,nop,TS val 1952100409 ecr 3534737734,mptcp dss ack 621856857 seq 4042241108 subseq 6001 len 2000 csum 0x81], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 7429, win 489, options [nop,nop,TS val 3534737991 ecr 1952100409,mptcp dss ack 836911334], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 8001, win 489, options [nop,nop,TS val 3534737991 ecr 1952100409,mptcp dss ack 836911334], length 0 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [.], seq 8001:9429, ack 1, win 4096, options [nop,nop,TS val 1952100673 ecr 3534737991,mptcp dss ack 621856857 seq 4042243108 subseq 8001 len 2000 csum 0xf0e0], length 1428 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [P.], seq 9429:10001, ack 1, win 4096, options [nop,nop,TS val 1952100673 ecr 3534737991,mptcp dss ack 621856857 seq 4042243108 subseq 8001 len 2000 csum 0xf0e0], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 10001, win 489, options [nop,nop,TS val 3534738254 ecr 1952100673,mptcp dss ack 836911334], length 0 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [.], seq 10001:11429, ack 1, win 4096, options [nop,nop,TS val 1952100947 ecr 3534738254,mptcp dss ack 621856857 seq 4042245108 subseq 10001 len 2000 csum 0xe140], length 1428 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [P.], seq 11429:12001, ack 1, win 4096, options [nop,nop,TS val 1952100947 ecr 3534738254,mptcp dss ack 621856857 seq 4042245108 subseq 10001 len 2000 csum 0xe140], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 11429, win 489, options [nop,nop,TS val 3534738529 ecr 1952100947,mptcp dss ack 836911334], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 12001, win 489, options [nop,nop,TS val 3534738529 ecr 1952100947,mptcp dss ack 836911334], length 0 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [.], seq 12001:13429, ack 1, win 4096, options [nop,nop,TS val 1952101200 ecr 3534738529,mptcp dss ack 621856857 seq 4042247108 subseq 12001 len 2000 csum 0xd1a0], length 1428 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [P.], seq 13429:14001, ack 1, win 4096, options [nop,nop,TS val 1952101200 ecr 3534738529,mptcp dss ack 621856857 seq 4042247108 subseq 12001 len 2000 csum 0xd1a0], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 14001, win 489, options [nop,nop,TS val 3534738782 ecr 1952101200,mptcp dss ack 836911334], length 0 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [.], seq 14001:15429, ack 1, win 4096, options [nop,nop,TS val 1952101455 ecr 3534738782,mptcp dss ack 621856857 seq 4042249108 subseq 14001 len 2000 csum 0xc200], length 1428 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [P.], seq 15429:16001, ack 1, win 4096, options [nop,nop,TS val 1952101455 ecr 3534738782,mptcp dss ack 621856857 seq 4042249108 subseq 14001 len 2000 csum 0xc200], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 16001, win 489, options [nop,nop,TS val 3534739034 ecr 1952101455,mptcp dss ack 836911334], length 0 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [.], seq 16001:17429, ack 1, win 4096, options [nop,nop,TS val 1952101730 ecr 3534739034,mptcp dss ack 621856857 seq 4042251108 subseq 16001 len 2000 csum 0xb260], length 1428 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [P.], seq 17429:18001, ack 1, win 4096, options [nop,nop,TS val 1952101730 ecr 3534739034,mptcp dss ack 621856857 seq 4042251108 subseq 16001 len 2000 csum 0xb260], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 17429, win 489, options [nop,nop,TS val 3534739312 ecr 1952101730,mptcp dss ack 836911334], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 18001, win 489, options [nop,nop,TS val 3534739312 ecr 1952101730,mptcp dss ack 836911334], length 0 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [.], seq 18001:19429, ack 1, win 4096, options [nop,nop,TS val 1952102005 ecr 3534739312,mptcp dss ack 621856857 seq 4042253108 subseq 18001 len 2000 csum 0xa2c0], length 1428 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [P.], seq 19429:20001, ack 1, win 4096, options [nop,nop,TS val 1952102005 ecr 3534739312,mptcp dss ack 621856857 seq 4042253108 subseq 18001 len 2000 csum 0xa2c0], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 20001, win 489, options [nop,nop,TS val 3534739588 ecr 1952102005,mptcp dss ack 836911334], length 0 +IP 10.42.53.132.50004 > 52.41.70.31.5201: Flags [F.], seq 20001, ack 1, win 4096, options [nop,nop,TS val 1952117094 ecr 3534739588,mptcp dss fin ack 621856857 seq 4042255108 subseq 0 len 1 csum 0xcff7], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50004: Flags [.], ack 20002, win 489, options [nop,nop,TS val 3534754718 ecr 1952117094,mptcp dss ack 836911334], length 0 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [SEW], seq 3773645235, win 65535, options [mss 1460,nop,wscale 5,mptcp capable v1,nop,nop,TS val 2686559159 ecr 0,sackOK,eol], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50005: Flags [S.E], seq 1639751572, ack 3773645236, win 62503, options [mss 1460,sackOK,TS val 3534758662 ecr 2686559159,nop,wscale 7,mptcp capable v1 csum {0x95371f3c9bffaccb}], length 0 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [.], ack 1, win 4096, options [nop,nop,TS val 2686559193 ecr 3534758662,mptcp capable v1 csum {0x71364d262a7d35fd,0x95371f3c9bffaccb}], length 0 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [.], seq 1:1429, ack 1, win 4096, options [nop,nop,TS val 2686559471 ecr 3534758662,mptcp dss ack 2141456551 seq 1460776725 subseq 1 len 2000 csum 0x3eab], length 1428 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [P.], seq 1429:2001, ack 1, win 4096, options [nop,nop,TS val 2686559471 ecr 3534758662,mptcp dss ack 2141456551 seq 1460776725 subseq 1 len 2000 csum 0x3eab], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50005: Flags [.], ack 2001, win 489, options [nop,nop,TS val 3534758976 ecr 2686559471,mptcp dss ack 2841823246], length 0 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [.], seq 2001:3429, ack 1, win 4096, options [nop,nop,TS val 2686559745 ecr 3534758976,mptcp dss ack 2141456551 seq 1460778725 subseq 2001 len 2000 csum 0x2f0b], length 1428 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [P.], seq 3429:4001, ack 1, win 4096, options [nop,nop,TS val 2686559745 ecr 3534758976,mptcp dss ack 2141456551 seq 1460778725 subseq 2001 len 2000 csum 0x2f0b], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50005: Flags [.], ack 3429, win 489, options [nop,nop,TS val 3534759250 ecr 2686559745,mptcp dss ack 2841823246], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50005: Flags [.], ack 4001, win 489, options [nop,nop,TS val 3534759250 ecr 2686559745,mptcp dss ack 2841823246], length 0 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [.], seq 4001:5429, ack 1, win 4096, options [nop,nop,TS val 2686560013 ecr 3534759250,mptcp dss ack 2141456551 seq 1460780725 subseq 4001 len 2000 csum 0x1f6b], length 1428 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [P.], seq 5429:6001, ack 1, win 4096, options [nop,nop,TS val 2686560013 ecr 3534759250,mptcp dss ack 2141456551 seq 1460780725 subseq 4001 len 2000 csum 0x1f6b], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50005: Flags [.], ack 6001, win 489, options [nop,nop,TS val 3534759513 ecr 2686560013,mptcp dss ack 2841823246], length 0 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [.], seq 6001:7429, ack 1, win 4096, options [nop,nop,TS val 2686560286 ecr 3534759513,mptcp dss ack 2141456551 seq 1460782725 subseq 6001 len 2000 csum 0xfcb], length 1428 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [P.], seq 7429:8001, ack 1, win 4096, options [nop,nop,TS val 2686560286 ecr 3534759513,mptcp dss ack 2141456551 seq 1460782725 subseq 6001 len 2000 csum 0xfcb], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50005: Flags [.], ack 8001, win 489, options [nop,nop,TS val 3534759789 ecr 2686560286,mptcp dss ack 2841823246], length 0 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [.], seq 8001:9429, ack 1, win 4096, options [nop,nop,TS val 2686560559 ecr 3534759789,mptcp dss ack 2141456551 seq 1460784725 subseq 8001 len 2000 csum 0x2b], length 1428 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [P.], seq 9429:10001, ack 1, win 4096, options [nop,nop,TS val 2686560559 ecr 3534759789,mptcp dss ack 2141456551 seq 1460784725 subseq 8001 len 2000 csum 0x2b], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50005: Flags [.], ack 10001, win 489, options [nop,nop,TS val 3534760063 ecr 2686560559,mptcp dss ack 2841823246], length 0 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [.], seq 10001:11429, ack 1, win 4096, options [nop,nop,TS val 2686560836 ecr 3534760063,mptcp dss ack 2141456551 seq 1460786725 subseq 10001 len 2000 csum 0xf08a], length 1428 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [P.], seq 11429:12001, ack 1, win 4096, options [nop,nop,TS val 2686560836 ecr 3534760063,mptcp dss ack 2141456551 seq 1460786725 subseq 10001 len 2000 csum 0xf08a], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50005: Flags [.], ack 12001, win 489, options [nop,nop,TS val 3534760337 ecr 2686560836,mptcp dss ack 2841823246], length 0 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [.], seq 12001:13429, ack 1, win 4096, options [nop,nop,TS val 2686561109 ecr 3534760337,mptcp dss ack 2141456551 seq 1460788725 subseq 12001 len 2000 csum 0xe0ea], length 1428 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [P.], seq 13429:14001, ack 1, win 4096, options [nop,nop,TS val 2686561109 ecr 3534760337,mptcp dss ack 2141456551 seq 1460788725 subseq 12001 len 2000 csum 0xe0ea], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50005: Flags [.], ack 14001, win 489, options [nop,nop,TS val 3534760613 ecr 2686561109,mptcp dss ack 2841823246], length 0 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [.], seq 14001:15429, ack 1, win 4096, options [nop,nop,TS val 2686561381 ecr 3534760613,mptcp dss ack 2141456551 seq 1460790725 subseq 14001 len 2000 csum 0xd14a], length 1428 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [P.], seq 15429:16001, ack 1, win 4096, options [nop,nop,TS val 2686561381 ecr 3534760613,mptcp dss ack 2141456551 seq 1460790725 subseq 14001 len 2000 csum 0xd14a], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50005: Flags [.], ack 16001, win 489, options [nop,nop,TS val 3534760885 ecr 2686561381,mptcp dss ack 2841823246], length 0 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [.], seq 16001:17429, ack 1, win 4096, options [nop,nop,TS val 2686561654 ecr 3534760885,mptcp dss ack 2141456551 seq 1460792725 subseq 16001 len 2000 csum 0xc1aa], length 1428 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [P.], seq 17429:18001, ack 1, win 4096, options [nop,nop,TS val 2686561654 ecr 3534760885,mptcp dss ack 2141456551 seq 1460792725 subseq 16001 len 2000 csum 0xc1aa], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50005: Flags [.], ack 18001, win 489, options [nop,nop,TS val 3534761157 ecr 2686561654,mptcp dss ack 2841823246], length 0 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [.], seq 18001:19429, ack 1, win 4096, options [nop,nop,TS val 2686561927 ecr 3534761157,mptcp dss ack 2141456551 seq 1460794725 subseq 18001 len 2000 csum 0xb20a], length 1428 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [P.], seq 19429:20001, ack 1, win 4096, options [nop,nop,TS val 2686561927 ecr 3534761157,mptcp dss ack 2141456551 seq 1460794725 subseq 18001 len 2000 csum 0xb20a], length 572 +IP 52.41.70.31.5201 > 10.42.53.132.50005: Flags [.], ack 20001, win 489, options [nop,nop,TS val 3534761431 ecr 2686561927,mptcp dss ack 2841823246], length 0 +IP 10.42.53.132.50005 > 52.41.70.31.5201: Flags [F.], seq 20001, ack 1, win 4096, options [nop,nop,TS val 2686592255 ecr 3534761431,mptcp dss fin ack 2141456551 seq 1460796725 subseq 0 len 1 csum 0xdf41], length 0 +IP 52.41.70.31.5201 > 10.42.53.132.50005: Flags [.], ack 20002, win 489, options [nop,nop,TS val 3534791798 ecr 2686592255,mptcp dss ack 2841823246], length 0 diff --git a/tcpdump/tests/radar-74957353.pcapng b/tcpdump/tests/radar-74957353.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..e6d0cad04c15ef102b16ba9576c20e15fd643785 GIT binary patch literal 131060 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 ff02::1: ICMP6, router advertisement, length 48 +(pdp_ip0, svc CTL, out) IP6 fe80::4b:d811:ea01 > ff02::2: ICMP6, router solicitation, length 8 +(pdp_ip0, svc BE, in) IP6 fe80::4b:d811:ea40 > fe80::4b:d811:ea01: ICMP6, router advertisement, length 48 +(pdp_ip0, svc BE, out) IP6 2600:1010:b019:ed08:84c5:b4eb:3245:49a5.56304 > 2001:4888:68:ff00:608:d::.53: 31220+ Type65? play.itunes.apple.com. (39) +(pdp_ip0, svc BE, out) IP6 2600:1010:b019:ed08:84c5:b4eb:3245:49a5.62040 > 2001:4888:68:ff00:608:d::.53: 4770+ AAAA? play.itunes.apple.com. (39) +(pdp_ip0, svc BE, out) IP6 2600:1010:b019:ed08:84c5:b4eb:3245:49a5.64687 > 2001:4888:68:ff00:608:d::.53: 25871+ A? play.itunes.apple.com. (39) +(pdp_ip0, svc BE, in) IP6 2001:4888:68:ff00:608:d::.53 > 2600:1010:b019:ed08:84c5:b4eb:3245:49a5.64687: 25871 5/0/0 CNAME play-cdn.itunes-apple.com.akadns.net., CNAME play.itunes.apple.com.edgesuite.net., CNAME a1806.dscb.akamai.net., A 104.114.76.147, A 104.114.76.139 (199) +(pdp_ip0, svc BE, in) IP6 2001:4888:68:ff00:608:d::.53 > 2600:1010:b019:ed08:84c5:b4eb:3245:49a5.62040: 4770 5/0/0 CNAME play-cdn.itunes-apple.com.akadns.net., CNAME play.itunes.apple.com.edgesuite.net., CNAME a1806.dscb.akamai.net., AAAA 2600:1406:4400::ace8:1090, AAAA 2600:1406:4400::ace8:1093 (223) +(pdp_ip0, svc BE, in) IP6 2001:4888:68:ff00:608:d::.53 > 2600:1010:b019:ed08:84c5:b4eb:3245:49a5.56304: 31220 3/1/0 CNAME play-cdn.itunes-apple.com.akadns.net., CNAME play.itunes.apple.com.edgesuite.net., CNAME a1806.dscb.akamai.net. (228) +(pdp_ip0, svc BE, out) IP6 2600:1010:b019:ed08:84c5:b4eb:3245:49a5.59222 > 2001:4888:68:ff00:608:d::.53: 21531+ Type65? a1806.dscb.akamai.net. (39) diff --git a/tcpdump/tests/radar-79792659.pcapng b/tcpdump/tests/radar-79792659.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..8c60de3436aa41b93166c148d614273d20550948 GIT binary patch literal 2156 zcmd5-NoW&c6n<%z#x8cDhq_RIM2cdY&ZOxUd#IX#OKXdSwzp<7^J|7ClOZ#yR-q`` zBIrTzAYMGUTtv`=C-D#j5B5@OF9kgnp+zgG6$BOId()*YyRl;Z3}3S%!5Tl|fUeqRgg351we@QR06GLbO-=e5*;!iRV) zp~tyq*0%~`8*Ucq1mB3*5D4}LJG*1=-O0+Q#7ij|?)H9kn|;Iv7zm59w1}`wy_;Mhq~u|H34nVQ7F!OMf>C%rO-I`Spabu$#OrKNezTBVOq3kdY>@ zMCKO0<8SgXVVS7-nOl?Gnn4qynSj^4?D8eN$cekwtq~$gm*5gYT@AHvDrLQ_XeEo~ ztY0ptOB$3E&9H0SgmmNbj=gIae;ZfMawDahJRM5&#nmtlRZdB4#ipVda)b_yODfLa zviJa~1V=R4c`GNrj%xY zCOQ1g;?Pb2*OrCV6S5o@-r1_&aK~2k_GKNt-NCFW<=Y^-G=a33zFQPc7-n2DOrFdN zvnD+Cs1v|G_ty*EYw<|@<@U4c2XlXWt8@FNddO@q^^g}mp8d DZj%TJ literal 0 HcmV?d00001 diff --git a/tcpdump/tests/radar-81131821.out b/tcpdump/tests/radar-81131821.out new file mode 100644 index 0000000..d7c42fe --- /dev/null +++ b/tcpdump/tests/radar-81131821.out @@ -0,0 +1,10 @@ +IP 172.16.254.234.49458 > 123.57.167.43.80: Flags [SEW], seq 3094058786, win 65535, options [mss 1396,nop,wscale 5,mptcp capable v1,nop,nop,TS val 1361068327 ecr 0,sackOK,eol], length 0 +IP 123.57.167.43.80 > 172.16.254.234.49458: Flags [S.E], seq 358856057, ack 3094058787, win 43440, options [mss 1363,sackOK,TS val 513908821 ecr 1361068327,nop,wscale 9,mptcp capable v1 {0xd76af2eab858ae8c}], length 0 +IP 172.16.254.234.49458 > 123.57.167.43.80: Flags [.], ack 1, win 4096, options [nop,nop,TS val 1361068623 ecr 513908821,mptcp capable v1 {0xd0c3d95bebf62dc,0xd76af2eab858ae8c}], length 0 +IP 172.16.254.234.49458 > 123.57.167.43.80: Flags [P.], seq 1:203, ack 1, win 4096, options [nop,nop,TS val 1361068633 ecr 513908821,mptcp capable v1 {0xd0c3d95bebf62dc,0xd76af2eab858ae8c},eol], length 202: HTTP: GET /bigfile HTTP/1.1 +IP 123.57.167.43.80 > 172.16.254.234.49458: Flags [.], ack 203, win 85, options [nop,nop,TS val 513909169 ecr 1361068633,mptcp add-addr v1 id 1 101.200.87.60 hmac 0x5883b7072288f122,mptcp dss ack 17352886936352348106], length 0 +IP 123.57.167.43.80 > 172.16.254.234.49458: Flags [.], seq 1:1324, ack 203, win 85, options [nop,nop,TS val 513909294 ecr 1361068633,mptcp dss ack 17352886936352348106 seq 15825746279829701860 subseq 1 len 2896,nop,nop], length 1323: HTTP: HTTP/1.1 200 OK +IP 123.57.167.43.80 > 172.16.254.234.49458: Flags [.], seq 1324:2647, ack 203, win 85, options [nop,nop,TS val 513909294 ecr 1361068633,mptcp dss ack 17352886936352348106], length 1323: HTTP +IP 123.57.167.43.80 > 172.16.254.234.49458: Flags [P.], seq 2647:2897, ack 203, win 85, options [nop,nop,TS val 513909294 ecr 1361068633,mptcp dss ack 17352886936352348106], length 250: HTTP +IP 123.57.167.43.80 > 172.16.254.234.49458: Flags [.], seq 2897:4220, ack 203, win 85, options [nop,nop,TS val 513909297 ecr 1361068633,mptcp dss ack 17352886936352348106 seq 15825746279829704756 subseq 2897 len 2896,nop,nop], length 1323: HTTP +IP 123.57.167.43.80 > 172.16.254.234.49458: Flags [.], seq 4220:5543, ack 203, win 85, options [nop,nop,TS val 513909297 ecr 1361068633,mptcp dss ack 17352886936352348106], length 1323: HTTP diff --git a/tcpdump/tests/radar-81131821.pcapng b/tcpdump/tests/radar-81131821.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..06108136d28bf779dbaf504c6dfc97c339b27596 GIT binary patch literal 6788 zcmeH~-D?v|7>8%m)Yff6Blv{}!;lJsHk;jTlD6v+T5YvQTTR$n z6;aR&1>u|<_3~Ib2N6V6sNeXBC`F};D54jF;)UWTcx!!ULlT=d{sl8IWGB0sC-c0+ zZ<(ie&JR0~6Xlx|aWELE9^dj;T?y)dYuXQ-SO5Oh;C*y^Ugd{!)QnIQLJg>4+V<#a z&yV-J>rXDeC8NltzGFT*)6LuC<43O|H2ikP6 zi{qYe`}Y1)*O|j~9gb^x%A|GJ6j(>3U>#LJ8XEI>&?bUV=D#mnODW!&9Orf|J#zg< z_p4tiPu`TF1)z@h0*Zs1ow1eJHx=deTo2lKEJxX3Q)W-5pizWYHb-%wTi1H^1i>xQ zXe1yBlACWynwEkkxkd=p3R1XM2-djy#(12h;Oj+!McIMBRW-DJRU--}hCkL>O^hWw zmWo2Xn_r$Z3=+5Wq@mzGLQ;M;p%0MU51Wm6vPU;G1#3fksv7r@-h^tw{g_G8{zi=$ zKr+mDe>xG6YQ!L3zG4lrb|%w(nPHQf-l-b_Sr$Y=bn|YWR_3$jLYtuWv`?yk#4M-v zcQq8$e+cUT@rwt=p1;dD^9~Q6Ysbqrcs(LV?yvu|YyZVE-@&gwuM3xadHn3ke-GA= zUI5y?%?KST&GbTA>27m6rIpPrM*FuiOFJRhw0XEPJNwJyT|Fm84!nhBa1{}b%N7R9 zqKMb7cJrMiJwVbRNYjm7v}AQuLK6s7a9h%-#&Q_1>QBJ)vV>(x2?iCoSlJe}>tcai ze{?Vf538wELXWGoOo3$FB9`B@(nQ^!f3B4nnza=+gBYv})rLjjw5q1%Z-esn>ZC`( zE7CduYw|!btVkgx6wCpq+z8E46{_zGi@j=y)T{n*P^8V5+aevXw}`3W?m>%~w8Wr; zHD-VrU #include +#include "netdissect-ctype.h" + #include "netdissect.h" #include "ascii_strcasecmp.h" #include "timeval-operations.h" @@ -576,6 +578,14 @@ signed_relts_print(netdissect_options *ndo, unsigned_relts_print(ndo, secs); } +/* Print the protocol name in caps (uppercases) */ +void nd_print_protocol_caps(netdissect_options *ndo) +{ + const char *p; + for (p = ndo->ndo_protocol; *p != '\0'; p++) + ND_PRINT((ndo, "%c", ND_ASCII_TOUPPER(*p))); +} + /* * this is a generic routine for printing unknown data; * we pass on the linefeed plus indentation string to