git: ee67461e5682 - main - tpcdump: Update to 4.99.4
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 08 Jun 2023 17:32:49 UTC
The branch main has been updated by jrm:
URL: https://cgit.FreeBSD.org/src/commit/?id=ee67461e56828dd1f8de165947ba83f6d9148a87
commit ee67461e56828dd1f8de165947ba83f6d9148a87
Merge: f40cd16bfda4 51a183021fce
Author: Joseph Mingrone <jrm@FreeBSD.org>
AuthorDate: 2023-06-08 17:30:54 +0000
Commit: Joseph Mingrone <jrm@FreeBSD.org>
CommitDate: 2023-06-08 17:30:54 +0000
tpcdump: Update to 4.99.4
Local changes:
- Update some local modifications to fix build
- Synch config.h with upstream as much as possible
Changelog: https://git.tcpdump.org/tcpdump/blob/55bc126b0216cfe409b8d6bd378f65679d136ddf:/CHANGES
Reviewed by: emaste
Obtained from: https://www.tcpdump.org/release/tcpdump-4.99.4.tar.gz
Sponsored by: The FreeBSD Foundation
contrib/tcpdump/CHANGES | 289 +-
contrib/tcpdump/CMakeLists.txt | 1371 ++++++++
contrib/tcpdump/CONTRIBUTING | 151 -
contrib/tcpdump/CONTRIBUTING.md | 191 ++
contrib/tcpdump/CREDITS | 149 +-
contrib/tcpdump/{INSTALL.txt => INSTALL.md} | 61 +-
contrib/tcpdump/LICENSE | 6 +-
contrib/tcpdump/Makefile.in | 230 +-
contrib/tcpdump/PLATFORMS | 16 -
contrib/tcpdump/README | 1 -
contrib/tcpdump/README.md | 100 +-
contrib/tcpdump/VERSION | 2 +-
contrib/tcpdump/addrtoname.c | 493 +--
contrib/tcpdump/addrtoname.h | 86 +-
contrib/tcpdump/addrtostr.c | 12 +-
contrib/tcpdump/af.c | 4 +-
contrib/tcpdump/af.h | 2 +-
contrib/tcpdump/ah.h | 46 +-
contrib/tcpdump/appletalk.h | 60 +-
contrib/tcpdump/ascii_strcasecmp.c | 6 +-
contrib/tcpdump/atime.awk | 2 +-
contrib/tcpdump/bpf_dump.c | 5 +-
contrib/tcpdump/chdlc.h | 2 +-
contrib/tcpdump/checksum.c | 10 +-
contrib/tcpdump/cmake/Modules/FindCRYPTO.cmake | 24 +
contrib/tcpdump/cmake/Modules/FindPCAP.cmake | 462 +++
contrib/tcpdump/cmake/Modules/FindSMI.cmake | 24 +
contrib/tcpdump/cmake_uninstall.cmake.in | 21 +
contrib/tcpdump/cmakeconfig.h.in | 290 ++
contrib/tcpdump/compiler-tests.h | 196 ++
contrib/tcpdump/config.guess | 1516 +++++----
contrib/tcpdump/config.h.in | 170 +-
contrib/tcpdump/config.sub | 1705 +++++-----
contrib/tcpdump/configure | 3794 +++++++++++----------
contrib/tcpdump/configure.ac | 508 +--
contrib/tcpdump/cpack.c | 103 +-
contrib/tcpdump/cpack.h | 33 +-
contrib/tcpdump/diag-control.h | 186 +
contrib/tcpdump/doc/README.NetBSD.md | 22 +
contrib/tcpdump/doc/README.Win32.md | 200 ++
contrib/tcpdump/doc/README.aix.md | 17 +
contrib/tcpdump/doc/README.solaris.md | 41 +
contrib/tcpdump/ethertype.h | 32 +-
contrib/tcpdump/extract.h | 754 ++++-
contrib/tcpdump/{ether.h => fptype.c} | 35 +-
contrib/tcpdump/fptype.h | 34 +
contrib/tcpdump/ftmacros.h | 127 +
contrib/tcpdump/funcattrs.h | 110 +-
contrib/tcpdump/getservent.h | 67 +
contrib/tcpdump/gmpls.c | 4 +-
contrib/tcpdump/gmt2local.c | 66 -
contrib/tcpdump/gmt2local.h | 25 -
contrib/tcpdump/in_cksum.c | 12 +-
contrib/tcpdump/interface.h | 18 +-
contrib/tcpdump/ip.h | 6 +-
contrib/tcpdump/ip6.h | 91 +-
contrib/tcpdump/ipproto.c | 10 +-
contrib/tcpdump/ipproto.h | 15 +-
contrib/tcpdump/l2vpn.c | 8 +-
contrib/tcpdump/machdep.c | 24 +-
contrib/tcpdump/missing/datalinks.c | 2 +-
contrib/tcpdump/missing/dlnames.c | 5 +-
contrib/tcpdump/missing/getopt_long.c | 30 +-
contrib/tcpdump/{ => missing}/getopt_long.h | 6 +-
contrib/tcpdump/missing/getservent.c | 143 +
contrib/tcpdump/missing/pcap_dump_ftell.c | 46 +
contrib/tcpdump/missing/snprintf.c | 119 +-
contrib/tcpdump/missing/strlcat.c | 8 +-
contrib/tcpdump/missing/strlcpy.c | 8 +-
contrib/tcpdump/missing/strsep.c | 6 +-
contrib/tcpdump/mkdep | 50 +-
contrib/tcpdump/mpls.h | 6 +-
contrib/tcpdump/nameser.h | 187 +-
contrib/tcpdump/netdissect-alloc.c | 64 +
contrib/tcpdump/netdissect-alloc.h | 32 +
contrib/tcpdump/netdissect-ctype.h | 56 +
contrib/tcpdump/netdissect-stdinc.h | 375 +-
contrib/tcpdump/netdissect.c | 159 +-
contrib/tcpdump/netdissect.h | 597 ++--
contrib/tcpdump/nfs.h | 169 +-
contrib/tcpdump/nfsfh.h | 2 +-
contrib/tcpdump/nlpid.c | 4 +-
contrib/tcpdump/ntp.c | 74 +
contrib/tcpdump/{vfprintf.c => ntp.h} | 58 +-
contrib/tcpdump/openflow.h | 51 +-
contrib/tcpdump/ospf.h | 154 +-
contrib/tcpdump/oui.c | 33 +-
contrib/tcpdump/oui.h | 32 +-
contrib/tcpdump/parsenfsfh.c | 162 +-
contrib/tcpdump/pcap_dump_ftell.c | 31 -
contrib/tcpdump/pflog.h | 152 +
contrib/tcpdump/ppp.h | 8 +-
contrib/tcpdump/print-802_11.c | 1769 +++++-----
contrib/tcpdump/print-802_15_4.c | 2603 +++++++++++++-
contrib/tcpdump/print-ah.c | 57 +-
contrib/tcpdump/print-ahcp.c | 283 +-
contrib/tcpdump/print-aodv.c | 388 ++-
contrib/tcpdump/print-aoe.c | 257 +-
contrib/tcpdump/print-ap1394.c | 46 +-
contrib/tcpdump/print-arcnet.c | 162 +-
contrib/tcpdump/print-arista.c | 165 +
contrib/tcpdump/print-arp.c | 261 +-
contrib/tcpdump/print-ascii.c | 126 +-
contrib/tcpdump/print-atalk.c | 462 +--
contrib/tcpdump/print-atm.c | 193 +-
contrib/tcpdump/print-babel.c | 504 ++-
contrib/tcpdump/print-bcm-li.c | 130 +
contrib/tcpdump/print-beep.c | 23 +-
contrib/tcpdump/print-bfd.c | 215 +-
contrib/tcpdump/print-bgp.c | 4326 +++++++++++++-----------
contrib/tcpdump/print-bootp.c | 569 ++--
contrib/tcpdump/print-brcmtag.c | 151 +
contrib/tcpdump/print-bt.c | 44 +-
contrib/tcpdump/print-calm-fast.c | 52 +-
contrib/tcpdump/print-carp.c | 37 +-
contrib/tcpdump/print-cdp.c | 596 ++--
contrib/tcpdump/print-cfm.c | 310 +-
contrib/tcpdump/print-chdlc.c | 94 +-
contrib/tcpdump/print-cip.c | 47 +-
contrib/tcpdump/print-cnfp.c | 456 +--
contrib/tcpdump/print-dccp.c | 365 +-
contrib/tcpdump/print-decnet.c | 680 ++--
contrib/tcpdump/print-dhcp6.c | 373 +-
contrib/tcpdump/print-domain.c | 941 ++++--
contrib/tcpdump/print-dsa.c | 219 ++
contrib/tcpdump/print-dtp.c | 86 +-
contrib/tcpdump/print-dvmrp.c | 341 +-
contrib/tcpdump/print-eap.c | 277 +-
contrib/tcpdump/print-egp.c | 224 +-
contrib/tcpdump/print-eigrp.c | 472 +--
contrib/tcpdump/print-enc.c | 94 +-
contrib/tcpdump/print-esp.c | 544 +--
contrib/tcpdump/print-ether.c | 496 ++-
contrib/tcpdump/print-fddi.c | 93 +-
contrib/tcpdump/print-forces.c | 761 ++---
contrib/tcpdump/print-fr.c | 386 +--
contrib/tcpdump/print-frag6.c | 38 +-
contrib/tcpdump/print-ftp.c | 11 +-
contrib/tcpdump/print-geneve.c | 81 +-
contrib/tcpdump/print-geonet.c | 123 +-
contrib/tcpdump/print-gre.c | 210 +-
contrib/tcpdump/print-hncp.c | 331 +-
contrib/tcpdump/print-hsrp.c | 88 +-
contrib/tcpdump/print-http.c | 11 +-
contrib/tcpdump/print-icmp.c | 523 +--
contrib/tcpdump/print-icmp6.c | 1383 ++++----
contrib/tcpdump/print-igmp.c | 232 +-
contrib/tcpdump/print-igrp.c | 126 +-
contrib/tcpdump/print-ip-demux.c | 231 ++
contrib/tcpdump/print-ip.c | 575 +---
contrib/tcpdump/print-ip6.c | 413 ++-
contrib/tcpdump/print-ip6opts.c | 188 +-
contrib/tcpdump/print-ipcomp.c | 31 +-
contrib/tcpdump/print-ipfc.c | 50 +-
contrib/tcpdump/print-ipnet.c | 51 +-
contrib/tcpdump/print-ipoib.c | 125 +
contrib/tcpdump/print-ipx.c | 193 +-
contrib/tcpdump/print-isakmp.c | 1425 ++++----
contrib/tcpdump/print-isoclns.c | 2757 ++++++++-------
contrib/tcpdump/print-juniper.c | 823 +++--
contrib/tcpdump/print-krb.c | 113 +-
contrib/tcpdump/print-l2tp.c | 303 +-
contrib/tcpdump/print-lane.c | 52 +-
contrib/tcpdump/print-ldp.c | 304 +-
contrib/tcpdump/print-lisp.c | 158 +-
contrib/tcpdump/print-llc.c | 124 +-
contrib/tcpdump/print-lldp.c | 651 ++--
contrib/tcpdump/print-lmp.c | 601 ++--
contrib/tcpdump/print-loopback.c | 81 +-
contrib/tcpdump/print-lspping.c | 546 ++-
contrib/tcpdump/print-lwapp.c | 172 +-
contrib/tcpdump/print-lwres.c | 428 ++-
contrib/tcpdump/print-m3ua.c | 96 +-
contrib/tcpdump/print-macsec.c | 256 ++
contrib/tcpdump/print-medsa.c | 196 --
contrib/tcpdump/print-mobile.c | 35 +-
contrib/tcpdump/print-mobility.c | 170 +-
contrib/tcpdump/print-mpcp.c | 146 +-
contrib/tcpdump/print-mpls.c | 108 +-
contrib/tcpdump/print-mptcp.c | 279 +-
contrib/tcpdump/print-msdp.c | 64 +-
contrib/tcpdump/print-msnlb.c | 27 +-
contrib/tcpdump/print-nflog.c | 177 +-
contrib/tcpdump/print-nfs.c | 1419 ++++----
contrib/tcpdump/print-nsh.c | 233 +-
contrib/tcpdump/print-ntp.c | 473 ++-
contrib/tcpdump/print-null.c | 45 +-
contrib/tcpdump/print-olsr.c | 285 +-
contrib/tcpdump/print-openflow-1.0.c | 2478 ++++++--------
contrib/tcpdump/print-openflow-1.3.c | 1209 +++++++
contrib/tcpdump/print-openflow.c | 214 +-
contrib/tcpdump/print-ospf.c | 773 ++---
contrib/tcpdump/print-ospf6.c | 515 ++-
contrib/tcpdump/print-otv.c | 36 +-
contrib/tcpdump/print-pflog.c | 188 +-
contrib/tcpdump/print-pfsync.c | 136 +-
contrib/tcpdump/print-pgm.c | 543 ++-
contrib/tcpdump/print-pim.c | 667 ++--
contrib/tcpdump/print-pktap.c | 94 +-
contrib/tcpdump/print-ppi.c | 108 +-
contrib/tcpdump/print-ppp.c | 869 ++---
contrib/tcpdump/print-pppoe.c | 81 +-
contrib/tcpdump/print-pptp.c | 731 ++--
contrib/tcpdump/print-ptp.c | 634 ++++
contrib/tcpdump/print-radius.c | 881 ++++-
contrib/tcpdump/print-raw.c | 12 +-
contrib/tcpdump/print-realtek.c | 248 ++
contrib/tcpdump/print-resp.c | 114 +-
contrib/tcpdump/print-rip.c | 425 ++-
contrib/tcpdump/print-ripng.c | 125 +-
contrib/tcpdump/print-rpki-rtr.c | 147 +-
contrib/tcpdump/print-rrcp.c | 129 -
contrib/tcpdump/print-rsvp.c | 1179 ++++---
contrib/tcpdump/print-rt6.c | 96 +-
contrib/tcpdump/print-rtsp.c | 11 +-
contrib/tcpdump/print-rx.c | 1411 ++++----
contrib/tcpdump/print-sctp.c | 382 +--
contrib/tcpdump/print-sflow.c | 725 ++--
contrib/tcpdump/print-sip.c | 8 +-
contrib/tcpdump/print-sl.c | 161 +-
contrib/tcpdump/print-sll.c | 316 +-
contrib/tcpdump/print-slow.c | 363 +-
contrib/tcpdump/print-smb.c | 759 ++---
contrib/tcpdump/print-smtp.c | 11 +-
contrib/tcpdump/print-snmp.c | 399 ++-
contrib/tcpdump/print-someip.c | 142 +
contrib/tcpdump/print-ssh.c | 99 +
contrib/tcpdump/print-stp.c | 349 +-
contrib/tcpdump/print-sunatm.c | 26 +-
contrib/tcpdump/print-sunrpc.c | 85 +-
contrib/tcpdump/print-symantec.c | 52 +-
contrib/tcpdump/print-syslog.c | 72 +-
contrib/tcpdump/print-tcp.c | 508 +--
contrib/tcpdump/print-telnet.c | 81 +-
contrib/tcpdump/print-tftp.c | 71 +-
contrib/tcpdump/print-timed.c | 111 +-
contrib/tcpdump/print-tipc.c | 181 +-
contrib/tcpdump/print-token.c | 94 +-
contrib/tcpdump/print-udld.c | 115 +-
contrib/tcpdump/print-udp.c | 563 +--
contrib/tcpdump/print-unsupported.c | 34 +
contrib/tcpdump/print-usb.c | 186 +-
contrib/tcpdump/print-vjc.c | 34 +-
contrib/tcpdump/print-vqp.c | 107 +-
contrib/tcpdump/print-vrrp.c | 101 +-
contrib/tcpdump/print-vsock.c | 262 ++
contrib/tcpdump/print-vtp.c | 181 +-
contrib/tcpdump/print-vxlan-gpe.c | 67 +-
contrib/tcpdump/print-vxlan.c | 41 +-
contrib/tcpdump/print-wb.c | 365 +-
contrib/tcpdump/print-whois.c | 31 +
contrib/tcpdump/print-zep.c | 181 +
contrib/tcpdump/print-zephyr.c | 128 +-
contrib/tcpdump/print-zeromq.c | 83 +-
contrib/tcpdump/print.c | 411 ++-
contrib/tcpdump/print.h | 5 +-
contrib/tcpdump/rpc_auth.h | 11 +-
contrib/tcpdump/rpc_msg.h | 24 +-
contrib/tcpdump/rpl.h | 174 -
contrib/tcpdump/setsignal.c | 90 -
contrib/tcpdump/setsignal.h | 25 -
contrib/tcpdump/signature.c | 26 +-
contrib/tcpdump/slcompress.h | 4 +-
contrib/tcpdump/smb.h | 6 +-
contrib/tcpdump/smbutil.c | 535 +--
contrib/tcpdump/status-exit-codes.h | 32 +
contrib/tcpdump/stime.awk | 2 +-
contrib/tcpdump/strtoaddr.c | 20 +-
contrib/tcpdump/tcp.h | 29 +-
contrib/tcpdump/tcpdump.1.in | 364 +-
contrib/tcpdump/tcpdump.c | 1232 +++++--
contrib/tcpdump/timeval-operations.h | 23 +-
contrib/tcpdump/udp.h | 118 +-
contrib/tcpdump/util-print.c | 614 ++--
contrib/tcpdump/varattrs.h | 59 +
usr.sbin/tcpdump/tcpdump/Makefile | 25 +-
usr.sbin/tcpdump/tcpdump/config.h | 208 +-
277 files changed, 47688 insertions(+), 32990 deletions(-)
diff --cc contrib/tcpdump/CMakeLists.txt
index 000000000000,9495b5d4c234..9495b5d4c234
mode 000000,100644..100644
--- a/contrib/tcpdump/CMakeLists.txt
+++ b/contrib/tcpdump/CMakeLists.txt
diff --cc contrib/tcpdump/CONTRIBUTING.md
index 000000000000,000000000000..26f226ebd973
new file mode 100644
--- /dev/null
+++ b/contrib/tcpdump/CONTRIBUTING.md
@@@ -1,0 -1,0 +1,191 @@@
++# Some Information for Contributors
++Thank you for considering to make a contribution to tcpdump! Please use the
++guidelines below to achieve the best results and experience for everyone.
++
++## How to report bugs and other problems
++**To report a security issue (segfault, buffer overflow, infinite loop, arbitrary
++code execution etc) please send an e-mail to security@tcpdump.org, do not use
++the bug tracker!**
++
++To report a non-security problem (failure to compile, incorrect output in the
++protocol printout, missing support for a particular protocol etc) please check
++first that it reproduces with the latest stable release of tcpdump and the latest
++stable release of libpcap. If it does, please check that the problem reproduces
++with the current git master branch of tcpdump and the current git master branch of
++libpcap. If it does (and it is not a security-related problem, otherwise see
++above), please navigate to the
++[bug tracker](https://github.com/the-tcpdump-group/tcpdump/issues)
++and check if the problem has already been reported. If it has not, please open
++a new issue and provide the following details:
++
++* tcpdump and libpcap version (`tcpdump --version`)
++* operating system name and version and any other details that may be relevant
++ (`uname -a`, compiler name and version, CPU type etc.)
++* custom `configure`/`cmake` flags, if any
++* statement of the problem
++* steps to reproduce
++
++Please note that if you know exactly how to solve the problem and the solution
++would not be too intrusive, it would be best to contribute some development time
++and to open a pull request instead as discussed below.
++
++Still not sure how to do? Feel free to
++[subscribe to the mailing list](https://www.tcpdump.org/#mailing-lists)
++and ask!
++
++
++## How to add new code and to update existing code
++
++0) Check that there isn't a pull request already opened for the changes you
++ intend to make.
++
++1) [Fork](https://help.github.com/articles/fork-a-repo/) the Tcpdump
++ [repository](https://github.com/the-tcpdump-group/tcpdump).
++
++2) The easiest way to test your changes on multiple operating systems and
++ architectures is to let the upstream CI test your pull request (more on
++ this below).
++
++3) Setup your git working copy
++ ```
++ git clone https://github.com/<username>/tcpdump.git
++ cd tcpdump
++ git remote add upstream https://github.com/the-tcpdump-group/tcpdump
++ git fetch upstream
++ ```
++
++4) Do a `touch .devel` in your working directory.
++ Currently, the effect is
++ * add (via `configure`, in `Makefile`) some warnings options (`-Wall`,
++ `-Wmissing-prototypes`, `-Wstrict-prototypes`, ...) to the compiler if it
++ supports these options,
++ * have the `Makefile` support `make depend` and the `configure` script run it.
++
++5) Configure and build
++ ```
++ ./configure && make -s && make check
++ ```
++
++6) Add/update tests
++ The `tests` directory contains regression tests of the dissection of captured
++ packets. Those captured packets were saved running tcpdump with option
++ `-w sample.pcap`. Additional options, such as `-n`, are used to create relevant
++ and reproducible output; `-#` is used to indicate which particular packets
++ have output that differs. The tests are run with the `TZ` environment
++ variable set to `GMT0`, so that UTC, rather than the local time where the
++ tests are being run, is used when "local time" values are printed. The
++ actual test compares the current text output with the expected result
++ (`sample.out`) saved from a previous version.
++
++ Any new/updated fields in a dissector must be present in a `sample.pcap` file
++ and the corresponding output file.
++
++ Configuration is set in `tests/TESTLIST`.
++ Each line in this file has the following format:
++ ```
++ test-name sample.pcap sample.out tcpdump-options
++ ```
++
++ The `sample.out` file can be produced as follows:
++ ```
++ (cd tests && TZ=GMT0 ../tcpdump -# -n -r sample.pcap tcpdump-options > sample.out)
++ ```
++
++ Or, for convenience, use `./update-test.sh test-name`
++
++ It is often useful to have test outputs with different verbosity levels
++ (none, `-v`, `-vv`, `-vvv`, etc.) depending on the code.
++
++7) Test using `make check` (current build options) and `./build_matrix.sh`
++ (a multitude of build options, build systems and compilers). If you can,
++ test on more than one operating system. Don't send a pull request until
++ all tests pass.
++
++8) Try to rebase your commits to keep the history simple.
++ ```
++ git fetch upstream
++ git rebase upstream/master
++ ```
++ (If the rebase fails and you cannot resolve, issue `git rebase --abort`
++ and ask for help in the pull request comment.)
++
++9) Once 100% happy, put your work into your forked repository using `git push`.
++
++10) [Initiate and send](https://help.github.com/articles/using-pull-requests/)
++ a pull request.
++ This will trigger the upstream repository CI tests.
++
++
++## Code style and generic remarks
++* A thorough reading of some other printers code is useful.
++
++* Put the normative reference if any as comments (RFC, etc.).
++
++* Put the format of packets/headers/options as comments if there is no
++ published normative reference.
++
++* The printer may receive incomplete packet in the buffer, truncated at any
++ random position, for example by capturing with `-s size` option.
++ If your code reads and decodes every byte of the protocol packet, then to
++ ensure proper and complete bounds checks it would be sufficient to read all
++ packet data using the `GET_*()` macros, typically:
++ ```
++ GET_U_1(p)
++ GET_S_1(p)
++ GET_BE_U_n(p), n in { 2, 3, 4, 5, 6, 7, 8 }
++ GET_BE_S_n(p), n in { 2, 3, 4, 5, 6, 7, 8 }
++ ```
++ If your code uses the macros above only on some packet data, then the gaps
++ would have to be bounds-checked using the `ND_TCHECK_*()` macros:
++ ```
++ ND_TCHECK_n(p), n in { 1, 2, 3, 4, 5, 6, 7, 8, 16 }
++ ND_TCHECK_SIZE(p)
++ ND_TCHECK_LEN(p, l)
++ ```
++ For the `ND_TCHECK_*` macros (if not already done):
++ * Assign: `ndo->ndo_protocol = "protocol";`
++ * Define: `ND_LONGJMP_FROM_TCHECK` before including `netdissect.h`
++ * Make sure that the intersection of `GET_*()` and `ND_TCHECK_*()` is minimal,
++ but at the same time their union covers all packet data in all cases.
++
++ You can test the code via:
++ ```
++ sudo ./tcpdump -s snaplen [-v][v][...] -i lo # in a terminal
++ sudo tcpreplay -i lo sample.pcap # in another terminal
++ ```
++ You should try several values for snaplen to do various truncation.
++
++* Do invalid packet checks in code: Think that your code can receive in input
++ not only a valid packet but any arbitrary random sequence of octets (packet
++ * built malformed originally by the sender or by a fuzz tester,
++ * became corrupted in transit or for some other reason).
++
++ Print with: `nd_print_invalid(ndo); /* to print " (invalid)" */`
++
++* Use `struct tok` for indexed strings and print them with
++ `tok2str()` or `bittok2str()` (for flags).
++
++* Avoid empty lines in output of printers.
++
++* A commit message must have:
++ ```
++ First line: Capitalized short summary in the imperative (50 chars or less)
++
++ If the commit concerns a protocol, the summary line must start with
++ "protocol: ".
++
++ Body: Detailed explanatory text, if necessary. Fold it to approximately
++ 72 characters. There must be an empty line separating the summary from
++ the body.
++ ```
++
++* Avoid non-ASCII characters in code and commit messages.
++
++* Use the style of the modified sources.
++
++* Don't mix declarations and code.
++
++* Don't use `//` for comments.
++ Not all C compilers accept C++/C99 comments by default.
++
++* Avoid trailing tabs/spaces
diff --cc contrib/tcpdump/LICENSE
index dea5f7d54d6b,000000000000..a10474d54aeb
mode 100644,000000..100644
--- a/contrib/tcpdump/LICENSE
+++ b/contrib/tcpdump/LICENSE
@@@ -1,19 -1,0 +1,19 @@@
+License: BSD
-
++
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
-
++
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not 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.
diff --cc contrib/tcpdump/README.md
index a1fba9bca6d4,000000000000..566b7b7a874f
mode 100644,000000..100644
--- a/contrib/tcpdump/README.md
+++ b/contrib/tcpdump/README.md
@@@ -1,225 -1,0 +1,225 @@@
- # tcpdump
++# TCPDUMP 4.x.y by [The Tcpdump Group](https://www.tcpdump.org/)
+
- [](https://travis-ci.org/the-tcpdump-group/tcpdump)
-
- To report a security issue please send an e-mail to security@tcpdump.org.
++**To report a security issue please send an e-mail to security@tcpdump.org.**
+
+To report bugs and other problems, contribute patches, request a
- feature, provide generic feedback etc please see the file
- CONTRIBUTING in the tcpdump source tree root.
-
- TCPDUMP 4.x.y
- Now maintained by "The Tcpdump Group"
- See www.tcpdump.org
++feature, provide generic feedback etc please see the
++[guidelines for contributing](CONTRIBUTING.md) in the tcpdump source tree root.
+
- Anonymous Git is available via:
++Anonymous Git is available via
+
- git clone git://bpf.tcpdump.org/tcpdump
-
- formerly from Lawrence Berkeley National Laboratory
- Network Research Group <tcpdump@ee.lbl.gov>
- ftp://ftp.ee.lbl.gov/old/tcpdump.tar.Z (3.4)
++ https://github.com/the-tcpdump-group/tcpdump.git
+
+This directory contains source code for tcpdump, a tool for network
- monitoring and data acquisition. This software was originally
- developed by the Network Research Group at the Lawrence Berkeley
- National Laboratory. The original distribution is available via
- anonymous ftp to `ftp.ee.lbl.gov`, in `tcpdump.tar.Z`. More recent
- development is performed at tcpdump.org, http://www.tcpdump.org/
++monitoring and data acquisition.
+
++Over the past few years, tcpdump has been steadily improved by the
++excellent contributions from the Internet community (just browse
++through the [change log](CHANGES)). We are grateful for all the input.
++
++### Supported platforms
++In many operating systems tcpdump is available as a native package or port,
++which simplifies installation of updates and long-term maintenance. However,
++the native packages are sometimes a few versions behind and to try a more
++recent snapshot it will take to compile tcpdump from the source code.
++
++tcpdump compiles and works on at least the following platforms:
++
++* AIX
++* DragonFly BSD
++* FreeBSD
++* Haiku
++* HP-UX 11i
++* illumos (OmniOS, OpenIndiana)
++* GNU/Linux
++* {Mac} OS X / macOS
++* NetBSD
++* OpenBSD
++* OpenWrt
++* Solaris
++* Windows (requires WinPcap or Npcap, and Visual Studio with CMake)
++
++### Dependency on libpcap
+Tcpdump uses libpcap, a system-independent interface for user-level
+packet capture. Before building tcpdump, you must first retrieve and
- build libpcap, also originally from LBL and now being maintained by
- tcpdump.org; see http://www.tcpdump.org/ .
++build libpcap.
+
+Once libpcap is built (either install it or make sure it's in
- `../libpcap`), you can build tcpdump using the procedure in the `INSTALL.txt`
- file.
++`../libpcap`), you can build tcpdump using the procedure in the
++[installation notes](INSTALL.md).
+
++### Origins of tcpdump
+The program is loosely based on SMI's "etherfind" although none of the
+etherfind code remains. It was originally written by Van Jacobson as
- part of an ongoing research project to investigate and improve tcp and
- internet gateway performance. The parts of the program originally
++part of an ongoing research project to investigate and improve TCP and
++Internet gateway performance. The parts of the program originally
+taken from Sun's etherfind were later re-written by Steven McCanne of
+LBL. To insure that there would be no vestige of proprietary code in
+tcpdump, Steve wrote these pieces from the specification given by the
+manual entry, with no access to the source of tcpdump or etherfind.
++```text
++formerly from Lawrence Berkeley National Laboratory
++ Network Research Group <tcpdump@ee.lbl.gov>
++ ftp://ftp.ee.lbl.gov/old/tcpdump.tar.Z (3.4)
++```
+
- Over the past few years, tcpdump has been steadily improved by the
- excellent contributions from the Internet community (just browse
- through the `CHANGES` file). We are grateful for all the input.
-
++### See also
+Richard Stevens gives an excellent treatment of the Internet protocols
+in his book *"TCP/IP Illustrated, Volume 1"*. If you want to learn more
+about tcpdump and how to interpret its output, pick up this book.
+
- Some tools for viewing and analyzing tcpdump trace files are available
- from the Internet Traffic Archive:
-
- * http://www.sigcomm.org/ITA/
-
- Another tool that tcpdump users might find useful is tcpslice:
-
- * https://github.com/the-tcpdump-group/tcpslice
-
++Another tool that tcpdump users might find useful is
++[tcpslice](https://github.com/the-tcpdump-group/tcpslice).
+It is a program that can be used to extract portions of tcpdump binary
- trace files. See the above distribution for further details and
- documentation.
-
- Current versions can be found at www.tcpdump.org.
-
- - The TCPdump team
-
- original text by: Steve McCanne, Craig Leres, Van Jacobson
++trace files.
+
- -------------------------------------
++### The original LBL README by Steve McCanne, Craig Leres and Van Jacobson
+```
+This directory also contains some short awk programs intended as
+examples of ways to reduce tcpdump data when you're tracking
+particular network problems:
+
+send-ack.awk
+ Simplifies the tcpdump trace for an ftp (or other unidirectional
+ tcp transfer). Since we assume that one host only sends and
+ the other only acks, all address information is left off and
+ we just note if the packet is a "send" or an "ack".
+
+ There is one output line per line of the original trace.
+ Field 1 is the packet time in decimal seconds, relative
+ to the start of the conversation. Field 2 is delta-time
+ from last packet. Field 3 is packet type/direction.
+ "Send" means data going from sender to receiver, "ack"
+ means an ack going from the receiver to the sender. A
+ preceding "*" indicates that the data is a retransmission.
+ A preceding "-" indicates a hole in the sequence space
+ (i.e., missing packet(s)), a "#" means an odd-size (not max
+ seg size) packet. Field 4 has the packet flags
+ (same format as raw trace). Field 5 is the sequence
+ number (start seq. num for sender, next expected seq number
+ for acks). The number in parens following an ack is
+ the delta-time from the first send of the packet to the
+ ack. A number in parens following a send is the
+ delta-time from the first send of the packet to the
+ current send (on duplicate packets only). Duplicate
+ sends or acks have a number in square brackets showing
+ the number of duplicates so far.
+
+ Here is a short sample from near the start of an ftp:
+ 3.00 0.20 send . 512
+ 3.20 0.20 ack . 1024 (0.20)
+ 3.20 0.00 send P 1024
+ 3.40 0.20 ack . 1536 (0.20)
+ 3.80 0.40 * send . 0 (3.80) [2]
+ 3.82 0.02 * ack . 1536 (0.62) [2]
+ Three seconds into the conversation, bytes 512 through 1023
+ were sent. 200ms later they were acked. Shortly thereafter
+ bytes 1024-1535 were sent and again acked after 200ms.
+ Then, for no apparent reason, 0-511 is retransmitted, 3.8
+ seconds after its initial send (the round trip time for this
+ ftp was 1sec, +-500ms). Since the receiver is expecting
+ 1536, 1536 is re-acked when 0 arrives.
+
+packetdat.awk
+ Computes chunk summary data for an ftp (or similar
+ unidirectional tcp transfer). [A "chunk" refers to
+ a chunk of the sequence space -- essentially the packet
+ sequence number divided by the max segment size.]
+
+ A summary line is printed showing the number of chunks,
+ the number of packets it took to send that many chunks
+ (if there are no lost or duplicated packets, the number
+ of packets should equal the number of chunks) and the
+ number of acks.
+
+ Following the summary line is one line of information
+ per chunk. The line contains eight fields:
+ 1 - the chunk number
+ 2 - the start sequence number for this chunk
+ 3 - time of first send
+ 4 - time of last send
+ 5 - time of first ack
+ 6 - time of last ack
+ 7 - number of times chunk was sent
+ 8 - number of times chunk was acked
+ (all times are in decimal seconds, relative to the start
+ of the conversation.)
+
+ As an example, here is the first part of the output for
+ an ftp trace:
+
+ # 134 chunks. 536 packets sent. 508 acks.
+ 1 1 0.00 5.80 0.20 0.20 4 1
+ 2 513 0.28 6.20 0.40 0.40 4 1
+ 3 1025 1.16 6.32 1.20 1.20 4 1
+ 4 1561 1.86 15.00 2.00 2.00 6 1
+ 5 2049 2.16 15.44 2.20 2.20 5 1
+ 6 2585 2.64 16.44 2.80 2.80 5 1
+ 7 3073 3.00 16.66 3.20 3.20 4 1
+ 8 3609 3.20 17.24 3.40 5.82 4 11
+ 9 4097 6.02 6.58 6.20 6.80 2 5
+
+ This says that 134 chunks were transferred (about 70K
+ since the average packet size was 512 bytes). It took
+ 536 packets to transfer the data (i.e., on the average
+ each chunk was transmitted four times). Looking at,
+ say, chunk 4, we see it represents the 512 bytes of
+ sequence space from 1561 to 2048. It was first sent
+ 1.86 seconds into the conversation. It was last
+ sent 15 seconds into the conversation and was sent
+ a total of 6 times (i.e., it was retransmitted every
+ 2 seconds on the average). It was acked once, 140ms
+ after it first arrived.
+
+stime.awk
+atime.awk
+ Output one line per send or ack, respectively, in the form
+ <time> <seq. number>
+ where <time> is the time in seconds since the start of the
+ transfer and <seq. number> is the sequence number being sent
+ or acked. I typically plot this data looking for suspicious
+ patterns.
+
+
+The problem I was looking at was the bulk-data-transfer
+throughput of medium delay network paths (1-6 sec. round trip
+time) under typical DARPA Internet conditions. The trace of the
+ftp transfer of a large file was used as the raw data source.
+The method was:
+
+ - On a local host (but not the Sun running tcpdump), connect to
+ the remote ftp.
+
+ - On the monitor Sun, start the trace going. E.g.,
+ tcpdump host local-host and remote-host and port ftp-data >tracefile
+
+ - On local, do either a get or put of a large file (~500KB),
+ preferably to the null device (to minimize effects like
+ closing the receive window while waiting for a disk write).
+
+ - When transfer is finished, stop tcpdump. Use awk to make up
+ two files of summary data (maxsize is the maximum packet size,
+ tracedata is the file of tcpdump tracedata):
+ awk -f send-ack.awk packetsize=avgsize tracedata >sa
+ awk -f packetdat.awk packetsize=avgsize tracedata >pd
+
+ - While the summary data files are printing, take a look at
+ how the transfer behaved:
+ awk -f stime.awk tracedata | xgraph
+ (90% of what you learn seems to happen in this step).
+
+ - Do all of the above steps several times, both directions,
+ at different times of day, with different protocol
+ implementations on the other end.
+
+ - Using one of the Unix data analysis packages (in my case,
+ S and Gary Perlman's Unix|Stat), spend a few months staring
+ at the data.
+
+ - Change something in the local protocol implementation and
+ redo the steps above.
+
+ - Once a week, tell your funding agent that you're discovering
+ wonderful things and you'll write up that research report
+ "real soon now".
+```
diff --cc contrib/tcpdump/cmake/Modules/FindCRYPTO.cmake
index 000000000000,453c6516e071..453c6516e071
mode 000000,100644..100644
--- a/contrib/tcpdump/cmake/Modules/FindCRYPTO.cmake
+++ b/contrib/tcpdump/cmake/Modules/FindCRYPTO.cmake
diff --cc contrib/tcpdump/cmake/Modules/FindPCAP.cmake
index 000000000000,11074655f457..11074655f457
mode 000000,100644..100644
--- a/contrib/tcpdump/cmake/Modules/FindPCAP.cmake
+++ b/contrib/tcpdump/cmake/Modules/FindPCAP.cmake
diff --cc contrib/tcpdump/cmake/Modules/FindSMI.cmake
index 000000000000,98c107126722..98c107126722
mode 000000,100644..100644
--- a/contrib/tcpdump/cmake/Modules/FindSMI.cmake
+++ b/contrib/tcpdump/cmake/Modules/FindSMI.cmake
diff --cc contrib/tcpdump/cmake_uninstall.cmake.in
index 000000000000,000000000000..2037e365393a
new file mode 100644
--- /dev/null
+++ b/contrib/tcpdump/cmake_uninstall.cmake.in
@@@ -1,0 -1,0 +1,21 @@@
++if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
++ message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
++endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
++
++file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
++string(REGEX REPLACE "\n" ";" files "${files}")
++foreach(file ${files})
++ message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
++ if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
++ exec_program(
++ "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
++ OUTPUT_VARIABLE rm_out
++ RETURN_VALUE rm_retval
++ )
++ if(NOT "${rm_retval}" STREQUAL 0)
++ message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
++ endif(NOT "${rm_retval}" STREQUAL 0)
++ else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
++ message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
++ endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
++endforeach(file)
diff --cc contrib/tcpdump/cmakeconfig.h.in
index 000000000000,02a4a352e42a..02a4a352e42a
mode 000000,100644..100644
--- a/contrib/tcpdump/cmakeconfig.h.in
+++ b/contrib/tcpdump/cmakeconfig.h.in
diff --cc contrib/tcpdump/compiler-tests.h
index 000000000000,d4fe177bc247..d4fe177bc247
mode 000000,100644..100644
--- a/contrib/tcpdump/compiler-tests.h
+++ b/contrib/tcpdump/compiler-tests.h
diff --cc contrib/tcpdump/config.guess
index 2b79f6d837b9,000000000000..69188da73d74
mode 100755,000000..100755
--- a/contrib/tcpdump/config.guess
+++ b/contrib/tcpdump/config.guess
@@@ -1,1476 -1,0 +1,1774 @@@
+#! /bin/sh
+# Attempt to guess a canonical system name.
- # Copyright 1992-2018 Free Software Foundation, Inc.
++# Copyright 1992-2023 Free Software Foundation, Inc.
+
- timestamp='2018-07-06'
++# shellcheck disable=SC2006,SC2268 # see below for rationale
++
++timestamp='2023-01-01'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 3 of the License, or
++# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
+#
+# You can get the latest version of this script from:
- # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
++# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
+#
+# Please send patches to <config-patches@gnu.org>.
+
+
++# The "shellcheck disable" line above the timestamp inhibits complaints
++# about features and limitations of the classic Bourne shell that were
++# superseded or lifted in POSIX. However, this script identifies a wide
++# variety of pre-POSIX systems that do not have POSIX shells at all, and
++# even some reasonably current systems (Solaris 10 as case-in-point) still
++# have a pre-POSIX /bin/sh.
++
++
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Options:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
- Copyright 1992-2018 Free Software Foundation, Inc.
++Copyright 1992-2023 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
- trap 'exit 1' 1 2 15
++# Just in case it came from the environment.
++GUESS=
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
- set_cc_for_build='
*** 7006 LINES SKIPPED ***