diff options
author | Daniel Baumann <daniel@debian.org> | 2024-12-12 22:18:22 +0100 |
---|---|---|
committer | Daniel Baumann <daniel@debian.org> | 2024-12-12 22:37:18 +0100 |
commit | d7dba196f14971b34d3a5558ef64f9765aa6a9c4 (patch) | |
tree | 5cd92190c79ef2be590218b93c5206f8ca9b749e /src/pcap-thread | |
parent | Initial commit. (diff) | |
download | dsc-d7dba196f14971b34d3a5558ef64f9765aa6a9c4.tar.xz dsc-d7dba196f14971b34d3a5558ef64f9765aa6a9c4.zip |
Adding upstream version 2.15.2.
Signed-off-by: Daniel Baumann <daniel@debian.org>
Diffstat (limited to 'src/pcap-thread')
109 files changed, 13542 insertions, 0 deletions
diff --git a/src/pcap-thread/.clang-format b/src/pcap-thread/.clang-format new file mode 100644 index 0000000..1bd4430 --- /dev/null +++ b/src/pcap-thread/.clang-format @@ -0,0 +1,6 @@ +BasedOnStyle: webkit +IndentWidth: 4 +AlignConsecutiveAssignments: true +AlignConsecutiveDeclarations: true +AlignOperands: true +SortIncludes: false diff --git a/src/pcap-thread/.gitignore b/src/pcap-thread/.gitignore new file mode 100644 index 0000000..f609335 --- /dev/null +++ b/src/pcap-thread/.gitignore @@ -0,0 +1,26 @@ +*.o +*.ko +*.obj +*.elf +*.gch +*.pch +*.lib +*.a +*.la +*.lo +*.dll +*.so +*.so.* +*.dylib +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex +*.dSYM/ +*.su +.deps +.libs +.dirstamp +hexdump/test/bad-packets diff --git a/src/pcap-thread/.gitmodules b/src/pcap-thread/.gitmodules new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/pcap-thread/.gitmodules diff --git a/src/pcap-thread/CHANGES b/src/pcap-thread/CHANGES new file mode 100644 index 0000000..14e056c --- /dev/null +++ b/src/pcap-thread/CHANGES @@ -0,0 +1,484 @@ +2023-02-06 Jerry Lundström + + Release pcap-thread 4.0.1 + + Fixed issue with `pcap_dispatch()` during non-threaded timed runs by + checking packet timestamp and use `pcap_breakloop()` if the run + should end. + Based on reports, it looks like `pcap_dispatch()` won't stop + processing if load is high enough even if documentation says "only + one bufferful of packets is read at a time". + + 8b72d7e Copyright + 8f2370e Dispatch, error, hexdump, format + 63502bb Bye Travis + 5639468 Badges + +2018-12-03 Jerry Lundström + + Release pcap-thread 4.0.0 + + Major version build due to renaming of an API function and various CI + improvements. + + Fixes: + - Fix spelling of `pcap_thread_filter_optimize()` + - Fix `pcap_thread_next()` when using layers + - `reassemble()`: + - Check that we have `f_prev` before using it + - Free frag and return error if RFC815 since it's not complete yet + + 02fc33a clang scan, LGTM, configure + 1a64e7d Fix `pcap_thread_next()` when using layers + 75d8d72 Fix spelling of `pcap_thread_filter_optimize()` + +2017-12-18 Jerry Lundström + + Release pcap-thread 3.1.0, hexdump 2.1.0 + + Fix handling with IP packets that have padding or are missing some of + the payload. The padding data can be accessed by going beyond the length + of payload reported (see `hexdump -G`). + + New `pcap_thread_packet_t` fields: + - `have_ippadding`: Indicate that the IPv4 packet has padding + - `have_ip6padding`: Indicate that the IPv6 packet has padding + - `ippadding`: The IPv4 padding length + - `ip6padding`: The IPv6 padding length + + New `hexdump` option: + - Add option `-G` to report padding of IP packets + + 91b9703 Readd tests + c30295e `hexdump` report padding + f4e8b6f Padding and payload + +2017-12-15 Jerry Lundström + + Release pcap-thread 3.0.1 + + 95db71c Remove bad-packets and scapy as a submodule, was bloating dist + too much + +2017-12-14 Jerry Lundström + + Release pcap-thread 3.0.0, hexdump 2.0.0 + + Implement callback for additional layers, especially IP fragmentation. + - `pcap_thread_set_callback_ipv4_frag()` + - `pcap_thread_set_callback_ipv6_frag()` + - `pcap_thread_set_callback_icmp()` + - `pcap_thread_set_callback_icmpv6()` + - Additional `pcap_thread_packet_t` fields: + - `have_icmphdr`: Indicate present of ICMP header + - `have_icmpv6hdr`: Indicate present of ICMPv6 header + - `have_tcpopts`: Indicate present of TCP options + - `icmphdr`: ICMP header + - `icmpv6hdr`: ICMPv6 header + - `tcpopts`: An array with a copy of the TCP options + - `tcpopts_len`: Total length of TCP options + + IP fragmentation handling is hooked in with a callback object called + `pcap_thread_layer_callback_frag_t` that contains callbacks for: + - `new`: Create a new context, this is called per PCAP/interface + - `free`: Free the context + - `reassemble`: Called with the packet that needs reassembly, this + callback may return a fully reassembled packet. + - `release`: Called to release resources around a fully reassembled + packet after the packet has been passed to the next layers. + - Additional `pcap_thread_packet_t` fields: + - `ip6frag`: The IPv6 extension header for fragmentation + - `ip6frag_payload`: The protocol of the payload in the fragment + - `ip6rtdst`: The IPv6 destination address from the router extension + header if not the same as in `ip6hdr` + + New IP fragmentation extension `pcap_thread_ext_frag.c|h`! + - Use `pcap_thread_ext_frag_conf_t` to configure + - Has two defragmentation modes + - `PCAP_THREAD_EXT_FRAG_REASSEMBLE_RFC791` will arrange fragments by + ascending offset, higher offset fragments will overwrite lower ones + - `PCAP_THREAD_EXT_FRAG_REASSEMBLE_BSD` will arrange fragments by + descending offset, lower offset fragments will overwrite higher ones + - Use `pcap_thread_ext_frag_layer_callback()` to generate a + `pcap_thread_layer_callback_frag_t` object and + `pcap_thread_set_callback_ipv4_frag()` / + `pcap_thread_set_callback_ipv6_frag()` to enable the extension + + Breaking changes: + - When a fragmented packet is received and no callbacks are set to + handled them, the packets will get passed to the next layer if a + callback has been set. These packets will also be parse in a non-fatal + way so callbacks need to check packet state before processing, see + below. + - Layers and invalid callbacks can now get packets that are fragmented, + this is indicated with new packet states: + - `PCAP_THREAD_PACKET_IS_FRAGMENT` + - `PCAP_THREAD_PACKET_INVALID_FRAGMENT` + - `PCAP_THREAD_PACKET_FRAGMENTED_GREHDR` + - `PCAP_THREAD_PACKET_FRAGMENTED_ICMPHDR` + - `PCAP_THREAD_PACKET_FRAGMENTED_ICMPV6HDR` + - `PCAP_THREAD_PACKET_FRAGMENTED_UDPHDR` + - `PCAP_THREAD_PACKET_FRAGMENTED_TCPHDR` + - Additional packet states added: + - `PCAP_THREAD_PACKET_ENOMEM`: No more memory + - `PCAP_THREAD_PACKET_EMUTEX`: Mutex locking/unlocking error + - Not really breaking but `enum pcap_thread_packet_state` can be + represented with `pcap_thread_packet_state_t` now. + + `hexdump`: + - New option `-F` to enable or configure IP fragmentation handling + - `-F <ip proto>` to enable defragmentation + - `-F m<ip prot><num>` to set maximum number of fragments + - `-F p<ip prot><num>` to set maximum number of fragments per packet + - `-F R<ip proto>` to reject overlapping fragments + - `-F t<ip proto>[sec]` to set enable/set timeout for fragments + - `-F d<ip proto><what>` for more output about fragmentations + - Add packet state in output, in both text and numerical + - Add `icmp` and `icmpv6` to `-L` + + Bugfixes: + - Rearrange headers for compatibility with *BSD + - #36: Use `AC_HEADER_TIME` to include time functions + - Layer callback was not set if using non-threaded mode + - IPv4 addresses was incorrectly parse from IP header + - Check that `PCAP_TSTAMP_PRECISION_MICRO` macro exists instead of + function + - #97: Check for TCP options and offload into `tcpopts` + + f6b5676 TCP options and IP fragments + 201d4ce Fix warning that `_release()` is unused if compiled without + threads support + f897c1d IP fragmentation extension + c4e9dfa Append fragment payload length to the reassembled packet's + pkthdr len and caplen + c1819cf Check that `PCAP_TSTAMP_PRECISION_MICRO` macro exists instead + of function + 3f8caf3 Also copy indicator of pkthdr when reassembling IP packets + 55086bb Add test output to CLEANFILES + b2c812f Use defines for layer tracing + b357d3d Fix setting of IPv4 addresses from IP header + 011e128 Fix bug where layer callback was not set if using non-threaded + mode + 3e9926b Packet is a fragment + be359be Add ICMP/ICMPv6 callback layer support + 450466a Issue DNS-OARC/dnscap#87: IP v4/v6 fragmentation + 54200b1 Fix #36: Use `AC_HEADER_TIME` + bdd5755 Update code format + 5746474 Rearrange headers for *BSD + 8a74bd4 Format code + 7472531 Format before format + +2017-06-06 Jerry Lundström + + Release pcap-thread 2.1.3 + + Compatibility fixes for older versions of libpcap submitted by + Ray Bellis (ISC). + + ce20e89 Config header is generated by autotools + d485a0b don't do DLT_IPV4 or DLT_IPV6 if not supported + 1efb0a3 missing PCAP_NETMASK_UNKNOWN macro + +2017-03-28 Jerry Lundström + + Release pcap-thread 2.1.2 + + Bugfixes: + - The first byte of the IP header is read to determine the IP version + and when it is IPv6 the pointers and length variables are "reversed" + one byte to later continue reading the whole IPv6 header. This was + done incorrectly and could result in reading outside the boundaries. + - Add OS X headers for endian + + 6fe2b2a Update + 7306e58 Issue DNS-OARC/dnscap#65: tv_* are signed + a65ac8b Issue DNS-OARC/dnscap#65: Add check for OS X endian + 4185b7b Issue DNS-OARC/drool#43, DNS-OARC/drool#44: Fix reverse reading + a byte + +2017-03-09 Jerry Lundström + + Release pcap-thread 2.1.1 + + b1a3a80 Define UDP/TCP headers ourself to not depend on __FAVOR_BSD + +2017-03-09 Jerry Lundström + + Release pcap-thread 2.1.0, hexdump 1.3.0 + + Implement callbacks for different packet/protocol layers to simplify + processing, based on `pcap_layers` by Duane Wessels (@wessels). + + Following callback exists: + - `pcap_thread_set_callback_ether()` + - `pcap_thread_set_callback_null()` + - `pcap_thread_set_callback_loop()` + - `pcap_thread_set_callback_ieee802()` + - `pcap_thread_set_callback_gre()` + - `pcap_thread_set_callback_ip()` + - `pcap_thread_set_callback_ipv4()` + - `pcap_thread_set_callback_ipv6()` + - `pcap_thread_set_callback_udp()` + - `pcap_thread_set_callback_tcp()` + + For most layers, only one callback can be set so you can't intersect + the packet processing in the middle at, for example GRE. There are a + few layers that can have multiple callback: + - IPv4 and IPv6 callbacks can be set at the same time + - UDP and TCP callbacks can be set at the same time + + Layer processing is enabled by `pcap_thread_set_use_layers()` and is + used if set and no callback has been set (`pcap_thread_set_callback()`). + + For any packet that the layers does not understand or is invalid, use + `pcap_thread_set_callback_invalid()` to set a handler for them and + check `packet->state` what went wrong. + + Bug fix: + - Fix `have_timestamp_type` check. + When converting set functions for some libpcap functionality to a + `have_what` bitmap, one of the functions was left with a compare of + greater then -1 (`> -1` which will always be true). This would run + `pcap_set_tstamp_type()` every time in `pcap_thread_open()`, if the + functionality existed at compile time, and most likely fail. + + New features: + - Ability to reuse pcap_thread + - `pcap_thread_close()` only frees/clears things related to running + - fix `pcap_thread_close()`, also clear stepping pointer + - add `pcap_thread_clear_filter()` for releasing filter on non-allocated + pcap_threads + - fix `pcap_thread_set_filter()`, check for memory issue + - Add `pcap_thread_was_stopped()` to indicate if `pcap_thread_stop()` was + used + - New option in `hexdump`, `-L <layer>` enabled capturing for the given + layer and dumps the payload for it and not the whole packet. + + 44361e6 Fix unsigned short check + 3f44586 Fix automake files to handle building in build dir + b56496b Add `pcap_thread_was_stopped()` to indicate if + `pcap_thread_stop()` was used + f644789 Ignore errors on apt-get update + aeaded7 Ability to reuse pcap_thread + 4900361 Add support for Linux "cooked" capture encapsulation + (DLT_LINUX_SLL) + 48574b4 Packet Layer Callbacks + +2017-01-23 Jerry Lundström + + Release pcap-thread 2.0.0, hexdump 1.2.0 + + Reworked queues from being "lockless" to using one mutex, two conditions + and use only one queue per context instead of one per interface. + Deprecated most queue modes, all callback queue modes and obsoleted + `pcap_thread_add()`. + + Fixes and tweaks: + - Use bitmaps internally in structures to allow for setting values to + zero (as some are enums with valid zero values) for: + - `pcap_thread_set_timestamp_precision()` + - `pcap_thread_set_timestamp_type()` + - `pcap_thread_set_direction()` + - Memory leaks + - Clear and fill errbuf everywhere it should be done + - Handle errors from `pcap_snapshot()` + - Protect against changing anything while running + - Don't run `pcap_stats()` on offline pcaps since it will return an error + - Rearrange booleans in `hexdump` output to make more sense. + + New features: + - Delayed activation of pcap capturing can be done by setting + `PCAP_THREAD_ACTIVATE_MODE_DELAYED` with + `pcap_thread_set_activate_mode()` and then calling + `pcap_thread_activate()` before processing packets. + - `pcap_thread_timedrun_to()` can be used to process packet until an + absolute time. + - `PCAP_THREAD_QUEUE_MODE_DIRECT` can be used to run the callback within + the capturing threads and in so with-go of the queue and increase the + performance. + - `pcap_thread_filter_errno()` can be used to get the non-fatal error + from setting the pcap bpf, if there is an error it can indicate that + the bpf was too large or there is no support for it. This will also + mean that libpcap will run it in userland and it may be a lot slower + then if it ran in the kernel. + - New option `-a <0|1>` for `hexdump` to use delayed activation. + - New queue mode `direct` for `hexdump` (`-C <mode>`) to use process + packets in the capture thread. + + 60fbeb7 Tab to spaces + 1161efa Remove lockless and update help + e88f035 Detect if errno was set during open or activate but libpcap did + not return error, this indicates filter may be running userland + (which is A LOT slower) + 1f4a329 Don't run pcap_stats() on offline pcaps, will just return error + 814524d Implement direct queue mode, will send packets to callback in + the capturing thread + 4c7195f Timed run to + 200bb11 Reattach threads and join them + 3fd399a Notify that _thread have existed + e3a0b92 Prevent changes if we are running + df86684 Simplify thread queue + 29ef49e Tweaks and fixes + 355e761 If we don't have pcap_activate() then it is already activated + ab8bb9a Rearrange bools for hexdump options to correspond with help text + f5e79e4 Implement the possibility for delayed activation of the interface + capturing + +2017-01-12 Jerry Lundström + + Release 1.2.3 + + The non-threaded code did not consider the time left for a timed run + so it would run for one timeout period longer then necessary. + + eac378c Handle timed run better with non-threaded code, calculate + the diff and use it as timeout if lower then the configurable + timeout + ea01d0f Fix timestamp type and change way we initialize allocated + pcap_thread_t + +2017-01-10 Jerry Lundström + + Release 1.2.2 + + Fix for reading pcap files, got stuck because `pcap_loop()` returned + zero and forgot to check for that. Added test for reading a pcap and + checking against a gold output file. + + 1842682 Got stuck reading pcap files, add test + deb6d28 Use ACLOCAL_AMFLAGS in hexdump + e9f0d48 Add documentation ACLOCAL_AMFLAGS + +2016-12-22 Jerry Lundström + + Release 1.2.1 + + 03018bc More tweaks to thread handling, locking, stopping and errors. + + A situation could occur, because `pcap_thread_stop()` was canceling + and joining threads, that if called from a PCAP thread would result + in a deadlock. + + - `pcap_thread_stop()` can now be safely called from any thread + - PCAP threads are not handled within `pcap_thread_run()` + - Store related system call in `errbuf` for all `PCAP_THREAD_ERRNO` + errors, retrieve system call with `pcap_thread_errbuf()` + - Detach PCAP threads for easier clean up + - Use `pthread_cleanup_push()` to unlock mutex on cancellation + - Use `pcap_breakloop()` and `pthread_cancel()` to correctly + cancel processing + +2016-10-26 Jerry Lundström + + Release 1.2.0 + + Implement callback queue mode which can be used to wait for space in + the queue when it is full to not drop packets. A new queue mode + PCAP_THREAD_QUEUE_MODE_DROP is the default for callback queues and + will just drop packets if the queue is full, this was the old behavior. + + If all of the pcaps are offline and the callback queue mode is to drop + packets then it will be changed to use pthread conditions, otherwise + there is a risk that packets will be dropped if reading packets is + faster then processing them. + + Other changes: + - Fix a deadlock issue that could happen when having multiple pcaps + and using threads with cond mode + - Fix handling of offline pcaps, they can not be put into nonblocking + mode + - Fix uninitialization warnings + + New option in `hexdump`: + - `-C <mode>`: callback queue mode: cond, drop, wait or yield + + Commits: + + c7eabec Fix CID 1371137 + 87cadfc Deadlock fix, handling of offline pcaps and callback queue mode + +2016-10-15 Jerry Lundström + + Release 1.1.2 + + 0b4f6dd Need to stop threads before exiting `pcap_thread_run()` + +2016-08-26 Jerry Lundström + + Release 1.1.1 + + 0a06702 Fix Coverity CID 143102 (#1 of 1): Buffer not null terminated + +2016-08-25 Jerry Lundström + + Release 1.1.0 + + New features: + - `pcap_thread_next()`, will step through the pcaps and process + one packet at a time starting with the first pcap open/add'ed + and then looping around. + - `pcap_thread_next_reset()`, resets the internal so that next + call with `pcap_thread_next()` will start again with the first + pcap open/add'ed. + - `pcap_thread_timedrun()`/`pcap_thread_set_timedrun()` can be + used to do a timed run which means that `pcap_thread_run()` will + return a short while after the `struct timeval` time has passed. + - New options to `hexdump`: + `-A <secs>` exit after a number of seconds + `-c <count>` process count packets then exit + + Bug/tweak fixes: + - Fix behavior of the none threaded engine part of `pcap_thread_run()`, + will end only after all pcaps are done. + - Various error handling + + Commits: + + 88715da Add `pcap_thread_next_reset()` to reset the stepping and + begin all over again + 582c63d Taking the next step + 281ebe4 Timed run and errors + 76d1739 No threads, same behavior + 7186e31 Update README with CPP/CXX flags for C++ + +2016-08-22 Jerry Lundström + + Release 1.0.1 + + b475589 Use -Wall when compiling, fix a few warnings and a oops in + `pcap_thread_stop()` + +2016-08-21 Jerry Lundström + + Release 1.0.0 + + First version with basic pthreads support and fallback to `select()` + on pcaps file descriptors in non-blocking mode. Three different queue + modes exists for threaded mode when processing packets; `cond` which + uses pthread conditions, `wait` which uses `select()` to unconditionally + wait a while and `yield` which uses `sched_yield()` (if supported) if + there are no packets to process. + + The example program `hexdump` is included which is a "show and tell" + of how to use pcap_thread. The program is a simple `tcpdump` clone + which will output packets in hexadecimal. + + Commit: + + f5f5237 Add -V for version + 24cb009 Stats and more + c9b892a Fix #4: add `pcap_thread_strerr()` and better error handling + in hexdump + 770f675 Check that we have libpcap and headers + dddea7d Skip timestamp options in help if they are not supported + 81a7c5e Timestamp type/precision not available everywhere + 5e2e9da Add travis + bf3eec9 Fix #6: Offline support and hexdump + 5109651 Fix set_filter compile warning + 6fee1a9 Keep inside the yellow line, thanks + 740bc37 Correct Makefile.am instructions, add datalink and fix + read/write buffer. + 6574254 More ignore + 641deed Fix typos + 1388c62 Add version + 24b91c0 Initial commit diff --git a/src/pcap-thread/LICENSE b/src/pcap-thread/LICENSE new file mode 100644 index 0000000..e0ec689 --- /dev/null +++ b/src/pcap-thread/LICENSE @@ -0,0 +1,34 @@ +pcap-thread - PCAP helper library with POSIX threads support + +Author Jerry Lundström <jerry@dns-oarc.net> +Copyright (c) 2016-2023, OARC, Inc. +All rights reserved. + +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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/src/pcap-thread/README.md b/src/pcap-thread/README.md new file mode 100644 index 0000000..cbab354 --- /dev/null +++ b/src/pcap-thread/README.md @@ -0,0 +1,119 @@ +# pcap-thread + +PCAP helper library with POSIX threads support and transport layer callbacks + +## About + +This is a helper library that will initialize the `pcap_t` for you and, +if you have support, launch a thread per `pcap_t` for the collection which +is then feeded back to the main thread using a queue before being passed on +to the callback. + +Additional callbacks exists for simplifying the handling of various transport +layers, based on [pcap_layers](https://github.com/wessels/pcap_layers) by +Duane Wessels (The Measurement Factory, Inc.), such as ether, VLAN, IP, IPv4, +IPv6, GRE tunnels, UDP and TCP. + +## Usage + +Here is a short example how to use this helper, see the hexdump directory +for a more complete example. + +```c +#include "config.h" +#include "pcap-thread/pcap_thread.h" + +void callback(u_char* user, const struct pcap_pkthdr* packet_header, const u_char* packet, int datalink_type) { + ... +} + +int main(void) { + pcap_thread_t pt = PCAP_THREAD_T_INIT; + + pcap_thread_set_snaplen(&pt, 65535); + pcap_thread_set_filter(&pt, "port 80", 7); + pcap_thread_set_callback(&pt, callback); + pcap_thread_open(&pt, "eth0", 0); + pcap_thread_open(&pt, "lo", 0); + pcap_thread_run(&pt); + pcap_thread_close(&pt); + + return 0; +} +``` + +### git submodule + +```shell +git submodule init +git submodule add https://github.com/DNS-OARC/pcap-thread.git src/pcap-thread +git submodule update --init --recursive +``` + +### auto(re)conf + +```shell +autoreconf ... --include=src/pcap-thread/m4 +``` + +### configure.ac + +```m4 +AX_PCAP_THREAD +``` + +### Top level Makefile.am + +```m4 +ACLOCAL_AMFLAGS = ... -I src/pcap-thread/m4 +``` + +### Makefile.am + +```m4 +AM_CFLAGS += $(PTHREAD_CFLAGS) +AM_CPPFLAGS += $(PTHREAD_CFLAGS) +AM_CXXFLAGS += $(PTHREAD_CFLAGS) + +program_SOURCES += pcap-thread/pcap-thread.c +dist_program_SOURCES += pcap-thread/pcap-thread.h +program_LDADD += $(PTHREAD_LIBS) +``` + +## Author(s) + +Jerry Lundström <jerry@dns-oarc.net> + +## Copyright and license + +Copyright (c) 2016-2023, OARC, Inc. +All rights reserved. + +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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/src/pcap-thread/fmt.sh b/src/pcap-thread/fmt.sh new file mode 100755 index 0000000..c71fc4e --- /dev/null +++ b/src/pcap-thread/fmt.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +clang-format \ + -style=file \ + -i \ + pcap_thread*.c \ + pcap_thread*.h \ + hexdump/hexdump.c diff --git a/src/pcap-thread/hexdump/.gitignore b/src/pcap-thread/hexdump/.gitignore new file mode 100644 index 0000000..39bbc74 --- /dev/null +++ b/src/pcap-thread/hexdump/.gitignore @@ -0,0 +1,24 @@ +Makefile.in +aclocal.m4 +autom4te.cache/ +compile +config.guess +config.h.in~ +config.sub +configure +depcomp +install-sh +missing +Makefile +config.h +config.log +config.status +pcap_thread.c +pcap_thread.h +stamp-h1 +hexdump +test-driver +build/ +config.h.in +test/*.dist +m4/ diff --git a/src/pcap-thread/hexdump/Makefile.am b/src/pcap-thread/hexdump/Makefile.am new file mode 100644 index 0000000..2497dc9 --- /dev/null +++ b/src/pcap-thread/hexdump/Makefile.am @@ -0,0 +1,61 @@ +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2016-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +ACLOCAL_AMFLAGS = -I ../m4 + +MAINTAINERCLEANFILES = $(srcdir)/Makefile.in $(srcdir)/config.h.in +CLEANFILES = pcap_thread.c pcap_thread.h \ + pcap_thread_ext_frag.c pcap_thread_ext_frag.h + +SUBDIRS = test + +AM_CFLAGS = -Wall -I$(srcdir) -I$(top_srcdir)/../ $(PTHREAD_CFLAGS) + +bin_PROGRAMS = hexdump + +hexdump_SOURCES = hexdump.c pcap_thread.c pcap_thread_ext_frag.c +hexdump_LDADD = $(PTHREAD_LIBS) + +pcap_thread.c: $(top_srcdir)/../pcap_thread.c pcap_thread.h + cp "$(top_srcdir)/../pcap_thread.c" . + +pcap_thread.h: $(top_srcdir)/../pcap_thread.h + cp "$(top_srcdir)/../pcap_thread.h" . + +pcap_thread_ext_frag.c: $(top_srcdir)/../pcap_thread_ext_frag.c pcap_thread_ext_frag.h + cp "$(top_srcdir)/../pcap_thread_ext_frag.c" . + +pcap_thread_ext_frag.h: $(top_srcdir)/../pcap_thread_ext_frag.h pcap_thread.h + cp "$(top_srcdir)/../pcap_thread_ext_frag.h" . + +test: check diff --git a/src/pcap-thread/hexdump/autogen.sh b/src/pcap-thread/hexdump/autogen.sh new file mode 100755 index 0000000..a72c358 --- /dev/null +++ b/src/pcap-thread/hexdump/autogen.sh @@ -0,0 +1,36 @@ +#!/bin/sh -e +# +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2016-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +autoreconf --force --install --no-recursive --include=../m4 diff --git a/src/pcap-thread/hexdump/configure.ac b/src/pcap-thread/hexdump/configure.ac new file mode 100644 index 0000000..f1650ce --- /dev/null +++ b/src/pcap-thread/hexdump/configure.ac @@ -0,0 +1,72 @@ +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2016-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +AC_PREREQ(2.61) +AC_INIT([hexdump], [2.1.0], [admin@dns-oarc.net], [hexdump], [https://github.com/DNS-OARC/pcap-thread/issues]) +AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects]) +AC_CONFIG_SRCDIR([hexdump.c]) +AC_CONFIG_HEADER([config.h]) +AC_CONFIG_MACRO_DIR([../m4]) + +AC_PROG_CC +AM_PROG_CC_C_O + +# Check --enable-warn-all +AC_ARG_ENABLE([warn-all], [AS_HELP_STRING([--enable-warn-all], [Enable all compiler warnings])], [AX_CFLAGS_WARN_ALL()]) + +# Check --with-extra-cflags +AC_ARG_WITH([extra-cflags], [AS_HELP_STRING([--with-extra-cflags=CFLAGS], [Add extra CFLAGS])], [ + AC_MSG_NOTICE([appending extra CFLAGS... $withval]) + AS_VAR_APPEND(CFLAGS, [" $withval"]) +]) + +# Check --with-extra-ldflags +AC_ARG_WITH([extra-ldflags], [AS_HELP_STRING([--with-extra-ldflags=CFLAGS], [Add extra LDFLAGS])], [ + AC_MSG_NOTICE([appending extra LDFLAGS... $withval]) + AS_VAR_APPEND(LDFLAGS, [" $withval"]) +]) + +AC_HEADER_TIME + +AC_ARG_ENABLE([pthread], + [AS_HELP_STRING([--disable-pthread], + [disable the use of pthread])], + [], + [enable_pthread=yes]) + +AS_IF([test "x$enable_pthread" != xno], + [AX_PCAP_THREAD], + [AX_PCAP_THREAD_PCAP]) + +AC_CONFIG_FILES([Makefile test/Makefile]) +AC_OUTPUT diff --git a/src/pcap-thread/hexdump/hexdump.c b/src/pcap-thread/hexdump/hexdump.c new file mode 100644 index 0000000..f177d52 --- /dev/null +++ b/src/pcap-thread/hexdump/hexdump.c @@ -0,0 +1,880 @@ +/* + * Author Jerry Lundström <jerry@dns-oarc.net> + * Copyright (c) 2016-2023, OARC, Inc. + * All rights reserved. + * + * 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "pcap_thread.h" +#include "pcap_thread_ext_frag.h" + +#include <errno.h> +#include <signal.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#ifdef TIME_WITH_SYS_TIME +#include <sys/time.h> +#include <time.h> +#else +#ifdef HAVE_SYS_TIME_H +#include <sys/time.h> +#else +#include <time.h> +#endif +#endif +#include <unistd.h> + +int report_padding = 0; + +void layer(u_char* user, const pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + const pcap_thread_packet_t* first = packet; + size_t n; + + while (first->have_prevpkt) { + first = first->prevpkt; + } + + if (user) { + printf("name:%s ts:%ld.%ld caplen:%d len:%d datalink:%s %sdata:", + first->name, + (long)first->pkthdr.ts.tv_sec, first->pkthdr.ts.tv_usec, + first->pkthdr.caplen, + first->pkthdr.len, + pcap_datalink_val_to_name(first->dlt), + packet->state == PCAP_THREAD_PACKET_IS_FRAGMENT ? "fragment " : ""); + } else { + printf("%s%s ", + packet->state == PCAP_THREAD_PACKET_IS_FRAGMENT ? "#" : "", + first->name); + } + for (n = 0; n < length; n++) { + printf("%02x", payload[n]); + } + if (report_padding) { + if (packet->have_ippadding) { + printf(" #"); + for (n = 0; n < packet->ippadding; n++) { + printf("%02x", payload[length + n]); + } + } else if (packet->have_ip6padding) { + printf(" #"); + for (n = 0; n < packet->ip6padding; n++) { + printf("%02x", payload[length + n]); + } + } + } + printf("\n"); +} + +void invalid(u_char* user, const pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + const pcap_thread_packet_t* first = packet; + size_t n; + const char* state; + + while (first->have_prevpkt) { + first = first->prevpkt; + } + + switch (packet->state) { + case PCAP_THREAD_PACKET_OK: + state = user ? "OK" : ""; + break; + case PCAP_THREAD_PACKET_INVALID: + state = user ? "invalid" : "-"; + break; + case PCAP_THREAD_PACKET_UNSUPPORTED: + state = user ? "unsupported" : "?"; + break; + case PCAP_THREAD_PACKET_UNPROCESSED: + state = user ? "unprocessed" : "?"; + break; + case PCAP_THREAD_PACKET_INVALID_ETHER: + state = user ? "invalid ether" : "-"; + break; + case PCAP_THREAD_PACKET_INVALID_LINUX_SLL: + state = user ? "invalid linux ssl" : "-"; + break; + case PCAP_THREAD_PACKET_INVALID_NULL: + state = user ? "invalid null" : "-"; + break; + case PCAP_THREAD_PACKET_INVALID_LOOP: + state = user ? "invalid loop" : "-"; + break; + case PCAP_THREAD_PACKET_INVALID_IEEE802: + state = user ? "invalid ieee802" : "-"; + break; + case PCAP_THREAD_PACKET_INVALID_GRE: + state = user ? "invalid gre" : "-"; + break; + case PCAP_THREAD_PACKET_INVALID_IP: + state = user ? "invalid ip" : "-"; + break; + case PCAP_THREAD_PACKET_INVALID_IPV4: + state = user ? "invalid ipv4" : "-"; + break; + case PCAP_THREAD_PACKET_INVALID_IPV6: + state = user ? "invalid ipv6" : "-"; + break; + case PCAP_THREAD_PACKET_INVALID_IPV6HDR: + state = user ? "invalid ipv6hdr" : "-"; + break; + case PCAP_THREAD_PACKET_INVALID_ICMP: + state = user ? "invalid icmp" : "-"; + break; + case PCAP_THREAD_PACKET_INVALID_ICMPV6: + state = user ? "invalid icmpv6" : "-"; + break; + case PCAP_THREAD_PACKET_INVALID_UDP: + state = user ? "invalid udp" : "-"; + break; + case PCAP_THREAD_PACKET_INVALID_TCP: + state = user ? "invalid tcp" : "-"; + break; + case PCAP_THREAD_PACKET_IS_FRAGMENT: + state = user ? "is fragment" : "#"; + break; + case PCAP_THREAD_PACKET_INVALID_FRAGMENT: + state = user ? "invalid fragment(s)" : "#"; + break; + case PCAP_THREAD_PACKET_ENOMEM: + state = user ? "nomem" : "!"; + break; + case PCAP_THREAD_PACKET_EMUTEX: + state = user ? "mutex" : "!"; + break; + default: + state = user ? "UNKNOWN" : "???"; + break; + } + + if (user) { + printf("%s(%d) name:%s ts:%ld.%ld caplen:%d len:%d datalink:%s data:", + state, + packet->state, + first->name, + (long)first->pkthdr.ts.tv_sec, first->pkthdr.ts.tv_usec, + first->pkthdr.caplen, + first->pkthdr.len, + pcap_datalink_val_to_name(first->dlt)); + } else { + printf("%s%s ", state, first->name); + } + for (n = 0; n < length; n++) { + printf("%02x", payload[n]); + } + if (report_padding) { + if (packet->have_ippadding) { + printf(" #"); + for (n = 0; n < packet->ippadding; n++) { + printf("%02x", payload[length + n]); + } + } else if (packet->have_ip6padding) { + printf(" #"); + for (n = 0; n < packet->ip6padding; n++) { + printf("%02x", payload[length + n]); + } + } + } + printf("\n"); +} + +void callback(u_char* user, const struct pcap_pkthdr* pkthdr, const u_char* pkt, const char* name, int dlt) +{ + bpf_u_int32 i; + + if (user) { + printf("name:%s ts:%ld.%ld caplen:%d len:%d datalink:%s data:", + name, + (long)pkthdr->ts.tv_sec, pkthdr->ts.tv_usec, + pkthdr->caplen, + pkthdr->len, + pcap_datalink_val_to_name(dlt)); + } else { + printf("%s ", name); + } + for (i = 0; i < pkthdr->caplen; i++) { + printf("%02x", pkt[i]); + } + printf("\n"); +} + +void dropback(u_char* user, const struct pcap_pkthdr* pkthdr, const u_char* pkt, const char* name, int dlt) +{ + bpf_u_int32 i; + + if (user) { + printf("dropped name:%s ts:%ld.%ld caplen:%d len:%d datalink:%s data:", + name, + (long)pkthdr->ts.tv_sec, pkthdr->ts.tv_usec, + pkthdr->caplen, + pkthdr->len, + pcap_datalink_val_to_name(dlt)); + } else { + printf("!%s ", name); + } + for (i = 0; i < pkthdr->caplen; i++) { + printf("%02x", pkt[i]); + } + printf("\n"); +} + +void stat_callback(u_char* user, const struct pcap_stat* stats, const char* name, int dlt) +{ + if (user) { + printf("stats name:%s datalink:%s received:%u dropped:%u ifdropped:%u\n", + name, + pcap_datalink_val_to_name(dlt), + stats->ps_recv, + stats->ps_drop, + stats->ps_ifdrop); + } else { + printf("+%s %u %u %u\n", name, stats->ps_recv, stats->ps_drop, stats->ps_ifdrop); + } +} + +void ext_frag_callback(const pcap_thread_packet_t* packet, const u_char* payload, size_t length, const pcap_thread_ext_frag_fragments_t* fragments) +{ + pcap_thread_ext_frag_fragment_t* f; + size_t n; + + if (packet->have_iphdr) { + printf("!#(%d) name:%s ts:%ld.%ld datalink:%s offset:%d len:%lu mf:%s data:", + PCAP_THREAD_PACKET_INVALID_FRAGMENT, + packet->name, + (long)packet->pkthdr.ts.tv_sec, packet->pkthdr.ts.tv_usec, + pcap_datalink_val_to_name(packet->dlt), + (packet->iphdr.ip_off & 0x1fff) * 8, + length, + packet->iphdr.ip_off & 0x2000 ? "yes" : "no"); + for (n = 0; n < length; n++) { + printf("%02x", payload[n]); + } + if (report_padding) { + if (packet->have_ippadding) { + printf(" #"); + for (n = 0; n < packet->ippadding; n++) { + printf("%02x", payload[length + n]); + } + } else if (packet->have_ip6padding) { + printf(" #"); + for (n = 0; n < packet->ip6padding; n++) { + printf("%02x", payload[length + n]); + } + } + } + printf("\n"); + } else if (packet->have_ip6frag) { + printf("!#(%d) name:%s ts:%ld.%ld datalink:%s offset:%d len:%lu mf:%s data:", + PCAP_THREAD_PACKET_INVALID_FRAGMENT, + packet->name, + (long)packet->pkthdr.ts.tv_sec, packet->pkthdr.ts.tv_usec, + pcap_datalink_val_to_name(packet->dlt), + ((packet->ip6frag.ip6f_offlg & 0xfff8) >> 3) * 8, + length, + packet->ip6frag.ip6f_offlg & 0x1 ? "yes" : "no"); + for (n = 0; n < length; n++) { + printf("%02x", payload[n]); + } + if (report_padding) { + if (packet->have_ippadding) { + printf(" #"); + for (n = 0; n < packet->ippadding; n++) { + printf("%02x", payload[length + n]); + } + } else if (packet->have_ip6padding) { + printf(" #"); + for (n = 0; n < packet->ip6padding; n++) { + printf("%02x", payload[length + n]); + } + } + } + printf("\n"); + } + + for (f = fragments->fragments; f; f = f->next) { + printf("#(%d) name:%s ts:%ld.%ld datalink:%s offset:%lu len:%lu mf:%s data:", + PCAP_THREAD_PACKET_IS_FRAGMENT, + packet->name, + (long)packet->pkthdr.ts.tv_sec, packet->pkthdr.ts.tv_usec, + pcap_datalink_val_to_name(packet->dlt), + f->offset, + f->length, + f->flag_more_fragments ? "yes" : "no"); + for (n = 0; n < f->length; n++) { + printf("%02x", f->payload[n]); + } + if (report_padding) { + if (packet->have_ippadding) { + printf(" #"); + for (n = 0; n < packet->ippadding; n++) { + printf("%02x", payload[length + n]); + } + } else if (packet->have_ip6padding) { + printf(" #"); + for (n = 0; n < packet->ip6padding; n++) { + printf("%02x", payload[length + n]); + } + } + } + printf("\n"); + } +} + +pcap_thread_t pt = PCAP_THREAD_T_INIT; // lgtm [cpp/short-global-name] +pcap_thread_pcaplist_t __pcaplist_not_used = PCAP_THREAD_PCAPLIST_T_INIT; + +void stop(int signum) +{ + pcap_thread_stop(&pt); +} + +#define MAX_INTERFACES 64 +#define MAX_FILTER_SIZE 64 * 1024 + +int do_next(int cnt) +{ + int ret; + + while (cnt--) { + if ((ret = pcap_thread_next(&pt))) { + return ret; + } + } + return PCAP_THREAD_OK; +} + +int main(int argc, char** argv) +{ + int opt, err = 0, ret = 0, interface = 0, verbose = 0, i, stats = 0, cnt = 0, layers = 0, defrag_ipv4 = 0, defrag_ipv6 = 0; + char* interfaces[MAX_INTERFACES]; + char is_file[MAX_INTERFACES]; + char filter[MAX_FILTER_SIZE]; + char* filterp = filter; + size_t filter_left = MAX_FILTER_SIZE; + struct sigaction sa; + time_t exit_after_time = 0; + + pcap_thread_ext_frag_conf_t ipv4_frag_conf = PCAP_THREAD_EXT_FRAG_CONF_T_INIT; + pcap_thread_ext_frag_conf_t ipv6_frag_conf = PCAP_THREAD_EXT_FRAG_CONF_T_INIT; + + memset(is_file, 0, MAX_INTERFACES); + memset(&sa, 0, sizeof(struct sigaction)); + + sa.sa_handler = stop; + sigfillset(&sa.sa_mask); + if ((ret = sigaction(SIGINT, &sa, 0))) { + fprintf(stderr, "sigaction(SIGINT) error %d: %s\n", errno, strerror(errno)); + exit(4); + } + if ((ret = sigaction(SIGHUP, &sa, 0))) { + fprintf(stderr, "sigaction(SIGHUP) error %d: %s\n", errno, strerror(errno)); + exit(4); + } + + while ((opt = getopt(argc, argv, "T:M:C:s:p:m:t:b:I:d:o:n:S:i:W:a:vr:H:P:hDVA:c:L:F:G")) != -1) { + switch (opt) { + case 'T': + ret = pcap_thread_set_use_threads(&pt, atoi(optarg) ? 1 : 0); + break; + case 'M': + if (!strcmp("cond", optarg)) + ret = pcap_thread_set_queue_mode(&pt, PCAP_THREAD_QUEUE_MODE_COND); + else if (!strcmp("wait", optarg)) + ret = pcap_thread_set_queue_mode(&pt, PCAP_THREAD_QUEUE_MODE_WAIT); + else if (!strcmp("yield", optarg)) + ret = pcap_thread_set_queue_mode(&pt, PCAP_THREAD_QUEUE_MODE_YIELD); + else if (!strcmp("direct", optarg)) + ret = pcap_thread_set_queue_mode(&pt, PCAP_THREAD_QUEUE_MODE_DIRECT); + else + err = -1; + break; + case 'C': + if (!strcmp("cond", optarg)) + ret = pcap_thread_set_callback_queue_mode(&pt, PCAP_THREAD_QUEUE_MODE_COND); + else if (!strcmp("drop", optarg)) + ret = pcap_thread_set_callback_queue_mode(&pt, PCAP_THREAD_QUEUE_MODE_DROP); + else if (!strcmp("wait", optarg)) + ret = pcap_thread_set_callback_queue_mode(&pt, PCAP_THREAD_QUEUE_MODE_WAIT); + else if (!strcmp("yield", optarg)) + ret = pcap_thread_set_callback_queue_mode(&pt, PCAP_THREAD_QUEUE_MODE_YIELD); + else + err = -1; + break; + case 's': + ret = pcap_thread_set_snaplen(&pt, atoi(optarg)); + break; + case 'p': + ret = pcap_thread_set_promiscuous(&pt, atoi(optarg) ? 1 : 0); + break; + case 'm': + ret = pcap_thread_set_monitor(&pt, atoi(optarg) ? 1 : 0); + break; + case 't': + ret = pcap_thread_set_timeout(&pt, atoi(optarg)); + break; + case 'b': + ret = pcap_thread_set_buffer_size(&pt, atoi(optarg)); + break; + case 'I': + ret = pcap_thread_set_immediate_mode(&pt, atoi(optarg) ? 1 : 0); + break; + case 'd': + if (!strcmp("in", optarg)) + ret = pcap_thread_set_direction(&pt, PCAP_D_IN); + else if (!strcmp("out", optarg)) + ret = pcap_thread_set_direction(&pt, PCAP_D_OUT); + else if (!strcmp("inout", optarg)) + ret = pcap_thread_set_direction(&pt, PCAP_D_INOUT); + else + err = -1; + break; + case 'o': + ret = pcap_thread_set_filter_optimize(&pt, atoi(optarg) ? 1 : 0); + break; + case 'n': { + unsigned int netmask[4] = { 0, 0, 0, 0 }; + if (sscanf(optarg, "%u.%u.%u.%u", &netmask[0], &netmask[1], &netmask[2], &netmask[3]) == 4 + && netmask[0] < 256 + && netmask[1] < 256 + && netmask[2] < 256 + && netmask[3] < 256) { + /* TODO: Is this correct? */ + bpf_u_int32 n = ((netmask[0] & 0xff) << 24) + + ((netmask[1] & 0xff) << 16) + + ((netmask[2] & 0xff) << 8) + + (netmask[3] & 0xff); + ret = pcap_thread_set_filter_netmask(&pt, n); + } else + err = -1; + } break; + case 'S': + ret = pcap_thread_set_queue_size(&pt, atoi(optarg)); + break; + case 'i': + if (interface != MAX_INTERFACES) + interfaces[interface++] = strdup(optarg); + else + err = -1; + break; + case 'r': + if (interface != MAX_INTERFACES) { + is_file[interface] = 1; + interfaces[interface++] = strdup(optarg); + } else + err = -1; + break; + case 'W': { + struct timeval t = { 0, 0 }; + + t.tv_sec = atoi(optarg) / 1000000; + t.tv_usec = atoi(optarg) % 1000000; + + ret = pcap_thread_set_queue_wait(&pt, t); + } break; + case 'a': + if (atoi(optarg)) + pcap_thread_set_activate_mode(&pt, PCAP_THREAD_ACTIVATE_MODE_DELAYED); + break; + case 'v': + verbose = 1; + break; + case 'H': +#ifdef HAVE_PCAP_SET_TSTAMP_TYPE + if (!strcmp("host", optarg)) + ret = pcap_thread_set_timestamp_type(&pt, PCAP_TSTAMP_HOST); + else if (!strcmp("host_lowprec", optarg)) + ret = pcap_thread_set_timestamp_type(&pt, PCAP_TSTAMP_HOST_LOWPREC); + else if (!strcmp("host_hiprec", optarg)) + ret = pcap_thread_set_timestamp_type(&pt, PCAP_TSTAMP_HOST_HIPREC); + else if (!strcmp("adapter", optarg)) + ret = pcap_thread_set_timestamp_type(&pt, PCAP_TSTAMP_ADAPTER); + else if (!strcmp("adapter_unsynced", optarg)) + ret = pcap_thread_set_timestamp_type(&pt, PCAP_TSTAMP_ADAPTER_UNSYNCED); + else + err = -1; +#else + err = -2; +#endif + break; + case 'P': +#ifdef HAVE_PCAP_SET_TSTAMP_PRECISION + if (!strcmp("micro", optarg)) + ret = pcap_thread_set_timestamp_precision(&pt, PCAP_TSTAMP_PRECISION_MICRO); + else if (!strcmp("nano", optarg)) + ret = pcap_thread_set_timestamp_type(&pt, PCAP_TSTAMP_PRECISION_NANO); + else + err = -1; +#else + err = -2; +#endif + break; + case 'h': + printf( + "usage: hexdump [options] [filter]\n" + " -A <secs> exit after a number of seconds\n" + " -c <count> process count packets then exit\n" + " -T <1|0> use/not use threads\n" + " -M <mode> queue mode: cond, wait or yield\n" + " -C <mode> callback queue mode: cond, drop, wait, yield or direct\n" + " -s <len> snap length\n" + " -p <1|0> use/not use promiscuous mode\n" + " -m <1|0> use/not use monitor mode\n" + " -t <ms> timeout\n" + " -b <bytes> buffer size\n" + " -I <1|0> use/not use immediate mode\n" + " -d <dir> direction: in, out or inout\n" + " -o <1|0> use/not use filter optimization\n" + " -n <mask> filter netmask\n" + " -S <size> queue size\n" + " -i <name> interface (multiple)\n" + " -r <file> pcap savefile (multiple)\n" + " -W <usec> queue wait\n" + " -a <1|0> use/not use delayed activation of interface capturing\n" + " -v verbose\n" +#ifdef HAVE_PCAP_SET_TSTAMP_TYPE + " -H <type> timestamp type: host, host_lowprec, host_hiprec, adapter\n" + " or adapter_unsynced\n" +#endif +#ifdef HAVE_PCAP_SET_TSTAMP_PRECISION + " -P <type> timestamp precision: micro or nano\n" +#endif + " -L <layer> capture at layer: ether, null, loop, ieee802, gre, ip,\n" + " ipv4, ipv6, icmp, icmpv6, udp or tcp\n" + " -F <ip proto> defragment packets for IP protocol: 4, 6\n" + " -F m<ip prot><num> set maximum number of fragments\n" + " -F p<ip prot><num> set maximum number of fragments per packet\n" + " -F R<ip proto> set rejection of overlapping fragments\n" + " -F t<ip prot>[sec] enable checking of timed out fragments and optionally\n" + " set the timeout in seconds\n" + " -F d<ip pro><what> enable reporting of: overlap, timeout\n" + " -G report padding if any\n" + " -D display stats on exit\n" + " -V display version and exit\n" + " -h this\n"); + exit(0); + case 'D': + stats = 1; + break; + case 'V': + printf("hexdump version %s (pcap_thread version %s)\n", + PACKAGE_VERSION, + PCAP_THREAD_VERSION_STR); + exit(0); + case 'A': + exit_after_time = atoi(optarg); + break; + case 'c': + cnt = atoi(optarg); + break; + case 'L': + if (!strcmp("ether", optarg)) + ret = pcap_thread_set_callback_ether(&pt, &layer); + else if (!strcmp("null", optarg)) + ret = pcap_thread_set_callback_null(&pt, &layer); + else if (!strcmp("loop", optarg)) + ret = pcap_thread_set_callback_loop(&pt, &layer); + else if (!strcmp("ieee802", optarg)) + ret = pcap_thread_set_callback_ieee802(&pt, &layer); + else if (!strcmp("gre", optarg)) + ret = pcap_thread_set_callback_gre(&pt, &layer); + else if (!strcmp("ip", optarg)) + ret = pcap_thread_set_callback_ip(&pt, &layer); + else if (!strcmp("ipv4", optarg)) + ret = pcap_thread_set_callback_ipv4(&pt, &layer); + else if (!strcmp("ipv6", optarg)) + ret = pcap_thread_set_callback_ipv6(&pt, &layer); + else if (!strcmp("icmp", optarg)) + ret = pcap_thread_set_callback_icmp(&pt, &layer); + else if (!strcmp("icmpv6", optarg)) + ret = pcap_thread_set_callback_icmpv6(&pt, &layer); + else if (!strcmp("udp", optarg)) + ret = pcap_thread_set_callback_udp(&pt, &layer); + else if (!strcmp("tcp", optarg)) + ret = pcap_thread_set_callback_tcp(&pt, &layer); + else + err = -1; + + if (ret == PCAP_THREAD_OK) + ret = pcap_thread_set_use_layers(&pt, 1); + + layers = 1; + break; + case 'F': + if (!strcmp("4", optarg)) + defrag_ipv4 = 1; + else if (!strcmp("6", optarg)) + defrag_ipv6 = 1; + else if (strlen(optarg) > 2 && optarg[0] == 'm') { + int max = atoi(&optarg[2]); + if (max > 0 && optarg[1] == '4') + ret = pcap_thread_ext_frag_conf_set_fragments(&ipv4_frag_conf, max); + else if (max > 0 && optarg[1] == '6') + ret = pcap_thread_ext_frag_conf_set_fragments(&ipv6_frag_conf, max); + else + err = -1; + } else if (strlen(optarg) > 2 && optarg[0] == 'p') { + int max = atoi(&optarg[2]); + if (max > 0 && optarg[1] == '4') + ret = pcap_thread_ext_frag_conf_set_per_packet(&ipv4_frag_conf, max); + else if (max > 0 && optarg[1] == '6') + ret = pcap_thread_ext_frag_conf_set_per_packet(&ipv6_frag_conf, max); + else + err = -1; + } else if (!strcmp("R4", optarg)) { + ret = pcap_thread_ext_frag_conf_set_reject_overlap(&ipv4_frag_conf, 1); + } else if (!strcmp("R6", optarg)) { + ret = pcap_thread_ext_frag_conf_set_reject_overlap(&ipv6_frag_conf, 1); + } else if (!strcmp("t4", optarg)) { + ret = pcap_thread_ext_frag_conf_set_check_timeout(&ipv4_frag_conf, 1); + } else if (!strcmp("t6", optarg)) { + ret = pcap_thread_ext_frag_conf_set_check_timeout(&ipv6_frag_conf, 1); + } else if (strlen(optarg) > 2 && optarg[0] == 't') { + int max = atoi(&optarg[2]); + struct timeval ts = { 0, 0 }; + ts.tv_sec = max; + if (max > 0 && optarg[1] == '4') { + ret = pcap_thread_ext_frag_conf_set_timeout(&ipv4_frag_conf, ts); + if (!ret) + ret = pcap_thread_ext_frag_conf_set_check_timeout(&ipv4_frag_conf, 1); + } else if (max > 0 && optarg[1] == '6') { + ret = pcap_thread_ext_frag_conf_set_timeout(&ipv6_frag_conf, ts); + if (!ret) + ret = pcap_thread_ext_frag_conf_set_check_timeout(&ipv6_frag_conf, 1); + } else + err = -1; + } else if (strlen(optarg) > 2 && optarg[0] == 'd') { + if (optarg[1] == '4') { + if (!strcmp("overlap", &optarg[2])) + ret = pcap_thread_ext_frag_conf_set_overlap_callback(&ipv4_frag_conf, ext_frag_callback); + else if (!strcmp("timeout", &optarg[2])) + ret = pcap_thread_ext_frag_conf_set_timeout_callback(&ipv4_frag_conf, ext_frag_callback); + else + ret = -1; + } else if (optarg[1] == '6') { + if (!strcmp("overlap", &optarg[2])) + ret = pcap_thread_ext_frag_conf_set_overlap_callback(&ipv6_frag_conf, ext_frag_callback); + else if (!strcmp("timeout", &optarg[2])) + ret = pcap_thread_ext_frag_conf_set_timeout_callback(&ipv6_frag_conf, ext_frag_callback); + else + ret = -1; + } else + err = -1; + } else + err = -1; + break; + case 'G': + report_padding = 1; + break; + default: + err = -1; + } + } + + if (err == -2) { // lgtm [cpp/constant-comparison] + fprintf(stderr, "Unsupported argument(s)\n"); + exit(1); + } + if (err == -1) { + fprintf(stderr, "Invalid argument(s)\n"); + exit(1); + } + if (ret == PCAP_THREAD_EPCAP) { + fprintf(stderr, "pcap error [%d]: %s (%s)\n", pcap_thread_status(&pt), pcap_statustostr(pcap_thread_status(&pt)), pcap_thread_errbuf(&pt)); + exit(2); + } + if (ret == PCAP_THREAD_ERRNO) { + fprintf(stderr, "system error [%d]: %s (%s)\n", errno, strerror(errno), pcap_thread_errbuf(&pt)); + exit(2); + } + if (ret) { + fprintf(stderr, "pcap_thread error [%d]: %s\n", ret, pcap_thread_strerr(ret)); + exit(2); + } + + memset(filter, 0, MAX_FILTER_SIZE); + while (optind < argc) { + size_t len = strlen(argv[optind]); + + if ((len + 1) > filter_left) { + fprintf(stderr, "Filter too long\n"); + exit(3); + } + if (filter_left != MAX_FILTER_SIZE) { + memcpy(filterp, " ", 1); + filterp++; + filter_left--; + } + memcpy(filterp, argv[optind++], len); + filterp += len; + filter_left -= len; + } + + if (verbose) { + printf("use_threads: %s\n", pcap_thread_use_threads(&pt) ? "yes" : "no"); + printf("queue_mode: "); + switch (pcap_thread_queue_mode(&pt)) { + case PCAP_THREAD_QUEUE_MODE_COND: + printf("cond\n"); + break; + case PCAP_THREAD_QUEUE_MODE_WAIT: + printf("wait\n"); + break; + case PCAP_THREAD_QUEUE_MODE_YIELD: + printf("yield\n"); + break; + default: + printf("unknown\n"); + } + printf("queue_wait: "); + { + struct timeval t = pcap_thread_queue_wait(&pt); + printf("%ld.%ld\n", (long)t.tv_sec, t.tv_usec); + } + printf("queue_size: %lu\n", pcap_thread_queue_size(&pt)); + printf("snaplen: %d\n", pcap_thread_snaplen(&pt)); + printf("promiscuous: %s\n", pcap_thread_promiscuous(&pt) ? "yes" : "no"); + printf("monitor: %s\n", pcap_thread_monitor(&pt) ? "yes" : "no"); + printf("timeout: %d\n", pcap_thread_timeout(&pt)); + printf("buffer_size: %d\n", pcap_thread_buffer_size(&pt)); + printf("immediate_mode: %s\n", pcap_thread_immediate_mode(&pt) ? "yes" : "no"); + printf("direction: "); + switch (pcap_thread_direction(&pt)) { + case PCAP_D_IN: + printf("in\n"); + break; + case PCAP_D_OUT: + printf("out\n"); + break; + case PCAP_D_INOUT: + printf("inout\n"); + break; + default: + printf("unknown\n"); + } + printf("filter_optimize: %s\n", pcap_thread_filter_optimize(&pt) ? "yes" : "no"); + printf("filter_netmask: 0x%x\n", pcap_thread_filter_netmask(&pt)); + printf("filter: %s\n", filter); + printf("defrag_ipv4: %s\n", defrag_ipv4 ? "yes" : "no"); + printf("defrag_ipv6: %s\n", defrag_ipv6 ? "yes" : "no"); + printf("max_ipv4_fragments: %lu\n", pcap_thread_ext_frag_conf_fragments(&ipv4_frag_conf)); + printf("max_ipv4_fragments_per_packet: %lu\n", pcap_thread_ext_frag_conf_per_packet(&ipv4_frag_conf)); + printf("max_ipv6_fragments: %lu\n", pcap_thread_ext_frag_conf_fragments(&ipv6_frag_conf)); + printf("max_ipv6_fragments_per_packet: %lu\n", pcap_thread_ext_frag_conf_per_packet(&ipv6_frag_conf)); + printf("check_frag_timeout_ipv4: %s\n", pcap_thread_ext_frag_conf_check_timeout(&ipv4_frag_conf) ? "yes" : "no"); + printf("check_frag_timeout_ipv6: %s\n", pcap_thread_ext_frag_conf_check_timeout(&ipv6_frag_conf) ? "yes" : "no"); + printf("frag_timeout_ipv4: %ld\n", (long)(pcap_thread_ext_frag_conf_timeout(&ipv4_frag_conf).tv_sec)); + printf("frag_timeout_ipv6: %ld\n", (long)(pcap_thread_ext_frag_conf_timeout(&ipv6_frag_conf).tv_sec)); + } + + if (exit_after_time) { + struct timeval tv = { 0, 0 }; + + tv.tv_sec = exit_after_time; + pcap_thread_set_timedrun(&pt, tv); + } + + if (filterp != filter && (ret = pcap_thread_set_filter(&pt, filter, filterp - filter))) + fprintf(stderr, "filter "); + else if (!layers && (ret = pcap_thread_set_callback(&pt, callback))) + fprintf(stderr, "set callback "); + else if ((ret = pcap_thread_set_dropback(&pt, dropback))) + fprintf(stderr, "set dropback "); + else if (layers && (ret = pcap_thread_set_callback_invalid(&pt, invalid))) + fprintf(stderr, "set invalid callback "); + else if (layers && defrag_ipv4 && (ret = pcap_thread_set_callback_ipv4_frag(&pt, pcap_thread_ext_frag_layer_callback(&ipv4_frag_conf)))) + fprintf(stderr, "set callback ipv4 frag "); + else if (layers && defrag_ipv6 && (ret = pcap_thread_set_callback_ipv6_frag(&pt, pcap_thread_ext_frag_layer_callback(&ipv6_frag_conf)))) + fprintf(stderr, "set callback ipv6 frag "); + else { + for (i = 0; i < interface; i++) { + if (is_file[i]) { + if (verbose) + printf("file: %s\n", interfaces[i]); + if ((ret = pcap_thread_open_offline(&pt, interfaces[i], verbose ? (u_char*)1 : 0))) { + fprintf(stderr, "file:%s ", interfaces[i]); + break; + } + if (pcap_thread_filter_errno(&pt)) { + printf("non-fatal filter errno [%d]: %s\n", pcap_thread_filter_errno(&pt), strerror(pcap_thread_filter_errno(&pt))); + } + } else { + if (verbose) + printf("interface: %s\n", interfaces[i]); + if ((ret = pcap_thread_open(&pt, interfaces[i], verbose ? (u_char*)1 : 0))) { + fprintf(stderr, "interface:%s ", interfaces[i]); + break; + } + if (pcap_thread_filter_errno(&pt)) { + printf("non-fatal filter errno [%d]: %s\n", pcap_thread_filter_errno(&pt), strerror(pcap_thread_filter_errno(&pt))); + } + } + } + if (verbose) { + printf("snapshot: %d\n", pcap_thread_snapshot(&pt)); + } + + if (ret) + fprintf(stderr, "open "); + else if (cnt && (ret = do_next(cnt))) + fprintf(stderr, "next "); + else if (!cnt && pcap_thread_activate_mode(&pt) == PCAP_THREAD_ACTIVATE_MODE_DELAYED && (ret = pcap_thread_activate(&pt))) + fprintf(stderr, "activate "); + else if (!cnt && (ret = pcap_thread_run(&pt))) + fprintf(stderr, "run "); + else if (stats && (ret = pcap_thread_stats(&pt, stat_callback, verbose ? (u_char*)1 : 0))) + fprintf(stderr, "stats "); + else if (!ret && (ret = pcap_thread_close(&pt))) + fprintf(stderr, "close "); + + if (pcap_thread_activate_mode(&pt) == PCAP_THREAD_ACTIVATE_MODE_DELAYED && pcap_thread_filter_errno(&pt)) { + printf("non-fatal filter errno [%d]: %s\n", pcap_thread_filter_errno(&pt), strerror(pcap_thread_filter_errno(&pt))); + } + } + + if (ret == PCAP_THREAD_EPCAP) { + fprintf(stderr, "pcap error [%d]: %s (%s)\n", pcap_thread_status(&pt), pcap_statustostr(pcap_thread_status(&pt)), pcap_thread_errbuf(&pt)); + exit(2); + } + if (ret == PCAP_THREAD_ERRNO) { + fprintf(stderr, "system error [%d]: %s (%s)\n", errno, strerror(errno), pcap_thread_errbuf(&pt)); + exit(2); + } + if (ret) { + fprintf(stderr, "pcap_thread error [%d]: %s\n", ret, pcap_thread_strerr(ret)); + exit(2); + } + + return 0; +} diff --git a/src/pcap-thread/hexdump/test/.gitignore b/src/pcap-thread/hexdump/test/.gitignore new file mode 100644 index 0000000..d3915a0 --- /dev/null +++ b/src/pcap-thread/hexdump/test/.gitignore @@ -0,0 +1,3 @@ +dns.out +test*.log +test*.trs diff --git a/src/pcap-thread/hexdump/test/Makefile.am b/src/pcap-thread/hexdump/test/Makefile.am new file mode 100644 index 0000000..a34fa61 --- /dev/null +++ b/src/pcap-thread/hexdump/test/Makefile.am @@ -0,0 +1,122 @@ +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +MAINTAINERCLEANFILES = $(srcdir)/Makefile.in -rf bad-packets + +CLEANFILES = test*.log test*.trs \ + *.pcap-dist \ + dns.out \ + test2.out \ + test4.out \ + test5.out \ + test6.out \ + test7.out + +TESTS = test1.sh test2.sh \ + test3_120_1120.sh test3_120_1240.sh test3_120_1400.sh test3_120_1800.sh \ + test3_120_900.sh test3_1255_2123.sh test3_1255_2345.sh test3_1255_2566.sh \ + test3_1400_2123.sh test3_1400_2345.sh test3_1400_2566.sh \ + test3_1600_2123.sh test3_1600_2345.sh test3_1600_2566.sh test3_34_1120.sh \ + test3_34_1240.sh test3_34_1400.sh test3_34_1800.sh test3_34_900.sh \ + test3_890_1120.sh test3_890_1240.sh test3_890_1400.sh test3_890_1800.sh \ + test3_890_900.sh \ + test4.sh \ + test5.sh \ + test6.sh \ + test7.sh + +test1.sh: dns.pcap-dist + +test2.sh: v4_frag_dup_udp.pcap-dist v4_frag_empty_udp.pcap-dist \ + v4_frag_nomf_udp.pcap-dist v4_frag_offset_offbyone1_udp.pcap-dist \ + v4_frag_offset_offbyone2_udp.pcap-dist v4_frag_order_udp.pcap-dist \ + v4_frag_skip_first_udp.pcap-dist v4_frag_skip_last_udp.pcap-dist \ + v4_frag_skip_middle_udp.pcap-dist \ + v4_frag_dup_tcp.pcap-dist v4_frag_empty_tcp.pcap-dist \ + v4_frag_nomf_tcp.pcap-dist v4_frag_offset_offbyone1_tcp.pcap-dist \ + v4_frag_offset_offbyone2_tcp.pcap-dist v4_frag_order_tcp.pcap-dist \ + v4_frag_skip_first_tcp.pcap-dist v4_frag_skip_last_tcp.pcap-dist \ + v4_frag_skip_middle_tcp.pcap-dist + +test4.sh: v6_frag_dup_udp.pcap-dist v6_frag_empty_udp.pcap-dist \ + v6_frag_nomf_udp.pcap-dist v6_frag_offset_offbyone1_udp.pcap-dist \ + v6_frag_offset_offbyone2_udp.pcap-dist v6_frag_order_udp.pcap-dist \ + v6_frag_skip_first_udp.pcap-dist v6_frag_skip_last_udp.pcap-dist \ + v6_frag_skip_middle_udp.pcap-dist \ + v6_frag_dup_tcp.pcap-dist v6_frag_empty_tcp.pcap-dist \ + v6_frag_nomf_tcp.pcap-dist v6_frag_offset_offbyone1_tcp.pcap-dist \ + v6_frag_offset_offbyone2_tcp.pcap-dist v6_frag_order_tcp.pcap-dist \ + v6_frag_skip_first_tcp.pcap-dist v6_frag_skip_last_tcp.pcap-dist \ + v6_frag_skip_middle_tcp.pcap-dist + +test5.sh: icmp_fuzz.pcap-dist icmpv6_fuzz.pcap-dist + +test6.sh: v4_frag_timeout_udp.pcap-dist v6_frag_timeout_udp.pcap-dist \ + v4_frag_timeout_tcp.pcap-dist v6_frag_timeout_tcp.pcap-dist + +test7.sh: padding.pcap-dist missing_payload.pcap-dist + +cobadpkts: bad-packets/Makefile + cd bad-packets && test -d .git && git pull + +bad-packets/Makefile: + git clone https://github.com/DNS-OARC/bad-packets.git + cd bad-packets && git submodule update --init + +.pcap.pcap-dist: + cp "$<" "$@" + +EXTRA_DIST = $(TESTS) \ + dns.gold dns.pcap \ + v4_frag_dup_udp.pcap v4_frag_empty_udp.pcap v4_frag_nomf_udp.pcap \ + v4_frag_offset_offbyone1_udp.pcap v4_frag_offset_offbyone2_udp.pcap \ + v4_frag_order_udp.pcap v4_frag_skip_first_udp.pcap v4_frag_skip_last_udp.pcap \ + v4_frag_skip_middle_udp.pcap \ + v4_frag_dup_tcp.pcap v4_frag_empty_tcp.pcap v4_frag_nomf_tcp.pcap \ + v4_frag_offset_offbyone1_tcp.pcap v4_frag_offset_offbyone2_tcp.pcap \ + v4_frag_order_tcp.pcap v4_frag_skip_first_tcp.pcap v4_frag_skip_last_tcp.pcap \ + v4_frag_skip_middle_tcp.pcap \ + test2.gold \ + v6_frag_dup_udp.pcap v6_frag_empty_udp.pcap v6_frag_nomf_udp.pcap \ + v6_frag_offset_offbyone1_udp.pcap v6_frag_offset_offbyone2_udp.pcap \ + v6_frag_order_udp.pcap v6_frag_skip_first_udp.pcap v6_frag_skip_last_udp.pcap \ + v6_frag_skip_middle_udp.pcap \ + v6_frag_dup_tcp.pcap v6_frag_empty_tcp.pcap v6_frag_nomf_tcp.pcap \ + v6_frag_offset_offbyone1_tcp.pcap v6_frag_offset_offbyone2_tcp.pcap \ + v6_frag_order_tcp.pcap v6_frag_skip_first_tcp.pcap v6_frag_skip_last_tcp.pcap \ + v6_frag_skip_middle_tcp.pcap \ + test4.gold \ + icmp_fuzz.pcap icmpv6_fuzz.pcap test5.gold \ + v4_frag_timeout_udp.pcap v6_frag_timeout_udp.pcap test6.gold \ + v4_frag_timeout_tcp.pcap v6_frag_timeout_tcp.pcap test6.gold \ + padding.pcap missing_payload.pcap test7.gold diff --git a/src/pcap-thread/hexdump/test/dns.gold b/src/pcap-thread/hexdump/test/dns.gold new file mode 100644 index 0000000..120a483 --- /dev/null +++ b/src/pcap-thread/hexdump/test/dns.gold @@ -0,0 +1,133 @@ +./dns.pcap-dist 56847afe97990242ac11000a0800450000381fc2400040115ec8ac11000a08080808cfcf00350024bc60e7af0100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8c600003f11062c08080808ac11000a0035cfcf00bcc926e7af8180000100010004000406676f6f676c6503636f6d0000010001c00c000100010000002c0004d83adacec00c00020001000268b80006036e7334c00cc00c00020001000268b80006036e7333c00cc00c00020001000268b80006036e7331c00cc00c00020001000268b80006036e7332c00cc06e00010001000268b80004d8ef220ac05c000100010005106a0004d8ef200ac04a00010001000268b80004d8ef240ac03800010001000268b80004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a080045000054281e40004001b366ac11000ad83adace08004f3d5383000155e10858000000003732010000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a0000573d5383000155e10858000000003732010000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a0800450000491fc3400040115eb6ac11000a08080808e1de00350035bc718b510100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8c700003f1105da08080808ac11000a0035e1de010d62848b518180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c0001000119bd001b0f64667730367334372d696e2d663134053165313030036e657400c00c000c0001000119bd00131064667730367334372d696e2d66323036c049c01000020001000117b80010036e733206676f6f676c6503636f6d00c01000020001000117b80006036e7333c083c01000020001000117b80006036e7331c083c01000020001000117b80006036e7334c083c0ad000100010005106a0004d8ef200ac09b00010001000268b80004d8ef240ac0bf00010001000268b80004d8ef260ac07f00010001000268b80004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a0800450000381fc4400040115ec6ac11000a080808089c6b00350024bc6014d90100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8c800003f11062a08080808ac11000a00359c6b00bccf6114d98180000100010004000406676f6f676c6503636f6d0000010001c00c000100010000002c0004d83adacec00c00020001000268b80006036e7331c00cc00c00020001000268b80006036e7332c00cc00c00020001000268b80006036e7333c00cc00c00020001000268b80006036e7334c00cc04a00010001000268b80004d8ef220ac038000100010005106a0004d8ef200ac05c00010001000268b80004d8ef240ac06e00010001000268b80004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a080045000054281f40004001b365ac11000ad83adace0800ab125384000155e1085800000000db5b010000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a080600010800060400010242ac11000aac11000a000000000000ac112a01 +./dns.pcap-dist 0242ac11000a56847afe97990806000108000604000156847afe9799ac112a01000000000000ac11000a +./dns.pcap-dist 56847afe97990242ac11000a080600010800060400020242ac11000aac11000a56847afe9799ac112a01 +./dns.pcap-dist 0242ac11000a56847afe97990806000108000604000256847afe9799ac112a010242ac11000aac11000a +./dns.pcap-dist 56847afe97990242ac11000a08004500003823d4400040115ab6ac11000a08080808944100350024bc6059c60100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8cc00003f11062608080808ac11000a0035944100bc92f859c68180000100010004000406676f6f676c6503636f6d0000010001c00c00010001000000220004d83adacec00c00020001000268ae0006036e7334c00cc00c00020001000268ae0006036e7331c00cc00c00020001000268ae0006036e7332c00cc00c00020001000268ae0006036e7333c00cc05c00010001000268ae0004d8ef220ac04a00010001000510600004d8ef200ac06e00010001000268ae0004d8ef240ac03800010001000268ae0004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a0800450000542d6a40004001ae1aac11000ad83adace0800577d538500015ee108580000000022f0040000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a00005f7d538500015ee108580000000022f0040000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a08004500004923d6400040115aa3ac11000a08080808be1200350035bc71491e0100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8cd00003f1105d408080808ac11000a0035be12010d644b491e8180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c0001000119b3001c1064667730367334372d696e2d66323036053165313030036e657400c00c000c0001000119b300120f64667730367334372d696e2d663134c04ac01000020001000117ae0010036e733206676f6f676c6503636f6d00c01000020001000117ae0006036e7333c083c01000020001000117ae0006036e7334c083c01000020001000117ae0006036e7331c083c0bf00010001000510600004d8ef200ac09b00010001000268ae0004d8ef240ac0ad00010001000268ae0004d8ef260ac07f00010001000268ae0004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a0800450000383d84400040114106ac11000a080808089ff900350024bc6058030100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8ce00003f11062408080808ac11000a00359ff900bc894c58038180000100010004000406676f6f676c6503636f6d0000010001c00c00010001000001290004d83adacec00c00020001000268840006036e7332c00cc00c00020001000268840006036e7334c00cc00c00020001000268840006036e7331c00cc00c00020001000268840006036e7333c00cc03800010001000268840004d8ef220ac05c00010001000510360004d8ef200ac06e00010001000268840004d8ef240ac04a00010001000268840004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a08004500005449b04000400191d4ac11000ad83adace0800aa2a5398000188e10858000000009d2f0d0000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a080600010800060400010242ac11000aac11000a000000000000ac112a01 +./dns.pcap-dist 0242ac11000a56847afe97990806000108000604000256847afe9799ac112a010242ac11000aac11000a +./dns.pcap-dist 56847afe97990242ac11000a080045000038438b400040113affac11000a08080808b07600350024bc60e48e0100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8cf00003f11062308080808ac11000a0035b07600bcec79e48e8180000100010004000406676f6f676c6503636f6d0000010001c00c00010001000001230004d83adacec00c000200010002687e0006036e7332c00cc00c000200010002687e0006036e7333c00cc00c000200010002687e0006036e7331c00cc00c000200010002687e0006036e7334c00cc038000100010002687e0004d8ef220ac05c00010001000510300004d8ef200ac04a000100010002687e0004d8ef240ac06e000100010002687e0004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a0800450000544a32400040019152ac11000ad83adace08002607539a00018fe10858000000002651010000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a00002e07539a00018fe10858000000002651010000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a080045000049438c400040113aedac11000a08080808847c00350035bc71b0c00100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8d000003f1105d108080808ac11000a0035847c010da4b3b0c08180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c000100011983001b0f64667730367334372d696e2d663134053165313030036e657400c00c000c00010001198300131064667730367334372d696e2d66323036c049c010000200010001177e0010036e733306676f6f676c6503636f6d00c010000200010001177e0006036e7334c083c010000200010001177e0006036e7332c083c010000200010001177e0006036e7331c083c0bf00010001000510300004d8ef200ac07f000100010002687e0004d8ef240ac09b000100010002687e0004d8ef260ac0ad000100010002687e0004d8ef220a +./dns.pcap-dist 0242ac11000a56847afe97990806000108000604000156847afe9799ac112a01000000000000ac11000a +./dns.pcap-dist 56847afe97990242ac11000a080600010800060400020242ac11000aac11000a56847afe9799ac112a01 +./dns.pcap-dist 56847afe97990242ac11000a080045000038473f40004011374bac11000a08080808aa2700350024bc60c14b0100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8d300003f11061f08080808ac11000a0035aa2700bc1642c14b8180000100010004000406676f6f676c6503636f6d0000010001c00c000100010000011d0004d83adacec00c00020001000268780006036e7334c00cc00c00020001000268780006036e7333c00cc00c00020001000268780006036e7331c00cc00c00020001000268780006036e7332c00cc06e00010001000268780004d8ef220ac05c000100010005102a0004d8ef200ac04a00010001000268780004d8ef240ac03800010001000268780004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a0800450000544b1e400040019066ac11000ad83adace0800d75b539d000194e10858000000006cf9040000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a0800450000384827400040113663ac11000a08080808d64b00350024bc607bb50100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8d400003f11061e08080808ac11000a0035d64b00bc2fc67bb58180000100010004000406676f6f676c6503636f6d0000010001c00c000100010000011b0004d83adacec00c00020001000268760006036e7332c00cc00c00020001000268760006036e7331c00cc00c00020001000268760006036e7334c00cc00c00020001000268760006036e7333c00cc03800010001000268760004d8ef220ac04a00010001000510280004d8ef200ac06e00010001000268760004d8ef240ac05c00010001000268760004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a0800450000544ce5400040018e9fac11000ad83adace0800113a539f000196e10858000000003019050000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a0000193a539f000196e10858000000003019050000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a0800450000494829400040113650ac11000a08080808e34000350035bc7163590100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8d500003f1105cc08080808ac11000a0035e340010d54e463598180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c00010001197b001c1064667730367334372d696e2d66323036053165313030036e657400c00c000c00010001197b00120f64667730367334372d696e2d663134c04ac01000020001000117760010036e733406676f6f676c6503636f6d00c01000020001000117760006036e7331c083c01000020001000117760006036e7333c083c01000020001000117760006036e7332c083c09b00010001000510280004d8ef200ac0ad00010001000268760004d8ef240ac07f00010001000268760004d8ef260ac0bf00010001000268760004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a08004500003848f9400040113591ac11000a08080808a13200350024bc60f9360100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8d600003f11061c08080808ac11000a0035a13200bce766f9368180000100010004000406676f6f676c6503636f6d0000010001c00c000100010000011a0004d83adacec00c00020001000268750006036e7334c00cc00c00020001000268750006036e7331c00cc00c00020001000268750006036e7333c00cc00c00020001000268750006036e7332c00cc06e00010001000268750004d8ef220ac04a00010001000510270004d8ef200ac05c00010001000268750004d8ef240ac03800010001000268750004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a0800450000544d64400040018e20ac11000ad83adace0800040053a1000197e10858000000003c51050000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a00000c0053a1000197e10858000000003c51050000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a08004500004948fb40004011357eac11000a08080808872f00350035bc7121160100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8d700003f1105ca08080808ac11000a0035872f010d82b421168180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c00010001197a001b0f64667730367334372d696e2d663134053165313030036e657400c00c000c00010001197a00131064667730367334372d696e2d66323036c049c01000020001000117750010036e733106676f6f676c6503636f6d00c01000020001000117750006036e7332c083c01000020001000117750006036e7334c083c01000020001000117750006036e7333c083c07f00010001000510270004d8ef200ac0bf00010001000268750004d8ef240ac0ad00010001000268750004d8ef260ac09b00010001000268750004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a080045000038495b40004011352fac11000a08080808ec1500350024bc60eb620100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8d800003f11061a08080808ac11000a0035ec1500bcaa60eb628180000100010004000406676f6f676c6503636f6d0000010001c00c00010001000001190004d83adacec00c00020001000268740006036e7333c00cc00c00020001000268740006036e7332c00cc00c00020001000268740006036e7334c00cc00c00020001000268740006036e7331c00cc04a00010001000268740004d8ef220ac06e00010001000510260004d8ef200ac03800010001000268740004d8ef240ac05c00010001000268740004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a0800450000544e1f400040018d65ac11000ad83adace080099c653a3000198e1085800000000a588050000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a0000a1c653a3000198e1085800000000a588050000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a080045000049495d40004011351cac11000a08080808911d00350035bc71afb90100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8d900003f1105c808080808ac11000a0035911d010d6ea7afb98180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c000100011979001c1064667730367334372d696e2d66323036053165313030036e657400c00c000c00010001197900120f64667730367334372d696e2d663134c04ac01000020001000117740010036e733406676f6f676c6503636f6d00c01000020001000117740006036e7333c083c01000020001000117740006036e7331c083c01000020001000117740006036e7332c083c0ad00010001000510260004d8ef200ac09b00010001000268740004d8ef240ac07f00010001000268740004d8ef260ac0bf00010001000268740004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a080045000038498d4000401134fdac11000a08080808d23c00350024bc60b1c80100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8dd00003f11061508080808ac11000a0035d23c00bcfddcb1c88180000100010004000406676f6f676c6503636f6d0000010001c00c00010001000001180004d83adacec00c00020001000268730006036e7333c00cc00c00020001000268730006036e7334c00cc00c00020001000268730006036e7331c00cc00c00020001000268730006036e7332c00cc06e00010001000268730004d8ef220ac05c00010001000510250004d8ef200ac03800010001000268730004d8ef240ac04a00010001000268730004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a0800450000544ebb400040018cc9ac11000ad83adace0800678553a5000199e1085800000000d6c7050000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a00006f8553a5000199e1085800000000d6c7050000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a080045000049498f4000401134eaac11000a08080808cc9000350035bc7159c40100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8de00003f1105c308080808ac11000a0035cc90010d16a759c48180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c000100011978001b0f64667730367334372d696e2d663134053165313030036e657400c00c000c00010001197800131064667730367334372d696e2d66323036c049c01000020001000117730010036e733206676f6f676c6503636f6d00c01000020001000117730006036e7333c083c01000020001000117730006036e7334c083c01000020001000117730006036e7331c083c0bf00010001000510250004d8ef200ac09b00010001000268730004d8ef240ac0ad00010001000268730004d8ef260ac07f00010001000268730004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a0800450000384a5e40004011342cac11000a08080808ba1500350024bc60072a0100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8df00003f11061308080808ac11000a0035ba1500bcc0ab072a8180000100010004000406676f6f676c6503636f6d0000010001c00c00010001000001170004d83adacec00c00020001000268720006036e7331c00cc00c00020001000268720006036e7332c00cc00c00020001000268720006036e7334c00cc00c00020001000268720006036e7333c00cc04a00010001000268720004d8ef220ac03800010001000510240004d8ef200ac06e00010001000268720004d8ef240ac05c00010001000268720004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a0800450000544f37400040018c4dac11000ad83adace0800034b53a700019ae10858000000003900060000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a00000b4b53a700019ae10858000000003900060000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a0800450000494a5f40004011341aac11000a08080808867a00350035bc7163570100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8e000003f1105c108080808ac11000a0035867a010dd9ac63578180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c000100011977001c1064667730367334372d696e2d66323036053165313030036e657400c00c000c00010001197700120f64667730367334372d696e2d663134c04ac01000020001000117720010036e733106676f6f676c6503636f6d00c01000020001000117720006036e7334c083c01000020001000117720006036e7333c083c01000020001000117720006036e7332c083c07f00010001000510240004d8ef200ac0ad00010001000268720004d8ef240ac09b00010001000268720004d8ef260ac0bf00010001000268720004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a0800450000384b36400040113354ac11000a08080808a06300350024bc60bd300100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8e100003f11061108080808ac11000a0035a06300bc2460bd308180000100010004000406676f6f676c6503636f6d0000010001c00c00010001000001160004d83adacec00c00020001000268710006036e7333c00cc00c00020001000268710006036e7334c00cc00c00020001000268710006036e7332c00cc00c00020001000268710006036e7331c00cc05c00010001000268710004d8ef220ac06e00010001000510230004d8ef200ac03800010001000268710004d8ef240ac04a00010001000268710004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a0800450000544fec400040018b98ac11000ad83adace08008a1053a900019be1085800000000b138060000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a0000921053a900019be1085800000000b138060000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a0800450000494b38400040113341ac11000a08080808c7ed00350035bc71b9330100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8e200003f1105bf08080808ac11000a0035c7ed010dcddcb9338180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c000100011976001b0f64667730367334372d696e2d663134053165313030036e657400c00c000c00010001197600131064667730367334372d696e2d66323036c049c01000020001000117710010036e733206676f6f676c6503636f6d00c01000020001000117710006036e7331c083c01000020001000117710006036e7333c083c01000020001000117710006036e7334c083c09b00010001000510230004d8ef200ac0ad00010001000268710004d8ef240ac0bf00010001000268710004d8ef260ac07f00010001000268710004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a0800450000384b52400040113338ac11000a0808080880d000350024bc602f060100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8e300003f11060f08080808ac11000a003580d000bcd2262f068180000100010004000406676f6f676c6503636f6d0000010001c00c00010001000001150004d83adacec00c00020001000268700006036e7332c00cc00c00020001000268700006036e7333c00cc00c00020001000268700006036e7331c00cc00c00020001000268700006036e7334c00cc03800010001000268700004d8ef220ac05c00010001000510220004d8ef200ac04a00010001000268700004d8ef240ac06e00010001000268700004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a0800450000544ff6400040018b8eac11000ad83adace0800c5d853ab00019ce1085800000000746e060000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a0800450000384d21400040113169ac11000a08080808d0db00350024bc602d5e0100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8e400003f11060e08080808ac11000a0035d0db00bc83d52d5e8180000100010004000406676f6f676c6503636f6d0000010001c00c00010001000001130004d83adacec00c000200010002686e0006036e7333c00cc00c000200010002686e0006036e7331c00cc00c000200010002686e0006036e7334c00cc00c000200010002686e0006036e7332c00cc06e000100010002686e0004d8ef220ac04a00010001000510200004d8ef200ac038000100010002686e0004d8ef240ac05c000100010002686e0004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a0800450000545038400040018b4cac11000ad83adace0800adb453ad00019ee10858000000008a90060000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a0800450000384e63400040113027ac11000a08080808a23c00350024bc60e7250100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8e500003f11060d08080808ac11000a0035a23c00bcf8bee7258180000100010004000406676f6f676c6503636f6d0000010001c00c00010001000001110004d83adacec00c000200010002686c0006036e7331c00cc00c000200010002686c0006036e7333c00cc00c000200010002686c0006036e7332c00cc00c000200010002686c0006036e7334c00cc05c000100010002686c0004d8ef220ac038000100010005101e0004d8ef200ac04a000100010002686c0004d8ef240ac06e000100010002686c0004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a0800450000545049400040018b3bac11000ad83adace0800599553af0001a0e1085800000000dcad060000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a0800450000384fa9400040112ee1ac11000a08080808afb600350024bc60b1df0100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8e600003f11060c08080808ac11000a0035afb600bc209db1df8180000100010004000406676f6f676c6503636f6d0000010001c00c000100010000010f0004d83adacec00c000200010002686a0006036e7334c00cc00c000200010002686a0006036e7332c00cc00c000200010002686a0006036e7331c00cc00c000200010002686a0006036e7333c00cc04a000100010002686a0004d8ef220ac05c000100010005101c0004d8ef200ac06e000100010002686a0004d8ef240ac038000100010002686a0004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a08004500005450d9400040018aabac11000ad83adace0800686e53b10001a2e1085800000000cbd2060000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a0000706e53b10001a2e1085800000000cbd2060000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a0800450000494fab400040112eceac11000a080808089d2000350035bc71ed880100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8e700003f1105ba08080808ac11000a00359d20010d88d5ed888180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c00010001196f001c1064667730367334372d696e2d66323036053165313030036e657400c00c000c00010001196f00120f64667730367334372d696e2d663134c04ac010000200010001176a0010036e733306676f6f676c6503636f6d00c010000200010001176a0006036e7334c083c010000200010001176a0006036e7332c083c010000200010001176a0006036e7331c083c0bf000100010005101c0004d8ef200ac07f000100010002686a0004d8ef240ac09b000100010002686a0004d8ef260ac0ad000100010002686a0004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a0800450000384ff8400040112e92ac11000a08080808b25a00350024bc60fb450100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8e800003f11060a08080808ac11000a0035b25a00bcd49bfb458180000100010004000406676f6f676c6503636f6d0000010001c00c000100010000010e0004d83adacec00c00020001000268690006036e7331c00cc00c00020001000268690006036e7333c00cc00c00020001000268690006036e7334c00cc00c00020001000268690006036e7332c00cc06e00010001000268690004d8ef220ac038000100010005101b0004d8ef200ac04a00010001000268690004d8ef240ac05c00010001000268690004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a0800450000545139400040018a4bac11000ad83adace0800983053b30001a3e10858000000009a0e070000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a0000a03053b30001a3e10858000000009a0e070000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a0800450000494ffa400040112e7fac11000a08080808ec2900350035bc7163c70100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8e900003f1105b808080808ac11000a0035ec29010d471563c78180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c00010001196e001b0f64667730367334372d696e2d663134053165313030036e657400c00c000c00010001196e00131064667730367334372d696e2d66323036c049c01000020001000117690010036e733206676f6f676c6503636f6d00c01000020001000117690006036e7333c083c01000020001000117690006036e7334c083c01000020001000117690006036e7331c083c0bf000100010005101b0004d8ef200ac09b00010001000268690004d8ef240ac0ad00010001000268690004d8ef260ac07f00010001000268690004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a0800450000385013400040112e77ac11000a08080808e97200350024bc6051000100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8ea00003f11060808080808ac11000a0035e97200bc47d251008180000100010004000406676f6f676c6503636f6d0000010001c00c000100010000010d0004d83adacec00c00020001000268680006036e7333c00cc00c00020001000268680006036e7331c00cc00c00020001000268680006036e7334c00cc00c00020001000268680006036e7332c00cc06e00010001000268680004d8ef220ac04a000100010005101a0004d8ef200ac03800010001000268680004d8ef240ac05c00010001000268680004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a0800450000545167400040018a1dac11000ad83adace08003df553b50001a4e1085800000000f347070000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a000045f553b50001a4e1085800000000f347070000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a0800450000495014400040112e65ac11000a08080808dad600350035bc7165370100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8eb00003f1105b608080808ac11000a0035dad6010de77065378180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c00010001196d001c1064667730367334372d696e2d66323036053165313030036e657400c00c000c00010001196d00120f64667730367334372d696e2d663134c04ac01000020001000117680010036e733106676f6f676c6503636f6d00c01000020001000117680006036e7334c083c01000020001000117680006036e7332c083c01000020001000117680006036e7333c083c07f000100010005101a0004d8ef200ac0bf00010001000268680004d8ef240ac09b00010001000268680004d8ef260ac0ad00010001000268680004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a08004500003850ea400040112da0ac11000a08080808932500350024bc60fb660100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8ec00003f11060608080808ac11000a0035932500bcf3c1fb668180000100010004000406676f6f676c6503636f6d0000010001c00c000100010000010c0004d83adacec00c00020001000268670006036e7332c00cc00c00020001000268670006036e7331c00cc00c00020001000268670006036e7334c00cc00c00020001000268670006036e7333c00cc03800010001000268670004d8ef220ac04a00010001000510190004d8ef200ac06e00010001000268670004d8ef240ac05c00010001000268670004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a08004500005451b64000400189ceac11000ad83adace080027be53b70001a5e1085800000000087d070000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a00002fbe53b70001a5e1085800000000087d070000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a08004500004950ec400040112d8dac11000a08080808a7e200350035bc7193420100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8ed00003f1105b408080808ac11000a0035a7e2010d6de393428180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c00010001196c001b0f64667730367334372d696e2d663134053165313030036e657400c00c000c00010001196c00131064667730367334372d696e2d66323036c049c01000020001000117670010036e733106676f6f676c6503636f6d00c01000020001000117670006036e7334c083c01000020001000117670006036e7333c083c01000020001000117670006036e7332c083c07f00010001000510190004d8ef200ac0ad00010001000268670004d8ef240ac09b00010001000268670004d8ef260ac0bf00010001000268670004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a0800450000385198400040112cf2ac11000a08080808c2a500350024bc60d5b20100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8ee00003f11060408080808ac11000a0035c2a500bce9fed5b28180000100010004000406676f6f676c6503636f6d0000010001c00c000100010000010b0004d83adacec00c00020001000268660006036e7332c00cc00c00020001000268660006036e7334c00cc00c00020001000268660006036e7333c00cc00c00020001000268660006036e7331c00cc03800010001000268660004d8ef220ac06e00010001000510180004d8ef200ac05c00010001000268660004d8ef240ac04a00010001000268660004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a080045000054520940004001897bac11000ad83adace0800d98353b90001a6e108580000000055b5070000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a0000e18353b90001a6e108580000000055b5070000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a0800450000495199400040112ce0ac11000a08080808c5a700350035bc717d8e0100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8ef00003f1105b208080808ac11000a0035c5a7010df8487d8e8180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c00010001196b001c1064667730367334372d696e2d66323036053165313030036e657400c00c000c00010001196b00120f64667730367334372d696e2d663134c04ac01000020001000117660010036e733306676f6f676c6503636f6d00c01000020001000117660006036e7331c083c01000020001000117660006036e7332c083c01000020001000117660006036e7334c083c09b00010001000510180004d8ef200ac07f00010001000268660004d8ef240ac0bf00010001000268660004d8ef260ac0ad00010001000268660004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a0800450000385237400040112c53ac11000a08080808afb400350024bc60a3500100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8f000003f11060208080808ac11000a0035afb400bc2f5ba3508180000100010004000406676f6f676c6503636f6d0000010001c00c000100010000010a0004d83adacec00c00020001000268650006036e7332c00cc00c00020001000268650006036e7334c00cc00c00020001000268650006036e7331c00cc00c00020001000268650006036e7333c00cc03800010001000268650004d8ef220ac05c00010001000510170004d8ef200ac06e00010001000268650004d8ef240ac04a00010001000268650004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a08004500005452d34000400188b1ac11000ad83adace08005e3e53bb0001a7e1085800000000cff8070000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a0000663e53bb0001a7e1085800000000cff8070000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a0800450000495239400040112c40ac11000a08080808ea9f00350035bc7149c60100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8f100003f1105b008080808ac11000a0035ea9f010d86a449c68180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c00010001196a001b0f64667730367334372d696e2d663134053165313030036e657400c00c000c00010001196a00131064667730367334372d696e2d66323036c049c01000020001000117650010036e733306676f6f676c6503636f6d00c01000020001000117650006036e7331c083c01000020001000117650006036e7334c083c01000020001000117650006036e7332c083c09b00010001000510170004d8ef200ac07f00010001000268650004d8ef240ac0ad00010001000268650004d8ef260ac0bf00010001000268650004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a080045000038523a400040112c50ac11000a08080808a43a00350024bc6029800100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8f200003f11060008080808ac11000a0035a43a00bcb4ae29808180000100010004000406676f6f676c6503636f6d0000010001c00c00010001000001090004d83adacec00c00020001000268640006036e7333c00cc00c00020001000268640006036e7334c00cc00c00020001000268640006036e7331c00cc00c00020001000268640006036e7332c00cc06e00010001000268640004d8ef220ac05c00010001000510160004d8ef200ac03800010001000268640004d8ef240ac04a00010001000268640004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a08004500005452f840004001888cac11000ad83adace080071f853bd0001a8e1085800000000ba3c080000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a000079f853bd0001a8e1085800000000ba3c080000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a080045000049523c400040112c3dac11000a08080808ec3500350035bc7181730100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8f300003f1105ae08080808ac11000a0035ec35010de1d581738180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c000100011969001c1064667730367334372d696e2d66323036053165313030036e657400c00c000c00010001196900120f64667730367334372d696e2d663134c04ac01000020001000117640010036e733206676f6f676c6503636f6d00c01000020001000117640006036e7334c083c01000020001000117640006036e7333c083c01000020001000117640006036e7331c083c0bf00010001000510160004d8ef200ac0ad00010001000268640004d8ef240ac09b00010001000268640004d8ef260ac07f00010001000268640004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a08004500003852a8400040112be2ac11000a08080808b28700350024bc60efe70100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8f400003f1105fe08080808ac11000a0035b28700bce002efe78180000100010004000406676f6f676c6503636f6d0000010001c00c00010001000001080004d83adacec00c00020001000268630006036e7333c00cc00c00020001000268630006036e7334c00cc00c00020001000268630006036e7332c00cc00c00020001000268630006036e7331c00cc05c00010001000268630004d8ef220ac06e00010001000510150004d8ef200ac03800010001000268630004d8ef240ac04a00010001000268630004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a08004500005453894000400187fbac11000ad83adace08005bb353bf0001a9e1085800000000cf7f080000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 0242ac11000a56847afe97990800450000540000000035012685d83adaceac11000a000063b353bf0001a9e1085800000000cf7f080000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 +./dns.pcap-dist 56847afe97990242ac11000a08004500004952a9400040112bd0ac11000a0808080882e300350035bc71e77a0100000100000000000003323036033231380235380332313607696e2d61646472046172706100000c0001 +./dns.pcap-dist 0242ac11000a56847afe9799080045000121b8f500003f1105ac08080808ac11000a003582e3010d62aee77a8180000100020004000403323036033231380235380332313607696e2d61646472046172706100000c0001c00c000c000100011968001b0f64667730367334372d696e2d663134053165313030036e657400c00c000c00010001196800131064667730367334372d696e2d66323036c049c01000020001000117630010036e733106676f6f676c6503636f6d00c01000020001000117630006036e7334c083c01000020001000117630006036e7333c083c01000020001000117630006036e7332c083c07f00010001000510150004d8ef200ac0ad00010001000268630004d8ef240ac09b00010001000268630004d8ef260ac0bf00010001000268630004d8ef220a +./dns.pcap-dist 56847afe97990242ac11000a080600010800060400010242ac11000aac11000a000000000000ac112a01 +./dns.pcap-dist 0242ac11000a56847afe97990806000108000604000256847afe9799ac112a010242ac11000aac11000a +./dns.pcap-dist 56847afe97990242ac11000a0800450000385334400040112b56ac11000a08080808b6ce00350024bc6045240100000100000000000006676f6f676c6503636f6d0000010001 +./dns.pcap-dist 0242ac11000a56847afe97990800450000d0b8f600003f1105fc08080808ac11000a0035b6ce00bc868845248180000100010004000406676f6f676c6503636f6d0000010001c00c00010001000001070004d83adacec00c00020001000268620006036e7331c00cc00c00020001000268620006036e7334c00cc00c00020001000268620006036e7333c00cc00c00020001000268620006036e7332c00cc06e00010001000268620004d8ef220ac03800010001000510140004d8ef200ac05c00010001000268620004d8ef240ac04a00010001000268620004d8ef260a +./dns.pcap-dist 56847afe97990242ac11000a080045000054538b4000400187f9ac11000ad83adace08002f6c53c10001aae1085800000000fac4080000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 diff --git a/src/pcap-thread/hexdump/test/dns.pcap b/src/pcap-thread/hexdump/test/dns.pcap Binary files differnew file mode 100644 index 0000000..a0e585c --- /dev/null +++ b/src/pcap-thread/hexdump/test/dns.pcap diff --git a/src/pcap-thread/hexdump/test/icmp_fuzz.pcap b/src/pcap-thread/hexdump/test/icmp_fuzz.pcap Binary files differnew file mode 100644 index 0000000..d397899 --- /dev/null +++ b/src/pcap-thread/hexdump/test/icmp_fuzz.pcap diff --git a/src/pcap-thread/hexdump/test/icmpv6_fuzz.pcap b/src/pcap-thread/hexdump/test/icmpv6_fuzz.pcap Binary files differnew file mode 100644 index 0000000..1ad5264 --- /dev/null +++ b/src/pcap-thread/hexdump/test/icmpv6_fuzz.pcap diff --git a/src/pcap-thread/hexdump/test/missing_payload.pcap b/src/pcap-thread/hexdump/test/missing_payload.pcap Binary files differnew file mode 100644 index 0000000..d9578f7 --- /dev/null +++ b/src/pcap-thread/hexdump/test/missing_payload.pcap diff --git a/src/pcap-thread/hexdump/test/padding.pcap b/src/pcap-thread/hexdump/test/padding.pcap Binary files differnew file mode 100644 index 0000000..f9d5d42 --- /dev/null +++ b/src/pcap-thread/hexdump/test/padding.pcap diff --git a/src/pcap-thread/hexdump/test/test1.sh b/src/pcap-thread/hexdump/test/test1.sh new file mode 100755 index 0000000..328ae49 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test1.sh @@ -0,0 +1,37 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +../hexdump -r ./dns.pcap-dist >dns.out + +diff dns.out "$srcdir/dns.gold" diff --git a/src/pcap-thread/hexdump/test/test2.gold b/src/pcap-thread/hexdump/test/test2.gold new file mode 100644 index 0000000..7be2959 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test2.gold @@ -0,0 +1,1360 @@ +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_dup_udp.pcap-dist +snapshot: 65535 +invalid fragment(s)(19) name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:108 len:108 datalink:IPV4 data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_empty_udp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_nomf_udp.pcap-dist +snapshot: 65535 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:1428 len:1428 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_offset_offbyone1_udp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_offset_offbyone2_udp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_order_udp.pcap-dist +snapshot: 65535 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:2028 len:2028 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:2028 len:2028 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:2028 len:2028 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:2028 len:2028 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:2028 len:2028 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_skip_first_udp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_skip_last_udp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_skip_middle_udp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_dup_udp.pcap-dist +snapshot: 65535 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_udp.pcap-dist ts:1513187023.754789 caplen:108 len:108 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_empty_udp.pcap-dist +snapshot: 65535 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_udp.pcap-dist ts:1513187023.515199 caplen:108 len:108 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_nomf_udp.pcap-dist +snapshot: 65535 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_udp.pcap-dist ts:1513187024.282374 caplen:108 len:108 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_offset_offbyone1_udp.pcap-dist +snapshot: 65535 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_udp.pcap-dist ts:1513187023.22891 caplen:108 len:108 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_offset_offbyone2_udp.pcap-dist +snapshot: 65535 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_udp.pcap-dist ts:1513187023.282254 caplen:108 len:108 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_order_udp.pcap-dist +snapshot: 65535 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187023.999418 caplen:108 len:108 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:108 len:108 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.5066 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:108 len:108 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:108 len:108 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:108 len:108 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.9474 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.13642 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_udp.pcap-dist ts:1513187024.17824 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_skip_first_udp.pcap-dist +snapshot: 65535 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_udp.pcap-dist ts:1513187022.251255 caplen:108 len:108 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_skip_last_udp.pcap-dist +snapshot: 65535 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_udp.pcap-dist ts:1513187022.757611 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_skip_middle_udp.pcap-dist +snapshot: 65535 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_udp.pcap-dist ts:1513187022.508153 caplen:108 len:108 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_dup_tcp.pcap-dist +snapshot: 65535 +invalid fragment(s)(19) name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:120 len:120 datalink:IPV4 data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_empty_tcp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_nomf_tcp.pcap-dist +snapshot: 65535 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:1428 len:1428 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_offset_offbyone1_tcp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_offset_offbyone2_tcp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_order_tcp.pcap-dist +snapshot: 65535 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:2040 len:2040 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:2040 len:2040 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:2040 len:2040 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:2040 len:2040 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:2040 len:2040 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_skip_first_tcp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_skip_last_tcp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_skip_middle_tcp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_dup_tcp.pcap-dist +snapshot: 65535 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_dup_tcp.pcap-dist ts:1513187030.903475 caplen:120 len:120 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_empty_tcp.pcap-dist +snapshot: 65535 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_empty_tcp.pcap-dist ts:1513187030.662203 caplen:120 len:120 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_nomf_tcp.pcap-dist +snapshot: 65535 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_nomf_tcp.pcap-dist ts:1513187031.444485 caplen:120 len:120 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_offset_offbyone1_tcp.pcap-dist +snapshot: 65535 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone1_tcp.pcap-dist ts:1513187030.168261 caplen:120 len:120 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_offset_offbyone2_tcp.pcap-dist +snapshot: 65535 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_offset_offbyone2_tcp.pcap-dist ts:1513187030.409421 caplen:120 len:120 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_order_tcp.pcap-dist +snapshot: 65535 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.152605 caplen:120 len:120 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:120 len:120 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.159162 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:120 len:120 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:120 len:120 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:120 len:120 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.174677 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.164229 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_order_tcp.pcap-dist ts:1513187031.169579 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_skip_first_tcp.pcap-dist +snapshot: 65535 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_first_tcp.pcap-dist ts:1513187029.445597 caplen:120 len:120 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_skip_last_tcp.pcap-dist +snapshot: 65535 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_last_tcp.pcap-dist ts:1513187029.932569 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v4_frag_skip_middle_tcp.pcap-dist +snapshot: 65535 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:148 len:148 datalink:IPV4 fragment data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:148 len:148 datalink:IPV4 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v4_frag_skip_middle_tcp.pcap-dist ts:1513187029.692849 caplen:120 len:120 datalink:IPV4 fragment data:61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 diff --git a/src/pcap-thread/hexdump/test/test2.sh b/src/pcap-thread/hexdump/test/test2.sh new file mode 100755 index 0000000..68d63ae --- /dev/null +++ b/src/pcap-thread/hexdump/test/test2.sh @@ -0,0 +1,69 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +rm -f test2.out + +for file in v4_frag_dup_udp.pcap-dist v4_frag_empty_udp.pcap-dist \ + v4_frag_nomf_udp.pcap-dist v4_frag_offset_offbyone1_udp.pcap-dist \ + v4_frag_offset_offbyone2_udp.pcap-dist v4_frag_order_udp.pcap-dist \ + v4_frag_skip_first_udp.pcap-dist v4_frag_skip_last_udp.pcap-dist \ + v4_frag_skip_middle_udp.pcap-dist; do + ../hexdump -F 4 -F R4 -F p4100 -L udp -v -r "$file" >>test2.out +done + +for file in v4_frag_dup_udp.pcap-dist v4_frag_empty_udp.pcap-dist \ + v4_frag_nomf_udp.pcap-dist v4_frag_offset_offbyone1_udp.pcap-dist \ + v4_frag_offset_offbyone2_udp.pcap-dist v4_frag_order_udp.pcap-dist \ + v4_frag_skip_first_udp.pcap-dist v4_frag_skip_last_udp.pcap-dist \ + v4_frag_skip_middle_udp.pcap-dist; do + ../hexdump -L udp -v -r "$file" >>test2.out +done + +for file in v4_frag_dup_tcp.pcap-dist v4_frag_empty_tcp.pcap-dist \ + v4_frag_nomf_tcp.pcap-dist v4_frag_offset_offbyone1_tcp.pcap-dist \ + v4_frag_offset_offbyone2_tcp.pcap-dist v4_frag_order_tcp.pcap-dist \ + v4_frag_skip_first_tcp.pcap-dist v4_frag_skip_last_tcp.pcap-dist \ + v4_frag_skip_middle_tcp.pcap-dist; do + ../hexdump -F 4 -F R4 -F p4100 -L tcp -v -r "$file" >>test2.out +done + +for file in v4_frag_dup_tcp.pcap-dist v4_frag_empty_tcp.pcap-dist \ + v4_frag_nomf_tcp.pcap-dist v4_frag_offset_offbyone1_tcp.pcap-dist \ + v4_frag_offset_offbyone2_tcp.pcap-dist v4_frag_order_tcp.pcap-dist \ + v4_frag_skip_first_tcp.pcap-dist v4_frag_skip_last_tcp.pcap-dist \ + v4_frag_skip_middle_tcp.pcap-dist; do + ../hexdump -L tcp -v -r "$file" >>test2.out +done + +diff test2.out "$srcdir/test2.gold" diff --git a/src/pcap-thread/hexdump/test/test3.sh b/src/pcap-thread/hexdump/test/test3.sh new file mode 100755 index 0000000..253a708 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=@PKT_SIZE@ FRAG_SIZE=@FRAG_SIZE@ NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=@PKT_SIZE@ FRAG_SIZE=@FRAG_SIZE@ NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_120_1120.sh b/src/pcap-thread/hexdump/test/test3_120_1120.sh new file mode 100755 index 0000000..557a3a2 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_120_1120.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=1120 FRAG_SIZE=120 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=1120 FRAG_SIZE=120 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_120_1240.sh b/src/pcap-thread/hexdump/test/test3_120_1240.sh new file mode 100755 index 0000000..3ed7569 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_120_1240.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=1240 FRAG_SIZE=120 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=1240 FRAG_SIZE=120 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_120_1400.sh b/src/pcap-thread/hexdump/test/test3_120_1400.sh new file mode 100755 index 0000000..a4b0ec8 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_120_1400.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=1400 FRAG_SIZE=120 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=1400 FRAG_SIZE=120 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_120_1800.sh b/src/pcap-thread/hexdump/test/test3_120_1800.sh new file mode 100755 index 0000000..f56e8cd --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_120_1800.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=1800 FRAG_SIZE=120 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=1800 FRAG_SIZE=120 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_120_900.sh b/src/pcap-thread/hexdump/test/test3_120_900.sh new file mode 100755 index 0000000..9356646 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_120_900.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=900 FRAG_SIZE=120 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=900 FRAG_SIZE=120 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_1255_2123.sh b/src/pcap-thread/hexdump/test/test3_1255_2123.sh new file mode 100755 index 0000000..6c73961 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_1255_2123.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=2123 FRAG_SIZE=1255 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=2123 FRAG_SIZE=1255 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_1255_2345.sh b/src/pcap-thread/hexdump/test/test3_1255_2345.sh new file mode 100755 index 0000000..1dbb882 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_1255_2345.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=2345 FRAG_SIZE=1255 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=2345 FRAG_SIZE=1255 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_1255_2566.sh b/src/pcap-thread/hexdump/test/test3_1255_2566.sh new file mode 100755 index 0000000..373190e --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_1255_2566.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=2566 FRAG_SIZE=1255 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=2566 FRAG_SIZE=1255 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_1400_2123.sh b/src/pcap-thread/hexdump/test/test3_1400_2123.sh new file mode 100755 index 0000000..ef6c508 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_1400_2123.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=2123 FRAG_SIZE=1400 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=2123 FRAG_SIZE=1400 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_1400_2345.sh b/src/pcap-thread/hexdump/test/test3_1400_2345.sh new file mode 100755 index 0000000..4db7973 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_1400_2345.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=2345 FRAG_SIZE=1400 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=2345 FRAG_SIZE=1400 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_1400_2566.sh b/src/pcap-thread/hexdump/test/test3_1400_2566.sh new file mode 100755 index 0000000..329c3ec --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_1400_2566.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=2566 FRAG_SIZE=1400 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=2566 FRAG_SIZE=1400 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_1600_2123.sh b/src/pcap-thread/hexdump/test/test3_1600_2123.sh new file mode 100755 index 0000000..689b8a7 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_1600_2123.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=2123 FRAG_SIZE=1600 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=2123 FRAG_SIZE=1600 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_1600_2345.sh b/src/pcap-thread/hexdump/test/test3_1600_2345.sh new file mode 100755 index 0000000..366dc3b --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_1600_2345.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=2345 FRAG_SIZE=1600 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=2345 FRAG_SIZE=1600 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_1600_2566.sh b/src/pcap-thread/hexdump/test/test3_1600_2566.sh new file mode 100755 index 0000000..deaef88 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_1600_2566.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=2566 FRAG_SIZE=1600 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=2566 FRAG_SIZE=1600 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_34_1120.sh b/src/pcap-thread/hexdump/test/test3_34_1120.sh new file mode 100755 index 0000000..b5c1638 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_34_1120.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=1120 FRAG_SIZE=34 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=1120 FRAG_SIZE=34 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_34_1240.sh b/src/pcap-thread/hexdump/test/test3_34_1240.sh new file mode 100755 index 0000000..fbd3158 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_34_1240.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=1240 FRAG_SIZE=34 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=1240 FRAG_SIZE=34 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_34_1400.sh b/src/pcap-thread/hexdump/test/test3_34_1400.sh new file mode 100755 index 0000000..eb6c6bd --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_34_1400.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=1400 FRAG_SIZE=34 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=1400 FRAG_SIZE=34 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_34_1800.sh b/src/pcap-thread/hexdump/test/test3_34_1800.sh new file mode 100755 index 0000000..1e91d5b --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_34_1800.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=1800 FRAG_SIZE=34 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=1800 FRAG_SIZE=34 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_34_900.sh b/src/pcap-thread/hexdump/test/test3_34_900.sh new file mode 100755 index 0000000..2cc8fc2 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_34_900.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=900 FRAG_SIZE=34 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=900 FRAG_SIZE=34 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_890_1120.sh b/src/pcap-thread/hexdump/test/test3_890_1120.sh new file mode 100755 index 0000000..bdd9eb1 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_890_1120.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=1120 FRAG_SIZE=890 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=1120 FRAG_SIZE=890 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_890_1240.sh b/src/pcap-thread/hexdump/test/test3_890_1240.sh new file mode 100755 index 0000000..8c35c82 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_890_1240.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=1240 FRAG_SIZE=890 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=1240 FRAG_SIZE=890 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_890_1400.sh b/src/pcap-thread/hexdump/test/test3_890_1400.sh new file mode 100755 index 0000000..4b2cc31 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_890_1400.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=1400 FRAG_SIZE=890 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=1400 FRAG_SIZE=890 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_890_1800.sh b/src/pcap-thread/hexdump/test/test3_890_1800.sh new file mode 100755 index 0000000..8309459 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_890_1800.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=1800 FRAG_SIZE=890 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=1800 FRAG_SIZE=890 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3_890_900.sh b/src/pcap-thread/hexdump/test/test3_890_900.sh new file mode 100755 index 0000000..93972d5 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3_890_900.sh @@ -0,0 +1,58 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +workdir="$PWD/bad-packets" + +do_test() { + files=`ls -1 "$workdir/"*.pcap 2>/dev/null` + if [ -z "$files" ]; then + echo "No PCAP files generated" + exit 1 + fi + + for file in $files; do + ../hexdump -F 4 -F R4 -F p4100 -F 6 -F R6 -F p6100 -L udp -v -r "$file" + done +} + +if [ -d "$srcdir/bad-packets" ]; then + mkdir -p "$workdir" + ( cd "$srcdir/bad-packets" && make FRAG_PKT_SIZE=900 FRAG_SIZE=890 NUM_PKTS=5 DESTDIR="$workdir" clean fuzz ) + do_test +elif [ -d "$workdir" ]; then + ( cd "$workdir" && make FRAG_PKT_SIZE=900 FRAG_SIZE=890 NUM_PKTS=5 clean fuzz ) + do_test +else + echo "bad-packets not found, skipping fuzz tests" +fi diff --git a/src/pcap-thread/hexdump/test/test3gen.sh b/src/pcap-thread/hexdump/test/test3gen.sh new file mode 100755 index 0000000..41aa393 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test3gen.sh @@ -0,0 +1,50 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +for frag in 34 120 890; do + for pkt in 900 1120 1240 1400 1800; do + cat test3.sh | \ + sed "s%@FRAG_SIZE@%$frag%g" | \ + sed "s%@PKT_SIZE@%$pkt%g" \ + > test3_${frag}_${pkt}.sh + done +done +for frag in 1255 1400 1600; do + for pkt in 2123 2345 2566; do + cat test3.sh | \ + sed "s%@FRAG_SIZE@%$frag%g" | \ + sed "s%@PKT_SIZE@%$pkt%g" \ + > test3_${frag}_${pkt}.sh + done +done diff --git a/src/pcap-thread/hexdump/test/test4.gold b/src/pcap-thread/hexdump/test/test4.gold new file mode 100644 index 0000000..21fb09e --- /dev/null +++ b/src/pcap-thread/hexdump/test/test4.gold @@ -0,0 +1,1620 @@ +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_dup_udp.pcap-dist +snapshot: 65535 +invalid fragment(s)(19) name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:56 len:56 datalink:IPV6 data:110007d05c980a206161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_empty_udp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_nomf_udp.pcap-dist +snapshot: 65535 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:928 len:928 datalink:IPV6 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_offset_offbyone1_udp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_offset_offbyone2_udp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_order_udp.pcap-dist +snapshot: 65535 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:2056 len:2056 datalink:IPV6 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:2056 len:2056 datalink:IPV6 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:2056 len:2056 datalink:IPV6 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:2056 len:2056 datalink:IPV6 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:2056 len:2056 datalink:IPV6 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_skip_first_udp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_skip_last_udp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_skip_middle_udp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_dup_udp.pcap-dist +snapshot: 65535 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:0035003507d88b6e616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_udp.pcap-dist ts:1513187026.850942 caplen:56 len:56 datalink:IPV6 fragment data:6161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_empty_udp.pcap-dist +snapshot: 65535 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:0035003507d88b6e616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_udp.pcap-dist ts:1513187026.598321 caplen:56 len:56 datalink:IPV6 fragment data:6161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_nomf_udp.pcap-dist +snapshot: 65535 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:0035003507d88b6e616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_udp.pcap-dist ts:1513187027.445873 caplen:56 len:56 datalink:IPV6 fragment data:6161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_offset_offbyone1_udp.pcap-dist +snapshot: 65535 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:0035003507d88b6e616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_udp.pcap-dist ts:1513187026.91874 caplen:56 len:56 datalink:IPV6 fragment data:6161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_offset_offbyone2_udp.pcap-dist +snapshot: 65535 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:0035003507d88b6e616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_udp.pcap-dist ts:1513187026.352386 caplen:56 len:56 datalink:IPV6 fragment data:6161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_order_udp.pcap-dist +snapshot: 65535 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:0035003507d88b6e616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.104988 caplen:56 len:56 datalink:IPV6 fragment data:6161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:56 len:56 datalink:IPV6 fragment data:6161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.118171 caplen:128 len:128 datalink:IPV6 fragment data:0035003507d88b6e616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:56 len:56 datalink:IPV6 fragment data:6161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:56 len:56 datalink:IPV6 fragment data:6161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:0035003507d88b6e616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:0035003507d88b6e616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:0035003507d88b6e616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:56 len:56 datalink:IPV6 fragment data:6161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.140801 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.129485 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_udp.pcap-dist ts:1513187027.152226 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_skip_first_udp.pcap-dist +snapshot: 65535 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_udp.pcap-dist ts:1513187025.339022 caplen:56 len:56 datalink:IPV6 fragment data:6161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_skip_last_udp.pcap-dist +snapshot: 65535 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:0035003507d88b6e616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_udp.pcap-dist ts:1513187025.844216 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_skip_middle_udp.pcap-dist +snapshot: 65535 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:0035003507d88b6e616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_udp.pcap-dist ts:1513187025.594523 caplen:56 len:56 datalink:IPV6 fragment data:6161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_dup_tcp.pcap-dist +snapshot: 65535 +invalid fragment(s)(19) name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:68 len:68 datalink:IPV6 data:060007d0d401bff36161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_empty_tcp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_nomf_tcp.pcap-dist +snapshot: 65535 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:928 len:928 datalink:IPV6 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_offset_offbyone1_tcp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_offset_offbyone2_tcp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_order_tcp.pcap-dist +snapshot: 65535 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:2068 len:2068 datalink:IPV6 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:2068 len:2068 datalink:IPV6 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:2068 len:2068 datalink:IPV6 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:2068 len:2068 datalink:IPV6 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:2068 len:2068 datalink:IPV6 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_skip_first_tcp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_skip_last_tcp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_skip_middle_tcp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_dup_tcp.pcap-dist +snapshot: 65535 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:0014005000000000000000005002200023490000616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_dup_tcp.pcap-dist ts:1513187034.38394 caplen:68 len:68 datalink:IPV6 fragment data:6161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_empty_tcp.pcap-dist +snapshot: 65535 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:0014005000000000000000005002200023490000616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_empty_tcp.pcap-dist ts:1513187033.735074 caplen:68 len:68 datalink:IPV6 fragment data:6161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_nomf_tcp.pcap-dist +snapshot: 65535 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:0014005000000000000000005002200023490000616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_nomf_tcp.pcap-dist ts:1513187034.691326 caplen:68 len:68 datalink:IPV6 fragment data:6161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_offset_offbyone1_tcp.pcap-dist +snapshot: 65535 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:0014005000000000000000005002200023490000616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone1_tcp.pcap-dist ts:1513187033.226911 caplen:68 len:68 datalink:IPV6 fragment data:6161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_offset_offbyone2_tcp.pcap-dist +snapshot: 65535 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:0014005000000000000000005002200023490000616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_offset_offbyone2_tcp.pcap-dist ts:1513187033.480491 caplen:68 len:68 datalink:IPV6 fragment data:6161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_order_tcp.pcap-dist +snapshot: 65535 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:0014005000000000000000005002200023490000616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.318970 caplen:68 len:68 datalink:IPV6 fragment data:6161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:68 len:68 datalink:IPV6 fragment data:6161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.332465 caplen:128 len:128 datalink:IPV6 fragment data:0014005000000000000000005002200023490000616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:0014005000000000000000005002200023490000616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:68 len:68 datalink:IPV6 fragment data:6161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:0014005000000000000000005002200023490000616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:0014005000000000000000005002200023490000616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:68 len:68 datalink:IPV6 fragment data:6161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:68 len:68 datalink:IPV6 fragment data:6161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.352371 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.366650 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_order_tcp.pcap-dist ts:1513187034.379302 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_skip_first_tcp.pcap-dist +snapshot: 65535 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_first_tcp.pcap-dist ts:1513187032.466956 caplen:68 len:68 datalink:IPV6 fragment data:6161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_skip_last_tcp.pcap-dist +snapshot: 65535 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:0014005000000000000000005002200023490000616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_last_tcp.pcap-dist ts:1513187032.972695 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: v6_frag_skip_middle_tcp.pcap-dist +snapshot: 65535 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:0014005000000000000000005002200023490000616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:128 len:128 datalink:IPV6 fragment data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:v6_frag_skip_middle_tcp.pcap-dist ts:1513187032.721209 caplen:68 len:68 datalink:IPV6 fragment data:6161616161616161616161616161616161616161 diff --git a/src/pcap-thread/hexdump/test/test4.sh b/src/pcap-thread/hexdump/test/test4.sh new file mode 100755 index 0000000..35d9b12 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test4.sh @@ -0,0 +1,69 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +rm -f test4.out + +for file in v6_frag_dup_udp.pcap-dist v6_frag_empty_udp.pcap-dist \ + v6_frag_nomf_udp.pcap-dist v6_frag_offset_offbyone1_udp.pcap-dist \ + v6_frag_offset_offbyone2_udp.pcap-dist v6_frag_order_udp.pcap-dist \ + v6_frag_skip_first_udp.pcap-dist v6_frag_skip_last_udp.pcap-dist \ + v6_frag_skip_middle_udp.pcap-dist; do + ../hexdump -F 6 -F R6 -F p6100 -L udp -v -r "$file" >>test4.out +done + +for file in v6_frag_dup_udp.pcap-dist v6_frag_empty_udp.pcap-dist \ + v6_frag_nomf_udp.pcap-dist v6_frag_offset_offbyone1_udp.pcap-dist \ + v6_frag_offset_offbyone2_udp.pcap-dist v6_frag_order_udp.pcap-dist \ + v6_frag_skip_first_udp.pcap-dist v6_frag_skip_last_udp.pcap-dist \ + v6_frag_skip_middle_udp.pcap-dist; do + ../hexdump -L udp -v -r "$file" >>test4.out +done + +for file in v6_frag_dup_tcp.pcap-dist v6_frag_empty_tcp.pcap-dist \ + v6_frag_nomf_tcp.pcap-dist v6_frag_offset_offbyone1_tcp.pcap-dist \ + v6_frag_offset_offbyone2_tcp.pcap-dist v6_frag_order_tcp.pcap-dist \ + v6_frag_skip_first_tcp.pcap-dist v6_frag_skip_last_tcp.pcap-dist \ + v6_frag_skip_middle_tcp.pcap-dist; do + ../hexdump -F 6 -F R6 -F p6100 -L tcp -v -r "$file" >>test4.out +done + +for file in v6_frag_dup_tcp.pcap-dist v6_frag_empty_tcp.pcap-dist \ + v6_frag_nomf_tcp.pcap-dist v6_frag_offset_offbyone1_tcp.pcap-dist \ + v6_frag_offset_offbyone2_tcp.pcap-dist v6_frag_order_tcp.pcap-dist \ + v6_frag_skip_first_tcp.pcap-dist v6_frag_skip_last_tcp.pcap-dist \ + v6_frag_skip_middle_tcp.pcap-dist; do + ../hexdump -L tcp -v -r "$file" >>test4.out +done + +diff test4.out "$srcdir/test4.gold" diff --git a/src/pcap-thread/hexdump/test/test5.gold b/src/pcap-thread/hexdump/test/test5.gold new file mode 100644 index 0000000..f5722ab --- /dev/null +++ b/src/pcap-thread/hexdump/test/test5.gold @@ -0,0 +1,140 @@ +./icmp_fuzz.pcap-dist 785d293a +./icmp_fuzz.pcap-dist 5f057ab8 +./icmp_fuzz.pcap-dist b1448b99 +./icmp_fuzz.pcap-dist ec74709c +./icmp_fuzz.pcap-dist c2c4bc02 +./icmp_fuzz.pcap-dist afc276d6 +./icmp_fuzz.pcap-dist 96f2d430 +./icmp_fuzz.pcap-dist f339ead6 +./icmp_fuzz.pcap-dist ae6a547c +./icmp_fuzz.pcap-dist 801e5d70 +./icmp_fuzz.pcap-dist c1216e84 +./icmp_fuzz.pcap-dist 64813f21 +./icmp_fuzz.pcap-dist fb843349 +./icmp_fuzz.pcap-dist 80a1bf19 +./icmp_fuzz.pcap-dist 0314867f +./icmp_fuzz.pcap-dist 50364df0 +./icmp_fuzz.pcap-dist f557244f +./icmp_fuzz.pcap-dist db101423 +./icmp_fuzz.pcap-dist eedebef0 +./icmp_fuzz.pcap-dist f1a1ae7f +./icmp_fuzz.pcap-dist a17b747b +./icmp_fuzz.pcap-dist 0c9d34a6 +./icmp_fuzz.pcap-dist 0000000000000000 +./icmp_fuzz.pcap-dist 6eb998b6 +./icmp_fuzz.pcap-dist f288f46e +./icmp_fuzz.pcap-dist 790eef15 +./icmp_fuzz.pcap-dist cddaab31 +./icmp_fuzz.pcap-dist 00000000 +./icmp_fuzz.pcap-dist a80b30d3 +./icmp_fuzz.pcap-dist 4b9fd24f +./icmp_fuzz.pcap-dist e701136d +./icmp_fuzz.pcap-dist 09952853 +./icmp_fuzz.pcap-dist 7166dcae +./icmp_fuzz.pcap-dist f5e052d1 +./icmp_fuzz.pcap-dist 00000000 +./icmp_fuzz.pcap-dist d0b5e6b2 +./icmp_fuzz.pcap-dist 00000000 +./icmp_fuzz.pcap-dist c8504f19 +./icmp_fuzz.pcap-dist 605f8fb3 +./icmp_fuzz.pcap-dist f6035a09 +./icmp_fuzz.pcap-dist ef2041c8 +./icmp_fuzz.pcap-dist f79f237d +./icmp_fuzz.pcap-dist 8676edcd +./icmp_fuzz.pcap-dist 7e676139 +./icmp_fuzz.pcap-dist 9d559517 +./icmp_fuzz.pcap-dist 63cbf698 +./icmp_fuzz.pcap-dist a47de70f +./icmp_fuzz.pcap-dist 07095107 +./icmp_fuzz.pcap-dist a9e69d01 +./icmp_fuzz.pcap-dist 1e2633be +./icmp_fuzz.pcap-dist 8bcd9962 +./icmp_fuzz.pcap-dist 1d166c7d +./icmp_fuzz.pcap-dist 63214033 +./icmp_fuzz.pcap-dist 7301e87c +./icmp_fuzz.pcap-dist 822be6dc +./icmp_fuzz.pcap-dist ad65c2dd +./icmp_fuzz.pcap-dist 45da8d51 +./icmp_fuzz.pcap-dist 14f02708 +./icmp_fuzz.pcap-dist 00000000 +./icmp_fuzz.pcap-dist 00000000 +./icmp_fuzz.pcap-dist d8bf0718 +./icmp_fuzz.pcap-dist b4f3bf8a +./icmp_fuzz.pcap-dist 8fc95fe0 +./icmp_fuzz.pcap-dist 44e5c869 +./icmp_fuzz.pcap-dist 1e5f33d6 +./icmp_fuzz.pcap-dist 594bec63 +./icmp_fuzz.pcap-dist 79164d47 +./icmp_fuzz.pcap-dist 27364753 +./icmp_fuzz.pcap-dist ea9f0e47 +./icmp_fuzz.pcap-dist f7bc5415 +./icmp_fuzz.pcap-dist 0e951d3a +./icmp_fuzz.pcap-dist 2e8af6cf +./icmp_fuzz.pcap-dist ec898962 +./icmp_fuzz.pcap-dist 743a921a +./icmp_fuzz.pcap-dist befcd634 +./icmp_fuzz.pcap-dist 996a78ce +./icmp_fuzz.pcap-dist 69f9d668 +./icmp_fuzz.pcap-dist 50b186ab +./icmp_fuzz.pcap-dist ad455e43 +./icmp_fuzz.pcap-dist ab65f727 +./icmp_fuzz.pcap-dist 00000000 +./icmp_fuzz.pcap-dist 35d8b13e +./icmp_fuzz.pcap-dist 00000000 +./icmp_fuzz.pcap-dist 3dc04c61 +./icmp_fuzz.pcap-dist fe0e22d3 +./icmp_fuzz.pcap-dist 1ead2f8f +./icmp_fuzz.pcap-dist 68f580f7 +./icmp_fuzz.pcap-dist 60f935c5 +./icmp_fuzz.pcap-dist dbcd3afa +./icmp_fuzz.pcap-dist 00000000 +./icmp_fuzz.pcap-dist 8cd1013f +./icmp_fuzz.pcap-dist dcf842f9 +./icmp_fuzz.pcap-dist f6692cb9 +./icmp_fuzz.pcap-dist 00000000 +./icmp_fuzz.pcap-dist cb7b72fc +./icmp_fuzz.pcap-dist 54bef578 +./icmp_fuzz.pcap-dist 62e6e51e +./icmp_fuzz.pcap-dist 1850b6ec +./icmp_fuzz.pcap-dist e3a2bd36 +./icmp_fuzz.pcap-dist 1929b4b8 +./icmpv6_fuzz.pcap-dist 2abaf01b +./icmpv6_fuzz.pcap-dist 74f97a94 +./icmpv6_fuzz.pcap-dist cabe433e +./icmpv6_fuzz.pcap-dist 026079fd +./icmpv6_fuzz.pcap-dist a3b61a59 +./icmpv6_fuzz.pcap-dist 76191da6 +./icmpv6_fuzz.pcap-dist 48a717ff +./icmpv6_fuzz.pcap-dist c4f569d3 +./icmpv6_fuzz.pcap-dist ea2d682d +./icmpv6_fuzz.pcap-dist 20b62a33 +./icmpv6_fuzz.pcap-dist 98265af3e1f1b4b47a1778d9df1d79ad977c6e72306575d7f32004e1dc8ef02f0606ac0221a0c740036dfdf02da8fec44cef6d93be47c743e1b724cd9959f63dc853947bc1017dd56895790e627aab08bb6f9c460f4999c46ca5f40520536b2642a8f8043998a105e188bb8aac1937 +./icmpv6_fuzz.pcap-dist aeb8517d0b2cf2568953c70fc5a4f7f6e43ff01e4deff28adfef52d607d86c1fe770aafe30590bda27e48f84ba5f1a4f31d33566e065972c11955c07d4bf24d9836f4497c017ff77fbb30b8a61925e899092516c8c45cab8a420c84ecc4e82f4c7f1580ab086ea40c11eddf2d41c4a5c5c4fac2645092c76702c0fdd3074eaf023e59bbedfb5183dc102edb89aacbe336fc8c188e90b417bae925fdcaca307c317af87aee51bcd670b080b9993bf21d11b3a98cf5c997fc9640169df6bde805a1071617f588f90e3a052b10be0527e9fa17c6d3b7bbd4e20b6b2a2cc911217c7d515732ba4277bc693ca9405465fac29f40ea2dabb0aa6f0dddc766682731b06d054078b87570670c89e8a9fe2d87513c8cd712a6613c8dae1b805d00b8d1cf356b2c83e67f750fc0575cc2c3ab3a367798401e5daec25c525769b5b80275bce41d39486774342a7f9c0ef0ee0738885941dcedace451e08b52526e7aea273997936c7c04a4dca1f6dcfc5b862149c74f036140abd17815572368b482aca88a9ad62babe55a77937e92845d49897ddfdd5903d22982918370ea4f5ef630fbeb04752a204f6b9c8445eaa6df14a +./icmpv6_fuzz.pcap-dist 1c38b26a554eeb7189a5abb81a2820a3df641fe1a712173ce1e62d2051da9ba34b4bfbd77d8404e547efafccfabef986526899fd048e97a35a307b487b160683f0ccdac5dcebe78f8f68ef9e91378bbcff0dec9b05a12f1d5cf21192b3eb7f02ca4d7324fe91bb09d573522a86caf2135ea996f5f641daca15939f3b4f0c05e0097a384f3d6db2bbc2cb1b606f8e8f +./icmpv6_fuzz.pcap-dist d11f44f341327f461e5a6a2b051a5f33b882b8c44a7dd7cb756915a5d6ccf7361534bdd5afb9e9f63d2b4ef383d925ef5f74bc7a33b306d4370006472042cd13828d1bf4990cdc98f5a193f4492ae60ba3d7328c76650c82e9a2b85002b08070d284623be05a615d3dbfd7ff1196fea208b43cda75bc2f01d8c3a78ee207e40434995ac52cd1a314564a9ec1f0bf6985a2c2b5eb758afca97f4d989716282760df55461db6858fe6de31873e2f5101ad9d9c6d84e23f03d678a57763a469e928cf4fb9aaecd9ac5d700079ef4568ca2ec71d4d750e44b27b91ab1d6bb1a91c493bd8fb8731abe166857e31b21642b199432b5a73d7e7b84fd6ddb64598a8263631ef0362dd0cbd8f9c5892d1ac42641218954495175c1f6c36b3e4e499de0e8ea17e8003df690f5062bab6d3679441358fe469f7088c8d7ddff6e1bb9ae3621206fb8505afbeca33e69f7ac3427c5e9652b1ad3e07210120f18705337aaac2c6baac14c636fe1ee286fa305407919548e1ada75b1d6d5dfb699366d403565db43d239389a6c9ad64cd436cc2461de53365210f3d12854cbfd81db7969a961d4caa964ee62914e26f55cc2cb58ba819f4fda328a853c6e3b25c27c88e98e691d7cce6412cc3859f72dd99a0049b17d79af9328a494383a024771b3dc96740ed855b632018cc4804563776f79776bf4683b7ef6cd7d377dab1e58df74ff6112c4683103acafd56b2a2e93143e55f63307281e3d0ef177d8eb8aa9ac92edd32238a62f691a1b23c8fffb332a5bc0c8f1248c4b112cc04de3d1a0256446372bb23689223c58362a8ca048f8df6df8d34f8ef007c462beed38bad7904b6c700e98fac805e4a5684cd65dfe01ff1db0c5b79e4eb7741e0ba61787f7eb4dd77fbbe08b77500ce89d6ba9fa9c0ab1e6d82a42c5adc3d5883bc8ba82934c9f2f16080090558e2baa65ee576d78170538c1b7380220f076ea103667ce5732fa05311b41a458e92badf668931f43e3116b866cc06e05eab16ef846f0c6c8ac26aa3476712abfa7537d3dcc7174425b80373eb2d53c8e525827c03fdab7169b24c5a479ce56769e15fb23fa80b1a9ef835b13d98125d760d1f4636e97535e2fec3d05163be8b07ed3533fbbc240a5c +./icmpv6_fuzz.pcap-dist a8480ebfb7d1d5ef696c5c79dcab0ca6587df3725a993c8e8ab5d7bf33cc6d9dcd3cc5bc6f797449f70fde4d7eb28e884a64d463409a9d376093e39eaca9adf7ab42e742bab1e8a16581c1199018c9508ce249ef0852b8e02ccf978fe037f6681d87cd9e8cbaa0cd3d723e60e76795c6d95e9a07bd30d0ae05d0672630aaa0036b3031673098f477ab3406e0fe1a3f96bd1fec3b27f7f8020f4f06c34d4a157bdb2688873ad78749f3a1b4c247c830e5c494c887dae42a469353d5a5e12357fca5e9c2e43a2bfc0e934e1ce1caee3db765bc6f7baaf98cdbe3d05dcc26ad7c22169c649ea0f3024c8197b957297e8574b5e49f8419387b0715f6a430ae0a499d2581ac432668ff3f56fd74548ce418e9f3f1c3b114609823b70901f90c3817e40e5b1281b8896ae7a647a4527434700ebf16230dd7e845705e082c1e180fc1938eeb94fb34cd923a4f05f93d1f599594deae08383174429bdc37f678c7f837e56557f0455a379c79d446dea4ceab8e3d95683d99b96bd7a7574cb6b567b2a732c3bf113361a22c9966ee336c50b058c6f87db743fbbc4c1854565d59ba1519fbb05fecf37b2444 +./icmpv6_fuzz.pcap-dist 918e9451f48e2ced4bdb3e0eb7d30d4b78b00d5f53b587b12421108c32d3478ab41508fd7ce0234f93204b88f127c838f98be95fd76dd3a76a923ca867d0303eaa0777d0d94556e4e98838cc47100b7228a1c090994918d23ecce4c44d77ef62abad5d288b34c4c516df4a4f05edaa44ecd715188b7c503b64906939958574de15940515f5a65cabadd94dd8e23d806fb4d79374775baa8a1cefb590ee52628f38b320f41d527d1411eb4f692c70e6bf14b6d5c10f079d769e34b8a68a220aaefe09332d9d855df684619c7218791fcf088dd39d76dcc86af6698ad37fb2f2cb5fc8b219bbc235b5eddd3d15512b15f07784739d8755af54e0fc63d0fc409af4183764e409c1f46557980699933ff4c919594ad28a17c8e1d72692c9b076c53cace516686716411c9fe86b37a4f7c98839ec9041b0638841ca97a06f9e982f225a72780122d8078902b8a2ce5ddecbaa1c16a23b82a4f639cbb80c060848994bf105bd97652a3537a8b8cd34dd7bac2a6b1605f9f23cbd64f5a88175ae27483b39608443f59aded845317c49a206bc91d8683eaef58a42b85561aa287f86b100eda778e1988e22f84252ee5efcaaae1ff5734f27c5d6c2ece7befd169d9a9c650a112d7c425996784148965a1ea82370b86c1c3e2d946b015f6c078e96f7d3c212d291b6b2be17fa39070766e07085a59af890abf7dfc8eaeeceb950f9523b6498eb4983de3e609f7a9e6b61011354af070c22211420ac01f4a3820eb016875bee77007a90d6541fd92d37dffda87ee00c26742768c4829cb238b874372d67f0a13bf325ada6efa050d6523285ca91b52202bf4f1a6de73bf0ec30740fe7307435010d3e23df35f69057a287143a2e4b4e55dc626c9212568707e909f5909ff7882f44495978460cf8660df068f2cdafbc04185c4d7686a6009cba72bc32389a91daefba1f10948bb17131792762f23781f71a42506c7f6983fa12e2c7b5912d972968b437ff249e2621d0bf7152586f04614aae0a2457582a36471c2377bd727b8f6c94c6979b43e3cc78e92dd3ed69d732f2fe30cadaadad10746873463a5403525e126bb7633180f2a293a316ec133ed5ef144d2e06429a2f4543f9debbd70d3d645d28fc0e48fe270fe02241d278e6ab885c3e51ac1ce4e2b68b71291cf56480b1b88f74f4a554782ea274b9eac4bb8fbd63aacab7c5081fa11aa1b2509e8e752e27429bfe9700b55bfc368d2f967d16c3125364cda4b03c6e9143589f218bd12f1b03492958c561911ca1687fd6e5ad7612fa69ef5138b5ec086bd91d53dfaa5ec5df2d1f286ae7f9d71eeeb0b43f51137e9756ba9bef657666cbc070d502b9cc949a5c4b19b00dab76f87c194bb7 +./icmpv6_fuzz.pcap-dist a001a8bbd9d56422c06bd4c70cfb014bad4b85a879819038ee8f204a65c5d414d116bcf02c5f321081767d0b55db63ac4a3be536f9a75c9d466fc2c00532740d4d881236b73de7de7bb30655623959e5dee1edc48d875a0ce0cb41635bfdee66a15567bc4ccf4de9de9049e1b2bb24d08152ce6106901e6f3edbb4a4eea70e7bfb7e107368819b3c03871bb7f55c68ea9d8151a56f1f3ade4892880d288b1dc5395f5e9d1c0859785ad73e564288ed8ff883276e356d8f7fafe102ac77eb1a0b481274db61d74e680da0397a041881cff62b27bbccbb54527216f4bb4ad295c1c4c187c2ffb30e24edbee93cf16017716b11dbb9fa31e88b1aa79f7153b72a543c6403b5fa0be9e26951255e7172e6f81b32760bbefe8577f2379cc982302e0457a0803722c8fcbd9a82c073ad0e306efd07054d46b0e478721f568b98a901d37dd572d39638ef2e9ca5faa9dca438718d7c990e9506d20384e690ce423e9ef94f5a552b6609918a64a365828be66117adfea7b4aa57486f102dba95138ca2bb6814cac08c5085d4269a06c9ed13b3ca69887430a4238a7f8d086f31fd57df50a8b52108d605263d4b85b09d1fcdb170e25dcfa835beaa587a7defe979dd1eb8d7bec0f693beedb9fef53fe1 +./icmpv6_fuzz.pcap-dist 82b34b7b71bb9695ed48a1ffde96de9c706b1e5337da900b8cf122ad4eeda5ad2d772e79c6d381f5b6108922fde10f1e51682adb282e91f6ef60c98eb33e7a0e667c447cc137c6f37e8a7a6ebb734f051bfa8fbc761e2e63f4c44205b75e67763c0785a15a6b5a483d3e0fc5dbde9aa02e6b7189b1b3f7255f8c0179f2aa1c95ffaf73dc056e1b160d3ed5c092864834342c56c6e4ea4a64c128533c2dbe7150a2a54b9fa77a3100eaa4295d14d94a4062cb4766f7f13f426ce7df25c149c5e3ab60a2d28cc4e517c5157556a9958fe8d2ec5fd9dda5159929fe49386aa75274ae96489480e55e451d09f5ea9facb96bc5ebbc9fd1c5cdce61cdae592cfb4ecb1eb677c649b2d3a8681fafe22a2d4105c9a7770a585ce89b3341340f91b6118fb103e19e077bee5801fba4a6cef5ed8c1ece6265f4655f1f02561ffd7295ab13a72a94840941da989aa08620aa7784cac74b3ea6e2810ed573b674548c5c32d10197199dcb8175ed35dc59331f8cb635f5a435941a3f220980523a4c0d8b2a1337f4eb9c0e3608d26d9f8972 +./icmpv6_fuzz.pcap-dist 9bc0cd0a2d482c8d883f96fdd971f65b0ea4eb512c54f065bf565cd85c5dca9e358283d150eadc97e5880b0663384dae024795a246d5f6dec573a6428f6bef93a28a5a80361247b4c0cc6c56b5b86faf225a4188d67a2d2048c792add622bef2aa2b59d1a92c59bbdd421acf7e55f8a550ef7ec5282f980b84f176786a3b16163442913751e2b95be2d8cce96b0b12240029e7ce6999590d07b090965f64f1dabd56410e6ae85e018ff1a8920e36b83f0abd8692b64f4a5d650d7527a69d820a32d462cbb3808062312717e6c03010965ce626e97fd99f63a9b49c9c6455 +./icmpv6_fuzz.pcap-dist 3b8a767667a83286e24875cd88d7f570cc1ba740da2648b6347da1c519d219038203d85db67ae3b4f26f79e2c5ffb2d624cddd167ffde50ae128f3062c72b945d238bbe7c4c1ee7064cf580147e63e93729391d3337bf11dd3f8177d9760b9d44bef0c9f3935191c922f34f7700caf9a49ca3da847f4c9c9096f129e22979c916c00c8f813263ac167f7165002f257f89b63e3999606d67d1ba58fb91301f22b50b6da613a5e5004bf3d793dadd4065f6a06fbb9c77dd638499e5695c27e78e2f6c956035cf9d8b241ebce0954bc1111a1160cf9506bd3072b7c9d3799e1bf8547533ebe45cb1c8a120cabb8debed0795eeea63522ed193f0baffeba4a49b1caf4a6b4a0042cd411542acb8dd5d712b70af2ada737cc53f53c29a3a247e3c9fb432341c0ff8f4032455ef18ee163542016908975619060f1ff4318b425ce2d4cf2056a63cf39a15d0de1bf553c73cc057c1e1b47fb247263913103a4c8f0ec8390ce0a46a0e50dd0d81c23e55e95f12284973ee4e5400f6bdd20bc92ed8536543b7e902497fa5bafa4ab766bc1c719aef3646724aac473b75f6a5e9fed851603cc19de351644da0fe9f159e7f89d9d2f47c8b12ae6ea6f9e581dbb059ebeb2f3aaf151bb73d7c9765939c1ead04c1ed1313c26314235b643282fadf5b385045a07d3a6a9cfc136382745905e150027432338f242c96a88dc6e3693c06d8362c00bed65add6dc17c43567da5a0c04f410653d893d89a4b0f0acf936b653ee649d2877b93eaeb2832cd230c9ccff4192cd9a1b079889b6c9a08b9c77e63e4bc82f678937785c21d28009025dce8055f0fbfbf85294a73851624c7cc613ff2c2f9b9cf926813222177db0ffb6eb694813c50860e3adcd1c9e4eede88e56235691a2e6d634c5c5c3c520380b92e002bd37f489468857f92f7188f7276d37c9c264174e28c8cc9daed438b8d7b4f4c7eec187b634bb6e7807a998856d548bc47c276247ec8e837aba62945c23114b2fce547f65385a97f014e70f10fca4d2679694efdbb33fe032b337a7bd287a8c4e69feb2ef278465a4d7bd4d4059be5f8dd2d64abcb02fd29040f382945741c0a9aa50391efa0ad2b4981df5870bcb7160c90e4789df076a06e69c339d3c17a411ec51a4c7bbcb2a5631211e9b905aa165457f4b8202041aac63a2e8365915462b9879190043566e4bc23fb38b7180490c87fc18631f4d662f8f247a3ced472e5e55bdf801ad00a67bd097e175863e1b03a42ecaa60d2a0b9dda6a4f4ecad22037fda6f9d0459323444b417cdf31d28d8114bc70f8d184e995e16c0f27064593265f83d555f78912cc9003fbee6515211581cf928b5ff752182b3f6c156fa46a45362bdab75fd3af7878a8a637fdfa8970938f90850607002240910b131ea04c416262ee59bd +./icmpv6_fuzz.pcap-dist c3374f6cab5c4844e68e1a83159263b18d2ffe4f38517de9f3f23c1fa5da65356f4261ee211d23f7702eda6b009cc04af2eca0ef1ceff804e4a75931d1e9de66de5830ce382fe6585b485d5a0748e68cc12879b08462db48036b8a24a97c71cfd66db99ad025148675807c1a53748856000f68bd756fa2918c8c2f213bb8160c24a0dd94021bbe2c96f86276b1e1b5449010ff0ca10ed6a2d8714ab813d6103727ee05ab599babb3c3dba44add71b639d1b25c5e00d0d10f26b5b31ef5a8c0c8d07c022d59102d63fdc4a0e920984427e4c5c778f122f9e6daff5ecd3abeec027358b8be443513911bf6b01782745bad5dbf9320f4eb94666d9d28340dd3a8d561ec8d0d1b60b506e601941043ac48d9af01ab06c07472b09e35c034b52151bb76261e514fe6f3bd00a3a276fa56919126d93b3114ba4d422f03956af2238b6ac71854ea1c7a11ab0b4000814737bc8475ff +./icmpv6_fuzz.pcap-dist 6e036b9ad90e822601cc516e618d2063ef38f7c6998b773b286cd2783c0f68a94e032ae84536e13c3e680d54a824bc19578c2b7fa325691c164a84d4ee5d40c0711e493b1f2ed8ad7d4ca202 +./icmpv6_fuzz.pcap-dist bcc74848c7558b28ec7919f7b7c66a905d9afa8809a928d334104cc51b745811c791d594c90d3a6ab8f12f40d3f3f1d928003d336f838f029826f70b9dfd820092b4c0fe464feeb43dd409290067522aa426a1cbf283515886e4ee98ad5940dc7303079e2fbb16b496fca27f1770208ae0edd93c9d14660ab3dcb55a0039084a85fbff6b392b14b0aa0aaccb15e440f1b2df9f00a73e3fb8be66606bd481c1577e7b4377c0009cebec8145bc29a977f0eae7a11969a5782ba6f4fe1b1735053695598cfa3ab160d32364c620457e3b54a13d9141ea956bab7cc16b792d70dc400541d663744e604c6d26e3d032824ac38da178388165899260a8b59effed64086bd3bde10b3158f6ecf542473af32d3019a8f39683bcf249d5266b86d350138bca853a0a3a046ff754d2097454b24951719d8d0802cebd1bb59d10c7bc72ca6935a8701c4a533ba6d7db73d01548e4c77f147e55eddf87bc1f21a65502b4bb4052c44339d9223010189e51421e31447c74683ee5894bb60ee1024844e7940ab6a4871a96806a1c1739c7cc5a20ae6e7cc65feeccd85a611f4b7b0214ca3b84d331ecacbac176f4896bad626fb5218552e7634dfc40837daebb56669513ce881d2b487517e45641cf8436e3768d +./icmpv6_fuzz.pcap-dist 3b1133d23ceb23766a4485de8b376a02157f11e908eacd9f6c503b3f191dddb51ba8f5aecc7a5dcd502598d0fa226dfa45969363df1de0c11e212c2bb3b6531dda352d48dd09a6e629da854773762a3c609271584f5d1a809d4e13316edd2bbdbc476c9300b5aa21c5d9f14524c5fc64c8e0c01ecd61bc1b3c3eced055330acb7ee99ac92c4e4811650eecedb07e98995b71e2bf08c1715d6917066c989b50e19448736ded38fa53e1f4a276cd1745a0f16bfc0fa178c314ef0f210d642b93e201414878440bcbb5be8f4e39c79d6e1513c53ec29d6768b9e8931419c3bd7ddcf8b2c59f66aeb6838f14ca5c71c8b06cb88076bd63b0a65a4fec7615bcdab38e329f8bb2dbce68388e6550b145bb8c24e91ca3fb5807378b6c1c405869d4de01d67eba4624b0480d908193bfe6e5ed78af7bb0bf8ba3bbf1697eb8038a40b8df6e60fe476137dfbdc0f79ce5fabc2214ea7be628ba8cb4162ef1ddcb94f194aa75a2f703977463c5f848ea4c3b49ed8f741433078a7cd6ce2ee7ae27cc4d38b1a30a5df94d85aea612b6cf44e614d6018377a117e89d1e7fea6061b7fd0af8c00e2a528f2118c7498ebc0d8572eb9c2dc49816ff42a55bf6b23f88905ddf9c83c923e5f79515abaae26f0f47ea94df15f7ddfe9d7a045c55762a1897e51e8eaea7bd153a9b2de017f69d43458c6fa33ef6e7e93db3528dc8705863af5dc3713996e8b2da8f0640cbc690bd82a9cb46a8813aa01f0daa6f4e638b5ecff597a88aa122a3f153fb8054cd271e4f17b82f83994f41f1a504506dd5ddf6a95e66331addaf2b7fd773b4d1774e5aa7bff4e830451189cc462063e9353da397d5f7b00f681540b9f536f5aa5f7044661c5c079b6c7fcb339dd74d0e0b32f4a67a72ef7da350a3ac0a251c43b46167b4f79f8907e50061ee735a0772b47aaf22a4bc53be76a13d3739ef84802cd09443ede2330be90ab57d5290f1ef2a2f399437241a14282f92f52193e42bb16a9272a1d1cb0a5a1db1be6b7a39f23baa22f10d6a8943210b6ebf6f43305ae30bb5c2b83a4ea7262d677b94d9c88a2437d57395c1c820e2a726aa2b1592b9a4164176c56849c444ac02a6f165e2f24d778a162cc2d0acbd853c8edbbe3621f7232679da8f371bf8429c5abfa223a1f1668cbc7634e05dc84c4919c431bf5c3fa67c0a644768cf4500009fa306d0eeced6889526bf673246769116207241922c20f93833c239ccd48c1874d83103164db9b215f7f9bb492eb168589cfa4085a11d9039805f1ce2b75c20175323613c2b21d8338bd67dd51bfb16c1c4cedce27ff6ae6860496ecaf22bf9969db24a80b337e0d9edeac19bac9abec91d3694a19b0dc72d01d2100d0b725d431f820d8d216c01286aff35d1031ed7fbaf93c5bdc485851f385b0531dc3d08b6ff9942a6a16586f07b4c2a062ae44310b7278387f60430519ce4d00f6b9f77b210895329bb701850a94d4a5248189bbdbc12405f59318113aae4d7cc6ad3c951e5aa154d68b3aecb +./icmpv6_fuzz.pcap-dist aa416213be16343e07e97568314323defa6e1e2f44047efb23944f7dab8717111e609b64733c0042290318da617e885647e7c53efe91ecb1468c5820d4c33d466372e26e292b1ef0c97cfc729c3395dbfb03 +./icmpv6_fuzz.pcap-dist 7d2186a675e1199634f7f7d301d6be059ef13f985276a0d562614272de48fb4c7846a33a605a757840b73e121178f452297dcafa85818bb1e7b23ca049113ec17e8a9537c30ae4aa3080dd63464e8da1f63e2e80b3350f22da559527dfff639124d6c50b714b507d95bc58317716f94344bdaa4879175b80e8011e9df94507efef9a55291ed6d6ecae0a98c895dc8cc32eb57cd5c09841e7c807007ccb849ad19f8fc65b9a3c619fcf74103b9735429b43425e7473d007ea0b7b24e1c3e3f5f84b596d0ef32079bcfe70097287d8fde2eda8a12f432096ab671693200c8c50b4b0dc05ab5037c5df1ed93c4e9222d36ca86662c1a943f7b9bcc378c173052e5d8f224bd545b001 +./icmpv6_fuzz.pcap-dist 6f4fa57a4dba1dc7794bed9b599e974397aa306a080b99584cb6f6e400a53878e76f7c50bdd6598a410b2dd2ca344311982548e148fc4bbf49f99e1314aafb53754ca75e685b2cdf39a56419cfda95335d71ceafd1ed3d7d2c2508fe01c536c8405247958a5f5e5ffbce5249b6d7f2df6ba10d8f7bfbc6c956ee2b66892d7c7a3c29e915c9a8eba62d4162fbac3ecb7b32f88cee1aec5bc58b3c4c18eb3e5bcbc57d462f071a2110d0a7bc5cb243e43eba1d1de7237ea1a47d66feaefe60c2a4ce7001899f528f779cd5200369a703e02e61cc88ddcb3f4226776a9474fd776c96bda5d862a7b0e9d4e9095e38438b76f2a529435776211b2ce073d79490edf623fd31adf1ddb540e92b5af72c14f891f2ba7a33e4c63d39d23de131dcccffbe6c35b9fc96f6ce8af30b88b8c980c8179f71a4b048beb48b316f4558df590bcbf0f73cc335cef0f7573c1ce97d4983c51f0713c9ce6c2c1b333d954d97c6d397a21950177ed5f507e0670d1ddf637cab1dead11ecd43bdff92258d0f2ddc02122837cc4bd237b6b7cc4fb26fa6ef0d2d20b906796478204f447bd867a7a991564d47cf0d029b1cc2312ca8249abe0b2e89aec9fc7d85d5783920f81c733ec82350a1bcd0d293dec4bfbcc98abb0ee82e9a1c60ac87af7eca4d643aeb6287a628623bc1e6f2cdfa6c980ee62648dc18a6baea7b56f87548d8534d37cde0ead7abb6443dd52d9afd8aa7937a50202c53258ae89988a6eeca297dfd1d9c0997afdf07c9d6c8ad79e5b50e7476cba8d6723d366883e47f8a0b7b0069b59f03711b73281d9946d2aac1ea4758cc6bbb99f37d499c62c0587fc0f4d24d365f0cae717c9e959b67b531227c2edc2f19ed0969ec3ef86001c6eaf62cabc8974928d5cbe513d9b39c00b1b72e505a72901647fa4bd896402e80d3107b241a861fb67ac8707d90a904b2515d5816e703d6d4525da7766aa09c3a2411604498a65b948cc1fd827ae820c6bb3d39dfc9479a1410c891c6bbb22ea400b79f5beaa3cba56ddbe3dfc140d24a65a79dd3401855e1ca24fd060f99396affc4dc3bd0dd9c12023f606d8499c7e5eb05c5abd07bfab3eb144162285ba3b9c1296e9cecbc8ebc5b6288fd4c01f503943f637e8dae2807405bf936c239f5d1ed08feb004d86a1081744bb37e707b1916e1e42578b1dd7f8eac1325dc9a48db0385ee1a2a41cd428072373556515a578038366b42641d14e5ae1bbdcfad1952a48bf04becb718e6a892c236467661437457e4540c53884cdced12de95740640f0ab83e4eb0397b67ea2b74f71a417a627769d44772045fdc66d95af74ffe630be06c49488112d08210b195a3939d7e6cbd812ec1db2488386bb8d63 +./icmpv6_fuzz.pcap-dist 8af6ec92148c0cc516710b3f58bfff26b9be442068c5e7c450aa31673babb1c243f3a712aaee68cf357d00d31f89b024390e1cefc79cd7586294f8c807170c57f885612c7188c4e90fcd1aef86ee1c998aa6557a2490f3a9d0240ee11d894243f911fa2128dc1a4eae02d3558ba74731c826e71e3d6d23d02c2f94c77561b09320f72769fdcafceb17503d5bd2cfaea928f056c8b89d102210bc4695311e1188824985288f97f6e45aaf2c0ae595de4582fdb57404bf345d3887b26d2672facb81ea77cce529e00bafb4cedc59a47d5ae5cd9eeeb855763f19aaf74a4163b64e5fe917ca8d66866967f2fd97832284e7c6fa37ce9fb8cabd2b1179c2ffda8e21ec7a22221a1e27757d75aa798f492dad4fcc76c74e9c19a556a32524987c75ebb00fa17712d695b9aa0535a69b88f15f35326bac8660b7199a258cd6bd98158d771db4c89e0262e3bcf71614436a138eecdd6c040cc1b4c475e0e189970223c85bc7ed9dd6536a8b981a994a93584713e523f31f6f91492aedc3cd5bd9fb92336ef16d8fe12c9e54728cff2f53f7c1eff39116807b43a3f991aaaa476ac1b979a69a8300cc285ffe36e08b7923c9dff740eeac501a80b19f06e798e1afbdf1476fcd80a3e4f29faed9986c44b683631ad42780d20c3fe0623a18eb16a5877a0d401ed890f5c77fcc35ff643bb9eeeee44dd9c6583372c067fb032c4fc149513340ba53e4acb10d450cf482222c6a3c4259492336a13ad105406c25b4a9fb3d994266e0839fe375584eafe8613aa13b4c863c03de50221d92e926d29963f11ea2a774de0f33e9bdfe2002dcbb3278fdfffeca08aff81065734d82d26f6c6273c8581c6e54b1b9487e0af8cfafd097b389f128211e3d0db3af4ff49cb6e24ee88aa0d66b786181b0c74484316768cbffeae4eab9a8ae8ab3d5a1057362d7492ccfec32085e6f8c6274049e0cf5e3491c193d4e994da77b4ca30bacda47f6cf1cb20f2dde9c02605f1428d728504157f2c037c83adbeaa5df6112e813595dc0dab47b9e669e6cde11ab1873836fd6cd9956292be4bbe9ed0ca3126101c52661427e8bd0a9e1e8c9f70e4156fc014fbefa7b92ef730e28f7b8864342f5a522d3eeaf5c792217a5647f15da00681bcb170409854512ab522fe273fbaad13696caedbf09d1341e1dec99a2696590b7f77f05abf30501022e13 +./icmpv6_fuzz.pcap-dist 90ca3bf19ecba8ddb239fc46cc4cf30a89282ab82169d753908314f4ae3a1999d6c1197aaaf11c87e51dd14b03fd13e5203ae159d79a04441373db7635d553a0ec512452abde537c4d762a42a438ab98ad04eac26a95c637be8e22008bc6d5acc3d1135917236b9b1c0e4eff4f2b46b3ed5b865e34d2c84b5ff309f71ed2f5f4d7cfc716de6814252a6cbd99102b014dbc986a06a977844992d99fbb479e207c07796e41d7a375e8d465b1d01462057d3965f038f470d86932992b654218e00d9acb3918f381bea38a7cd22ef32e44ceccd60bc24cdf28d0bea04134ee5b029cc3cb3f1c1f0474e1cad2c7654b2f2c99d76cbfa727494120c1d0e1f5c04506d90e28db9af4ea2530a0168eede564cb085c11114c9f91f8ea14f9d76ff02dcd03c190ab972de13bd56f5f05fba8f15a9f2abfa15eec0a8df2c05916eba0f5620c58f8d662bc87c480c726bd5e35e0a6ca2ee22caabec7d8780044e1e9434f0b17627dab385569a8a3b9f4df47034d216f92fdb75ce781fa4f93b9e15636a00c3db1448329231041e2e434460f41bd1eb1f7d93f6658c9fdc4868382cad7fb2f2e7014798e1e5a36817495260c65f3a9f3d1ae2d9afc45b163c25a57c6c4049d78ac13bf9f702e8d2d42019451a3814460d056b9520256ee34bb6492f0bdd7269585b5daa44bf1edf0e3140f38196c1488070fae92a749ab1a9659b9f1ec567fc193dd8689836fb31ca91df6318c5552dd5400c15fee653221126a78e1bb78149565e3c01ea22e310ad83f93ad818098a9f4e967dde52d57a4cf60f7ce9d4888746d5df6bd5b4345fd2eb0a32409cfd63946a38b3aede7f08f720b35687e8947a28b9fea9d5a6a9ddcd15dcb8cd8f56139462a3b0ae24b09e256cbfd4dd02e42931c0f03c36a9152f3e5c0f19d09d8af522160b86f3d233756048b7a1670b9e11de91b4f30f098064cec8400b7202c4b50d1e1d4c0fa4d311c668af6eeb40ce20eef7327cf41d3d8aba49e097a60c5c7d6af9c72c2b2d36e787c147e93cc9988494e43c0874af9c9bcf735b7fc5f3affe452298d224490b99e821d6a2228b7a68e40120e075916890d81e49bc9c00db6a17c0e38f031a098f870fa05d52a151e1ae6e0419b8de0349c383162471494830d9c591e8c1284a9186fc6033a654f80dd26f372ad2d8217fe153aedc926a20a19bab427d484dfd92dabd20f635283ac2ee9 +./icmpv6_fuzz.pcap-dist 574645115ac60a2b6dece36a624ad6bc4bce0aa778c2755434ecf0731368e7e81793ab7c38f6f93933f81d6635737bd9bc345eb45e45ea2bc3b1db38f7a40c481f9c4e5a8af12e74f7b8e312b516bf18dab9c6bd8058f62299966a03ae951ca232902a964816036bfedca754d763f5ebdcb38b0603a46b78bad5ad7842e908885951d38b297582ed0449aaf249e764c76883a1408d9447576e22ae54d052a68b3df3aeef79c95aa8e3eeb1549ff3f1d0115ee9563a21e3d19df01627e3fa3a968c5287c71531b7133948379bc951568224126129f952b21c82a46f9d784ccb39a5db0950a56c1c0cb37606fa699771360de1a1d6aab227256482e582cc6fd865ada6a6f17fbd6424598623f0e178cd75e20af040f902dc3b73144365807263fd92fb3b061e4be89167fc7dab027f6085 +./icmpv6_fuzz.pcap-dist 073a86c7 +./icmpv6_fuzz.pcap-dist c8ac6f6d +./icmpv6_fuzz.pcap-dist 9f3e121b +./icmpv6_fuzz.pcap-dist 59d6a595 +./icmpv6_fuzz.pcap-dist ae8881f9 +./icmpv6_fuzz.pcap-dist e1ddd6e4 +./icmpv6_fuzz.pcap-dist 80e776e2 +./icmpv6_fuzz.pcap-dist fcd7d447 +./icmpv6_fuzz.pcap-dist af2d0a68 +./icmpv6_fuzz.pcap-dist 30b53344 diff --git a/src/pcap-thread/hexdump/test/test5.sh b/src/pcap-thread/hexdump/test/test5.sh new file mode 100755 index 0000000..e05100e --- /dev/null +++ b/src/pcap-thread/hexdump/test/test5.sh @@ -0,0 +1,38 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +../hexdump -L icmp -r ./icmp_fuzz.pcap-dist >test5.out +../hexdump -L icmpv6 -r ./icmpv6_fuzz.pcap-dist >>test5.out + +diff test5.out "$srcdir/test5.gold" diff --git a/src/pcap-thread/hexdump/test/test6.gold b/src/pcap-thread/hexdump/test/test6.gold new file mode 100644 index 0000000..36a6c61 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test6.gold @@ -0,0 +1,104 @@ +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: yes +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: ./v4_frag_timeout_udp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: yes +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: ./v6_frag_timeout_udp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: yes +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 100 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: yes +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: ./v4_frag_timeout_tcp.pcap-dist +snapshot: 65535 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: yes +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 100 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: yes +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: ./v6_frag_timeout_tcp.pcap-dist +snapshot: 65535 diff --git a/src/pcap-thread/hexdump/test/test6.sh b/src/pcap-thread/hexdump/test/test6.sh new file mode 100755 index 0000000..0873fb5 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test6.sh @@ -0,0 +1,40 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +../hexdump -F 4 -F t4 -F p4100 -L udp -v -r ./v4_frag_timeout_udp.pcap-dist >test6.out +../hexdump -F 6 -F t6 -F p6100 -L udp -v -r ./v6_frag_timeout_udp.pcap-dist >>test6.out +../hexdump -F 4 -F t4 -F p4100 -L tcp -v -r ./v4_frag_timeout_tcp.pcap-dist >>test6.out +../hexdump -F 6 -F t6 -F p6100 -L tcp -v -r ./v6_frag_timeout_tcp.pcap-dist >>test6.out + +diff test6.out "$srcdir/test6.gold" diff --git a/src/pcap-thread/hexdump/test/test7.gold b/src/pcap-thread/hexdump/test/test7.gold new file mode 100644 index 0000000..63704bb --- /dev/null +++ b/src/pcap-thread/hexdump/test/test7.gold @@ -0,0 +1,180 @@ +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: ./padding.pcap-dist +snapshot: 65535 +name:./padding.pcap-dist ts:1513594001.549338 caplen:228 len:228 datalink:IPV4 data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +unprocessed(3) name:./padding.pcap-dist ts:1513594001.549841 caplen:240 len:240 datalink:IPV4 data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:./padding.pcap-dist ts:1513594001.550402 caplen:248 len:248 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +unprocessed(3) name:./padding.pcap-dist ts:1513594001.550740 caplen:260 len:260 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: ./padding.pcap-dist +snapshot: 65535 +unprocessed(3) name:./padding.pcap-dist ts:1513594001.549338 caplen:228 len:228 datalink:IPV4 data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:./padding.pcap-dist ts:1513594001.549841 caplen:240 len:240 datalink:IPV4 data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +unprocessed(3) name:./padding.pcap-dist ts:1513594001.550402 caplen:248 len:248 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:./padding.pcap-dist ts:1513594001.550740 caplen:260 len:260 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: ./missing_payload.pcap-dist +snapshot: 65535 +invalid ipv4(11) name:./missing_payload.pcap-dist ts:1513594001.788329 caplen:128 len:128 datalink:IPV4 data:00350035006cfb5c61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +invalid ipv4(11) name:./missing_payload.pcap-dist ts:1513594001.788825 caplen:140 len:140 datalink:IPV4 data:001400500000000000000000500220008bd7000061616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +invalid ipv6(12) name:./missing_payload.pcap-dist ts:1513594001.789318 caplen:148 len:148 datalink:IPV4 data:00350035006cf9a561616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +invalid ipv6(12) name:./missing_payload.pcap-dist ts:1513594001.789654 caplen:160 len:160 datalink:IPV4 data:001400500000000000000000500220008a14000061616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: ./missing_payload.pcap-dist +snapshot: 65535 +invalid ipv4(11) name:./missing_payload.pcap-dist ts:1513594001.788329 caplen:128 len:128 datalink:IPV4 data:00350035006cfb5c61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +invalid ipv4(11) name:./missing_payload.pcap-dist ts:1513594001.788825 caplen:140 len:140 datalink:IPV4 data:001400500000000000000000500220008bd7000061616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +invalid ipv6(12) name:./missing_payload.pcap-dist ts:1513594001.789318 caplen:148 len:148 datalink:IPV4 data:00350035006cf9a561616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +invalid ipv6(12) name:./missing_payload.pcap-dist ts:1513594001.789654 caplen:160 len:160 datalink:IPV4 data:001400500000000000000000500220008a14000061616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: ./padding.pcap-dist +snapshot: 65535 +name:./padding.pcap-dist ts:1513594001.549338 caplen:228 len:228 datalink:IPV4 data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 #6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +unprocessed(3) name:./padding.pcap-dist ts:1513594001.549841 caplen:240 len:240 datalink:IPV4 data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 #6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:./padding.pcap-dist ts:1513594001.550402 caplen:248 len:248 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 #616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +unprocessed(3) name:./padding.pcap-dist ts:1513594001.550740 caplen:260 len:260 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 #616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +use_threads: yes +queue_mode: cond +queue_wait: 0.0 +queue_size: 64 +snaplen: 0 +promiscuous: no +monitor: no +timeout: 1000 +buffer_size: 0 +immediate_mode: no +direction: inout +filter_optimize: yes +filter_netmask: 0xffffffff +filter: +defrag_ipv4: no +defrag_ipv6: no +max_ipv4_fragments: 100 +max_ipv4_fragments_per_packet: 10 +max_ipv6_fragments: 100 +max_ipv6_fragments_per_packet: 10 +check_frag_timeout_ipv4: no +check_frag_timeout_ipv6: no +frag_timeout_ipv4: 30 +frag_timeout_ipv6: 30 +file: ./padding.pcap-dist +snapshot: 65535 +unprocessed(3) name:./padding.pcap-dist ts:1513594001.549338 caplen:228 len:228 datalink:IPV4 data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 #6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:./padding.pcap-dist ts:1513594001.549841 caplen:240 len:240 datalink:IPV4 data:616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 #6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +unprocessed(3) name:./padding.pcap-dist ts:1513594001.550402 caplen:248 len:248 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 #616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 +name:./padding.pcap-dist ts:1513594001.550740 caplen:260 len:260 datalink:IPV4 data:6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 #616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 diff --git a/src/pcap-thread/hexdump/test/test7.sh b/src/pcap-thread/hexdump/test/test7.sh new file mode 100755 index 0000000..96c25b0 --- /dev/null +++ b/src/pcap-thread/hexdump/test/test7.sh @@ -0,0 +1,45 @@ +#!/bin/sh -xe +# Author Jerry Lundström <jerry@dns-oarc.net> +# Copyright (c) 2017-2023, OARC, Inc. +# All rights reserved. +# +# 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +rm -f test7.out + +for pcap in ./padding ./missing_payload; do + ../hexdump -L udp -v -r "$pcap".pcap-dist >>test7.out + ../hexdump -L tcp -v -r "$pcap".pcap-dist >>test7.out +done + +../hexdump -G -L udp -v -r ./padding.pcap-dist >>test7.out +../hexdump -G -L tcp -v -r ./padding.pcap-dist >>test7.out + +diff test7.out "$srcdir/test7.gold" diff --git a/src/pcap-thread/hexdump/test/v4_frag_dup_tcp.pcap b/src/pcap-thread/hexdump/test/v4_frag_dup_tcp.pcap Binary files differnew file mode 100644 index 0000000..ec4b205 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_dup_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_dup_udp.pcap b/src/pcap-thread/hexdump/test/v4_frag_dup_udp.pcap Binary files differnew file mode 100644 index 0000000..29c48d0 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_dup_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_empty_tcp.pcap b/src/pcap-thread/hexdump/test/v4_frag_empty_tcp.pcap Binary files differnew file mode 100644 index 0000000..b535df5 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_empty_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_empty_udp.pcap b/src/pcap-thread/hexdump/test/v4_frag_empty_udp.pcap Binary files differnew file mode 100644 index 0000000..cd31269 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_empty_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_nomf_tcp.pcap b/src/pcap-thread/hexdump/test/v4_frag_nomf_tcp.pcap Binary files differnew file mode 100644 index 0000000..e1c275f --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_nomf_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_nomf_udp.pcap b/src/pcap-thread/hexdump/test/v4_frag_nomf_udp.pcap Binary files differnew file mode 100644 index 0000000..203ebb6 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_nomf_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_offset_offbyone1_tcp.pcap b/src/pcap-thread/hexdump/test/v4_frag_offset_offbyone1_tcp.pcap Binary files differnew file mode 100644 index 0000000..88a6c1f --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_offset_offbyone1_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_offset_offbyone1_udp.pcap b/src/pcap-thread/hexdump/test/v4_frag_offset_offbyone1_udp.pcap Binary files differnew file mode 100644 index 0000000..763f6df --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_offset_offbyone1_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_offset_offbyone2_tcp.pcap b/src/pcap-thread/hexdump/test/v4_frag_offset_offbyone2_tcp.pcap Binary files differnew file mode 100644 index 0000000..0a62cfc --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_offset_offbyone2_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_offset_offbyone2_udp.pcap b/src/pcap-thread/hexdump/test/v4_frag_offset_offbyone2_udp.pcap Binary files differnew file mode 100644 index 0000000..a9405f2 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_offset_offbyone2_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_order_tcp.pcap b/src/pcap-thread/hexdump/test/v4_frag_order_tcp.pcap Binary files differnew file mode 100644 index 0000000..b1da2cd --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_order_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_order_udp.pcap b/src/pcap-thread/hexdump/test/v4_frag_order_udp.pcap Binary files differnew file mode 100644 index 0000000..eb9e381 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_order_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_skip_first_tcp.pcap b/src/pcap-thread/hexdump/test/v4_frag_skip_first_tcp.pcap Binary files differnew file mode 100644 index 0000000..cd6a5ca --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_skip_first_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_skip_first_udp.pcap b/src/pcap-thread/hexdump/test/v4_frag_skip_first_udp.pcap Binary files differnew file mode 100644 index 0000000..1b576b1 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_skip_first_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_skip_last_tcp.pcap b/src/pcap-thread/hexdump/test/v4_frag_skip_last_tcp.pcap Binary files differnew file mode 100644 index 0000000..314a23d --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_skip_last_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_skip_last_udp.pcap b/src/pcap-thread/hexdump/test/v4_frag_skip_last_udp.pcap Binary files differnew file mode 100644 index 0000000..a29b533 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_skip_last_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_skip_middle_tcp.pcap b/src/pcap-thread/hexdump/test/v4_frag_skip_middle_tcp.pcap Binary files differnew file mode 100644 index 0000000..f731ab5 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_skip_middle_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_skip_middle_udp.pcap b/src/pcap-thread/hexdump/test/v4_frag_skip_middle_udp.pcap Binary files differnew file mode 100644 index 0000000..2dd7c9a --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_skip_middle_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_timeout_tcp.pcap b/src/pcap-thread/hexdump/test/v4_frag_timeout_tcp.pcap Binary files differnew file mode 100644 index 0000000..8ae2ccb --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_timeout_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_frag_timeout_udp.pcap b/src/pcap-thread/hexdump/test/v4_frag_timeout_udp.pcap Binary files differnew file mode 100644 index 0000000..0d77f89 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_frag_timeout_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v4_tcp_opts_tcp.pcap b/src/pcap-thread/hexdump/test/v4_tcp_opts_tcp.pcap Binary files differnew file mode 100644 index 0000000..1bdfdcd --- /dev/null +++ b/src/pcap-thread/hexdump/test/v4_tcp_opts_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_dup_tcp.pcap b/src/pcap-thread/hexdump/test/v6_frag_dup_tcp.pcap Binary files differnew file mode 100644 index 0000000..9223cc0 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_dup_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_dup_udp.pcap b/src/pcap-thread/hexdump/test/v6_frag_dup_udp.pcap Binary files differnew file mode 100644 index 0000000..6f8bf14 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_dup_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_empty_tcp.pcap b/src/pcap-thread/hexdump/test/v6_frag_empty_tcp.pcap Binary files differnew file mode 100644 index 0000000..428f214 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_empty_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_empty_udp.pcap b/src/pcap-thread/hexdump/test/v6_frag_empty_udp.pcap Binary files differnew file mode 100644 index 0000000..49ba1a0 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_empty_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_nomf_tcp.pcap b/src/pcap-thread/hexdump/test/v6_frag_nomf_tcp.pcap Binary files differnew file mode 100644 index 0000000..1ac32cd --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_nomf_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_nomf_udp.pcap b/src/pcap-thread/hexdump/test/v6_frag_nomf_udp.pcap Binary files differnew file mode 100644 index 0000000..1eb446d --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_nomf_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_offset_offbyone1_tcp.pcap b/src/pcap-thread/hexdump/test/v6_frag_offset_offbyone1_tcp.pcap Binary files differnew file mode 100644 index 0000000..00438f9 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_offset_offbyone1_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_offset_offbyone1_udp.pcap b/src/pcap-thread/hexdump/test/v6_frag_offset_offbyone1_udp.pcap Binary files differnew file mode 100644 index 0000000..4ff04df --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_offset_offbyone1_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_offset_offbyone2_tcp.pcap b/src/pcap-thread/hexdump/test/v6_frag_offset_offbyone2_tcp.pcap Binary files differnew file mode 100644 index 0000000..d383b87 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_offset_offbyone2_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_offset_offbyone2_udp.pcap b/src/pcap-thread/hexdump/test/v6_frag_offset_offbyone2_udp.pcap Binary files differnew file mode 100644 index 0000000..aa65749 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_offset_offbyone2_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_order_tcp.pcap b/src/pcap-thread/hexdump/test/v6_frag_order_tcp.pcap Binary files differnew file mode 100644 index 0000000..e0026de --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_order_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_order_udp.pcap b/src/pcap-thread/hexdump/test/v6_frag_order_udp.pcap Binary files differnew file mode 100644 index 0000000..578ebd4 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_order_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_skip_first_tcp.pcap b/src/pcap-thread/hexdump/test/v6_frag_skip_first_tcp.pcap Binary files differnew file mode 100644 index 0000000..38ce18b --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_skip_first_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_skip_first_udp.pcap b/src/pcap-thread/hexdump/test/v6_frag_skip_first_udp.pcap Binary files differnew file mode 100644 index 0000000..2ee6682 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_skip_first_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_skip_last_tcp.pcap b/src/pcap-thread/hexdump/test/v6_frag_skip_last_tcp.pcap Binary files differnew file mode 100644 index 0000000..e30f60a --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_skip_last_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_skip_last_udp.pcap b/src/pcap-thread/hexdump/test/v6_frag_skip_last_udp.pcap Binary files differnew file mode 100644 index 0000000..424a79c --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_skip_last_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_skip_middle_tcp.pcap b/src/pcap-thread/hexdump/test/v6_frag_skip_middle_tcp.pcap Binary files differnew file mode 100644 index 0000000..e6ef367 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_skip_middle_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_skip_middle_udp.pcap b/src/pcap-thread/hexdump/test/v6_frag_skip_middle_udp.pcap Binary files differnew file mode 100644 index 0000000..af73c88 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_skip_middle_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_timeout_tcp.pcap b/src/pcap-thread/hexdump/test/v6_frag_timeout_tcp.pcap Binary files differnew file mode 100644 index 0000000..0be6047 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_timeout_tcp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_frag_timeout_udp.pcap b/src/pcap-thread/hexdump/test/v6_frag_timeout_udp.pcap Binary files differnew file mode 100644 index 0000000..b0bdda1 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_frag_timeout_udp.pcap diff --git a/src/pcap-thread/hexdump/test/v6_tcp_opts_tcp.pcap b/src/pcap-thread/hexdump/test/v6_tcp_opts_tcp.pcap Binary files differnew file mode 100644 index 0000000..a96a9c0 --- /dev/null +++ b/src/pcap-thread/hexdump/test/v6_tcp_opts_tcp.pcap diff --git a/src/pcap-thread/m4/ax_append_flag.m4 b/src/pcap-thread/m4/ax_append_flag.m4 new file mode 100644 index 0000000..dd6d8b6 --- /dev/null +++ b/src/pcap-thread/m4/ax_append_flag.m4 @@ -0,0 +1,50 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_append_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) +# +# DESCRIPTION +# +# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space +# added in between. +# +# If FLAGS-VARIABLE is not specified, the current language's flags (e.g. +# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains +# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly +# FLAG. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de> +# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com> +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 8 + +AC_DEFUN([AX_APPEND_FLAG], +[dnl +AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF +AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])]) +AS_VAR_SET_IF(FLAGS,[ + AS_CASE([" AS_VAR_GET(FLAGS) "], + [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])], + [ + AS_VAR_APPEND(FLAGS,[" $1"]) + AC_RUN_LOG([: FLAGS="$FLAGS"]) + ]) + ], + [ + AS_VAR_SET(FLAGS,[$1]) + AC_RUN_LOG([: FLAGS="$FLAGS"]) + ]) +AS_VAR_POPDEF([FLAGS])dnl +])dnl AX_APPEND_FLAG diff --git a/src/pcap-thread/m4/ax_cflags_warn_all.m4 b/src/pcap-thread/m4/ax_cflags_warn_all.m4 new file mode 100644 index 0000000..094577e --- /dev/null +++ b/src/pcap-thread/m4/ax_cflags_warn_all.m4 @@ -0,0 +1,122 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] +# AX_CXXFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] +# AX_FCFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] +# +# DESCRIPTION +# +# Try to find a compiler option that enables most reasonable warnings. +# +# For the GNU compiler it will be -Wall (and -ansi -pedantic) The result +# is added to the shellvar being CFLAGS, CXXFLAGS, or FCFLAGS by default. +# +# Currently this macro knows about the GCC, Solaris, Digital Unix, AIX, +# HP-UX, IRIX, NEC SX-5 (Super-UX 10), Cray J90 (Unicos 10.0.0.8), and +# Intel compilers. For a given compiler, the Fortran flags are much more +# experimental than their C equivalents. +# +# - $1 shell-variable-to-add-to : CFLAGS, CXXFLAGS, or FCFLAGS +# - $2 add-value-if-not-found : nothing +# - $3 action-if-found : add value to shellvariable +# - $4 action-if-not-found : nothing +# +# NOTE: These macros depend on AX_APPEND_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de> +# Copyright (c) 2010 Rhys Ulerich <rhys.ulerich@gmail.com> +# +# This program 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 (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, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 16 + +AC_DEFUN([AX_FLAGS_WARN_ALL],[dnl +AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl +AS_VAR_PUSHDEF([VAR],[ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl +AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings], +VAR,[VAR="no, unknown" +ac_save_[]FLAGS="$[]FLAGS" +for ac_arg dnl +in "-warn all % -warn all" dnl Intel + "-pedantic % -Wall" dnl GCC + "-xstrconst % -v" dnl Solaris C + "-std1 % -verbose -w0 -warnprotos" dnl Digital Unix + "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX + "-ansi -ansiE % -fullwarn" dnl IRIX + "+ESlit % +w1" dnl HP-UX C + "-Xc % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10) + "-h conform % -h msglevel 2" dnl Cray C (Unicos) + # +do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) +done +FLAGS="$ac_save_[]FLAGS" +]) +AS_VAR_POPDEF([FLAGS])dnl +AX_REQUIRE_DEFINED([AX_APPEND_FLAG]) +case ".$VAR" in + .ok|.ok,*) m4_ifvaln($3,$3) ;; + .|.no|.no,*) m4_default($4,[m4_ifval($2,[AX_APPEND_FLAG([$2], [$1])])]) ;; + *) m4_default($3,[AX_APPEND_FLAG([$VAR], [$1])]) ;; +esac +AS_VAR_POPDEF([VAR])dnl +])dnl AX_FLAGS_WARN_ALL +dnl implementation tactics: +dnl the for-argument contains a list of options. The first part of +dnl these does only exist to detect the compiler - usually it is +dnl a global option to enable -ansi or -extrawarnings. All other +dnl compilers will fail about it. That was needed since a lot of +dnl compilers will give false positives for some option-syntax +dnl like -Woption or -Xoption as they think of it is a pass-through +dnl to later compile stages or something. The "%" is used as a +dnl delimiter. A non-option comment can be given after "%%" marks +dnl which will be shown but not added to the respective C/CXXFLAGS. + +AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl +AC_LANG_PUSH([C]) +AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) +AC_LANG_POP([C]) +]) + +AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl +AC_LANG_PUSH([C++]) +AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) +AC_LANG_POP([C++]) +]) + +AC_DEFUN([AX_FCFLAGS_WARN_ALL],[dnl +AC_LANG_PUSH([Fortran]) +AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) +AC_LANG_POP([Fortran]) +]) diff --git a/src/pcap-thread/m4/ax_pcap_thread.m4 b/src/pcap-thread/m4/ax_pcap_thread.m4 new file mode 100644 index 0000000..8831822 --- /dev/null +++ b/src/pcap-thread/m4/ax_pcap_thread.m4 @@ -0,0 +1,15 @@ +AC_DEFUN([AX_PCAP_THREAD_PCAP], [ + AC_HEADER_TIME + AC_CHECK_LIB([pcap], [pcap_open_live], [], AC_MSG_ERROR([libpcap not found])) + AC_CHECK_HEADER([pcap/pcap.h], [], [AC_MSG_ERROR([libpcap header not found])]) + AC_CHECK_HEADERS([endian.h sys/endian.h machine/endian.h sys/time.h]) + AC_CHECK_FUNCS([pcap_create pcap_set_tstamp_precision pcap_set_immediate_mode]) + AC_CHECK_FUNCS([pcap_set_tstamp_type pcap_setdirection sched_yield]) + AC_CHECK_FUNCS([pcap_open_offline_with_tstamp_precision pcap_activate]) + AC_CHECK_TYPES([pcap_direction_t], [], [], [[#include <pcap/pcap.h>]]) +]) + +AC_DEFUN([AX_PCAP_THREAD], [ + AX_PTHREAD + AX_PCAP_THREAD_PCAP +]) diff --git a/src/pcap-thread/m4/ax_pthread.m4 b/src/pcap-thread/m4/ax_pthread.m4 new file mode 100644 index 0000000..4c4051e --- /dev/null +++ b/src/pcap-thread/m4/ax_pthread.m4 @@ -0,0 +1,485 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_pthread.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +# +# DESCRIPTION +# +# This macro figures out how to build C programs using POSIX threads. It +# sets the PTHREAD_LIBS output variable to the threads library and linker +# flags, and the PTHREAD_CFLAGS output variable to any special C compiler +# flags that are needed. (The user can also force certain compiler +# flags/libs to be tested by setting these environment variables.) +# +# Also sets PTHREAD_CC to any special C compiler that is needed for +# multi-threaded programs (defaults to the value of CC otherwise). (This +# is necessary on AIX to use the special cc_r compiler alias.) +# +# NOTE: You are assumed to not only compile your program with these flags, +# but also to link with them as well. For example, you might link with +# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS +# +# If you are only building threaded programs, you may wish to use these +# variables in your default LIBS, CFLAGS, and CC: +# +# LIBS="$PTHREAD_LIBS $LIBS" +# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +# CC="$PTHREAD_CC" +# +# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant +# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to +# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +# +# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the +# PTHREAD_PRIO_INHERIT symbol is defined when compiling with +# PTHREAD_CFLAGS. +# +# ACTION-IF-FOUND is a list of shell commands to run if a threads library +# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it +# is not found. If ACTION-IF-FOUND is not specified, the default action +# will define HAVE_PTHREAD. +# +# Please let the authors know if this macro fails on any platform, or if +# you have any other suggestions or comments. This macro was based on work +# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help +# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by +# Alejandro Forero Cuervo to the autoconf macro repository. We are also +# grateful for the helpful feedback of numerous users. +# +# Updated for Autoconf 2.68 by Daniel Richard G. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu> +# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG> +# +# This program 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 (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 <http://www.gnu.org/licenses/>. +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 23 + +AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) +AC_DEFUN([AX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_PROG_SED]) +AC_LANG_PUSH([C]) +ax_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on Tru64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then + ax_pthread_save_CC="$CC" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"]) + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS]) + AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes]) + AC_MSG_RESULT([$ax_pthread_ok]) + if test "x$ax_pthread_ok" = "xno"; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + CC="$ax_pthread_save_CC" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 +# (Note: HP C rejects this with "bad form for `-t' option") +# -pthreads: Solaris/gcc (Note: HP C also rejects) +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads and +# -D_REENTRANT too), HP C (must be checked before -lpthread, which +# is present but should not be used directly; and before -mthreads, +# because the compiler interprets this as "-mt" + "-hreads") +# -mthreads: Mingw32/gcc, Lynx/gcc +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case $host_os in + + freebsd*) + + # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) + # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) + + ax_pthread_flags="-kthread lthread $ax_pthread_flags" + ;; + + hpux*) + + # From the cc(1) man page: "[-mt] Sets various -D flags to enable + # multi-threading and also sets -lpthread." + + ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" + ;; + + openedition*) + + # IBM z/OS requires a feature-test macro to be defined in order to + # enable POSIX threads at all, so give the user a hint if this is + # not set. (We don't define these ourselves, as they can affect + # other portions of the system API in unpredictable ways.) + + AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING], + [ +# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) + AX_PTHREAD_ZOS_MISSING +# endif + ], + [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])]) + ;; + + solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (N.B.: The stubs are missing + # pthread_cleanup_push, or rather a function called by this macro, + # so we could check for that, but who knows whether they'll stub + # that too in a future libc.) So we'll check first for the + # standard Solaris way of linking pthreads (-mt -lpthread). + + ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags" + ;; +esac + +# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) + +AS_IF([test "x$GCC" = "xyes"], + [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"]) + +# The presence of a feature test macro requesting re-entrant function +# definitions is, on some systems, a strong hint that pthreads support is +# correctly enabled + +case $host_os in + darwin* | hpux* | linux* | osf* | solaris*) + ax_pthread_check_macro="_REENTRANT" + ;; + + aix*) + ax_pthread_check_macro="_THREAD_SAFE" + ;; + + *) + ax_pthread_check_macro="--" + ;; +esac +AS_IF([test "x$ax_pthread_check_macro" = "x--"], + [ax_pthread_check_cond=0], + [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) + +# Are we compiling with Clang? + +AC_CACHE_CHECK([whether $CC is Clang], + [ax_cv_PTHREAD_CLANG], + [ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], + [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + ], + [ax_cv_PTHREAD_CLANG=yes]) + fi + ]) +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + +ax_pthread_clang_warning=no + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + PTHREAD_CFLAGS="-pthread" + PTHREAD_LIBS= + + ax_pthread_ok=yes + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown + # Create an alternate version of $ac_link that compiles and + # links in two steps (.c -> .o, .o -> exe) instead of one + # (.c -> exe), because the warning occurs only in the second + # step + ax_pthread_save_ac_link="$ac_link" + ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' + ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"` + ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" + ax_pthread_save_CFLAGS="$CFLAGS" + for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do + AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [ac_link="$ax_pthread_2step_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [break]) + ]) + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + ]) + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac + +fi # $ax_pthread_clang = yes + +if test "x$ax_pthread_ok" = "xno"; then +for ax_pthread_try_flag in $ax_pthread_flags; do + + case $ax_pthread_try_flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + -mt,pthread) + AC_MSG_CHECKING([whether pthreads work with -mt -lpthread]) + PTHREAD_CFLAGS="-mt" + PTHREAD_LIBS="-lpthread" + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) + PTHREAD_CFLAGS="$ax_pthread_try_flag" + ;; + + pthread-config) + AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) + AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) + PTHREAD_LIBS="-l$ax_pthread_try_flag" + ;; + esac + + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h> +# if $ax_pthread_check_cond +# error "$ax_pthread_check_macro must be defined" +# endif + static void routine(void *a) { a = 0; } + static void *start_routine(void *a) { return a; }], + [pthread_t th; pthread_attr_t attr; + pthread_create(&th, 0, start_routine, 0); + pthread_join(th, 0); + pthread_attr_init(&attr); + pthread_cleanup_push(routine, 0); + pthread_cleanup_pop(0) /* ; */])], + [ax_pthread_ok=yes], + []) + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + AC_MSG_RESULT([$ax_pthread_ok]) + AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$ax_pthread_ok" = "xyes"; then + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_CACHE_CHECK([for joinable pthread attribute], + [ax_cv_PTHREAD_JOINABLE_ATTR], + [ax_cv_PTHREAD_JOINABLE_ATTR=unknown + for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>], + [int attr = $ax_pthread_attr; return attr /* ; */])], + [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break], + []) + done + ]) + AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ + test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ + test "x$ax_pthread_joinable_attr_defined" != "xyes"], + [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], + [$ax_cv_PTHREAD_JOINABLE_ATTR], + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + ax_pthread_joinable_attr_defined=yes + ]) + + AC_CACHE_CHECK([whether more special flags are required for pthreads], + [ax_cv_PTHREAD_SPECIAL_FLAGS], + [ax_cv_PTHREAD_SPECIAL_FLAGS=no + case $host_os in + solaris*) + ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" + ;; + esac + ]) + AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ + test "x$ax_pthread_special_flags_added" != "xyes"], + [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" + ax_pthread_special_flags_added=yes]) + + AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], + [ax_cv_PTHREAD_PRIO_INHERIT], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], + [[int i = PTHREAD_PRIO_INHERIT;]])], + [ax_cv_PTHREAD_PRIO_INHERIT=yes], + [ax_cv_PTHREAD_PRIO_INHERIT=no]) + ]) + AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ + test "x$ax_pthread_prio_inherit_defined" != "xyes"], + [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.]) + ax_pthread_prio_inherit_defined=yes + ]) + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + # More AIX lossage: compile with *_r variant + if test "x$GCC" != "xyes"; then + case $host_os in + aix*) + AS_CASE(["x/$CC"], + [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], + [#handle absolute path differently from PATH based program lookup + AS_CASE(["x$CC"], + [x/*], + [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])], + [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])]) + ;; + esac + fi +fi + +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" + +AC_SUBST([PTHREAD_LIBS]) +AC_SUBST([PTHREAD_CFLAGS]) +AC_SUBST([PTHREAD_CC]) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test "x$ax_pthread_ok" = "xyes"; then + ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) + : +else + ax_pthread_ok=no + $2 +fi +AC_LANG_POP +])dnl AX_PTHREAD diff --git a/src/pcap-thread/m4/ax_require_defined.m4 b/src/pcap-thread/m4/ax_require_defined.m4 new file mode 100644 index 0000000..17c3eab --- /dev/null +++ b/src/pcap-thread/m4/ax_require_defined.m4 @@ -0,0 +1,37 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_require_defined.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_REQUIRE_DEFINED(MACRO) +# +# DESCRIPTION +# +# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have +# been defined and thus are available for use. This avoids random issues +# where a macro isn't expanded. Instead the configure script emits a +# non-fatal: +# +# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found +# +# It's like AC_REQUIRE except it doesn't expand the required macro. +# +# Here's an example: +# +# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) +# +# LICENSE +# +# Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org> +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 2 + +AC_DEFUN([AX_REQUIRE_DEFINED], [dnl + m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])]) +])dnl AX_REQUIRE_DEFINED diff --git a/src/pcap-thread/m4/dl.sh b/src/pcap-thread/m4/dl.sh new file mode 100755 index 0000000..6f12c04 --- /dev/null +++ b/src/pcap-thread/m4/dl.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +m4_files="ax_append_flag.m4 ax_cflags_warn_all.m4 ax_require_defined.m4" + +for ax in $m4_files; do + rm -f "$ax" + wget -O "$ax" "http://git.savannah.gnu.org/gitweb/?p=autoconf-archive.git;a=blob_plain;f=m4/$ax" +done diff --git a/src/pcap-thread/pcap_thread.c b/src/pcap-thread/pcap_thread.c new file mode 100644 index 0000000..b082925 --- /dev/null +++ b/src/pcap-thread/pcap_thread.c @@ -0,0 +1,3827 @@ +/* + * Author Jerry Lundström <jerry@dns-oarc.net> + * Copyright (c) 2016-2023, OARC, Inc. + * All rights reserved. + * + * 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" + +#include "pcap_thread.h" + +#include <errno.h> +#include <stdlib.h> +#include <string.h> +#include <sys/select.h> + +#ifndef PCAP_THREAD_LAYER_TRACE +#define PCAP_THREAD_LAYER_TRACE 0 +#endif + +/* + * Forward declares for layer callbacks + */ + +static void pcap_thread_callback(u_char* user, const struct pcap_pkthdr* pkthdr, const u_char* pkt, const char* name, int dlt); +static void pcap_thread_callback_linux_sll(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length); +static void pcap_thread_callback_ether(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length); +static void pcap_thread_callback_null(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length); +static void pcap_thread_callback_loop(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length); +static void pcap_thread_callback_ieee802(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length); +static void pcap_thread_callback_gre(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length); +static void pcap_thread_callback_ip(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length); +static void pcap_thread_callback_ipv4(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length); +static void pcap_thread_callback_ipv6(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length); +static void pcap_thread_callback_icmp(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length); +static void pcap_thread_callback_icmpv6(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length); +static void pcap_thread_callback_udp(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length); +static void pcap_thread_callback_tcp(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length); + +/* + * Version + */ + +static const char* _version = PCAP_THREAD_VERSION_STR; + +const char* pcap_thread_version_str(void) +{ + return _version; +} + +int pcap_thread_version_major(void) +{ + return PCAP_THREAD_VERSION_MAJOR; +} + +int pcap_thread_version_minor(void) +{ + return PCAP_THREAD_VERSION_MINOR; +} + +int pcap_thread_version_patch(void) +{ + return PCAP_THREAD_VERSION_PATCH; +} + +/* + * Create/Free + */ + +static pcap_thread_t _pcap_thread_defaults = PCAP_THREAD_T_INIT; + +pcap_thread_t* pcap_thread_create(void) +{ + pcap_thread_t* pcap_thread = calloc(1, sizeof(pcap_thread_t)); + if (pcap_thread) { + memcpy(pcap_thread, &_pcap_thread_defaults, sizeof(pcap_thread_t)); + } + + return pcap_thread; +} + +void pcap_thread_free(pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return; + } + + pcap_thread_close(pcap_thread); + if (pcap_thread->filter) { + free(pcap_thread->filter); + } + free(pcap_thread); +} + +/* + * Get/Set + */ + +int pcap_thread_use_threads(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->use_threads; +} + +int pcap_thread_set_use_threads(pcap_thread_t* pcap_thread, const int use_threads) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->use_threads = use_threads; + + return PCAP_THREAD_OK; +} + +int pcap_thread_use_layers(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->use_layers; +} + +int pcap_thread_set_use_layers(pcap_thread_t* pcap_thread, const int use_layers) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->use_layers = use_layers; + + return PCAP_THREAD_OK; +} + +pcap_thread_queue_mode_t pcap_thread_queue_mode(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->queue_mode; +} + +int pcap_thread_set_queue_mode(pcap_thread_t* pcap_thread, const pcap_thread_queue_mode_t queue_mode) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + switch (queue_mode) { + case PCAP_THREAD_QUEUE_MODE_COND: + case PCAP_THREAD_QUEUE_MODE_DIRECT: + break; + case PCAP_THREAD_QUEUE_MODE_YIELD: + case PCAP_THREAD_QUEUE_MODE_WAIT: + case PCAP_THREAD_QUEUE_MODE_DROP: + return PCAP_THREAD_EOBSOLETE; + default: + return PCAP_THREAD_EINVAL; + } + + pcap_thread->queue_mode = queue_mode; + + return PCAP_THREAD_OK; +} + +struct timeval pcap_thread_queue_wait(const pcap_thread_t* pcap_thread) +{ + static struct timeval tv = { 0, 0 }; + return tv; +} + +int pcap_thread_set_queue_wait(pcap_thread_t* pcap_thread, const struct timeval queue_wait) +{ + return PCAP_THREAD_EOBSOLETE; +} + +pcap_thread_queue_mode_t pcap_thread_callback_queue_mode(const pcap_thread_t* pcap_thread) +{ + return PCAP_THREAD_EOBSOLETE; +} + +int pcap_thread_set_callback_queue_mode(pcap_thread_t* pcap_thread, const pcap_thread_queue_mode_t callback_queue_mode) +{ + return PCAP_THREAD_EOBSOLETE; +} + +struct timeval pcap_thread_callback_queue_wait(const pcap_thread_t* pcap_thread) +{ + static struct timeval tv = { 0, 0 }; + return tv; +} + +int pcap_thread_set_callback_queue_wait(pcap_thread_t* pcap_thread, const struct timeval callback_queue_wait) +{ + return PCAP_THREAD_EOBSOLETE; +} + +int pcap_thread_snapshot(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->snapshot; +} + +int pcap_thread_snaplen(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->snaplen; +} + +int pcap_thread_set_snaplen(pcap_thread_t* pcap_thread, const int snaplen) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->snaplen = snaplen; + + return PCAP_THREAD_OK; +} + +int pcap_thread_promiscuous(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->promiscuous; +} + +int pcap_thread_set_promiscuous(pcap_thread_t* pcap_thread, const int promiscuous) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->promiscuous = promiscuous; + + return PCAP_THREAD_OK; +} + +int pcap_thread_monitor(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->monitor; +} + +int pcap_thread_set_monitor(pcap_thread_t* pcap_thread, const int monitor) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->monitor = monitor; + + return PCAP_THREAD_OK; +} + +int pcap_thread_timeout(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->timeout; +} + +int pcap_thread_set_timeout(pcap_thread_t* pcap_thread, const int timeout) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->timeout = timeout; + + return PCAP_THREAD_OK; +} + +int pcap_thread_buffer_size(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->buffer_size; +} + +int pcap_thread_set_buffer_size(pcap_thread_t* pcap_thread, const int buffer_size) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->buffer_size = buffer_size; + + return PCAP_THREAD_OK; +} + +int pcap_thread_timestamp_type(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->timestamp_type; +} + +int pcap_thread_set_timestamp_type(pcap_thread_t* pcap_thread, const int timestamp_type) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->have_timestamp_type = 1; + pcap_thread->timestamp_type = timestamp_type; + + return PCAP_THREAD_OK; +} + +int pcap_thread_timestamp_precision(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->timestamp_precision; +} + +int pcap_thread_set_timestamp_precision(pcap_thread_t* pcap_thread, const int timestamp_precision) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->have_timestamp_precision = 1; + pcap_thread->timestamp_precision = timestamp_precision; + + return PCAP_THREAD_OK; +} + +int pcap_thread_immediate_mode(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->immediate_mode; +} + +int pcap_thread_set_immediate_mode(pcap_thread_t* pcap_thread, const int immediate_mode) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->immediate_mode = immediate_mode; + + return PCAP_THREAD_OK; +} + +pcap_direction_t pcap_thread_direction(const pcap_thread_t* pcap_thread) +{ +#ifdef HAVE_PCAP_DIRECTION_T + if (!pcap_thread) { + return -1; + } + + return pcap_thread->direction; +#else + return 0; +#endif +} + +int pcap_thread_set_direction(pcap_thread_t* pcap_thread, const pcap_direction_t direction) +{ +#ifdef HAVE_PCAP_DIRECTION_T + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->have_direction = 1; + pcap_thread->direction = direction; + + return PCAP_THREAD_OK; +#else + return PCAP_THREAD_ENODIR; +#endif +} + +const char* pcap_thread_filter(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return 0; + } + + return pcap_thread->filter; +} + +int pcap_thread_set_filter(pcap_thread_t* pcap_thread, const char* filter, const size_t filter_len) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (!filter) { + return PCAP_THREAD_EINVAL; + } + if (!filter_len) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + if (pcap_thread->filter) { + free(pcap_thread->filter); + } + if (!(pcap_thread->filter = strndup(filter, filter_len))) { + return PCAP_THREAD_ENOMEM; + } + pcap_thread->filter_len = filter_len; + + return PCAP_THREAD_OK; +} + +int pcap_thread_clear_filter(pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + if (pcap_thread->filter) { + free(pcap_thread->filter); + pcap_thread->filter = 0; + pcap_thread->filter_len = 0; + } + + return PCAP_THREAD_OK; +} + +int pcap_thread_filter_errno(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->filter_errno; +} + +int pcap_thread_filter_optimize(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->filter_optimize; +} + +int pcap_thread_set_filter_optimize(pcap_thread_t* pcap_thread, const int filter_optimize) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->filter_optimize = filter_optimize; + + return PCAP_THREAD_OK; +} + +bpf_u_int32 pcap_thread_filter_netmask(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->filter_netmask; +} + +int pcap_thread_set_filter_netmask(pcap_thread_t* pcap_thread, const bpf_u_int32 filter_netmask) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->filter_netmask = filter_netmask; + + return PCAP_THREAD_OK; +} + +struct timeval pcap_thread_timedrun(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + static struct timeval tv = { 0, 0 }; + return tv; + } + + return pcap_thread->timedrun; +} + +int pcap_thread_set_timedrun(pcap_thread_t* pcap_thread, const struct timeval timedrun) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->timedrun = timedrun; + + return PCAP_THREAD_OK; +} + +struct timeval pcap_thread_timedrun_to(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + static struct timeval tv = { 0, 0 }; + return tv; + } + + return pcap_thread->timedrun_to; +} + +int pcap_thread_set_timedrun_to(pcap_thread_t* pcap_thread, const struct timeval timedrun_to) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->timedrun_to = timedrun_to; + + return PCAP_THREAD_OK; +} + +pcap_thread_activate_mode_t pcap_thread_activate_mode(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return PCAP_THREAD_DEFAULT_ACTIVATE_MODE; + } + + return pcap_thread->activate_mode; +} + +int pcap_thread_set_activate_mode(pcap_thread_t* pcap_thread, const pcap_thread_activate_mode_t activate_mode) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->activate_mode = activate_mode; + + return PCAP_THREAD_OK; +} + +int pcap_thread_was_stopped(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + + return pcap_thread->was_stopped; +} + +/* + * Queue + */ + +size_t pcap_thread_queue_size(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return -1; + } + + return pcap_thread->queue_size; +} + +int pcap_thread_set_queue_size(pcap_thread_t* pcap_thread, const size_t queue_size) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (!queue_size) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->queue_size = queue_size; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback(pcap_thread_t* pcap_thread, pcap_thread_callback_t callback) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback = callback; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_dropback(pcap_thread_t* pcap_thread, pcap_thread_callback_t dropback) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->dropback = dropback; + + return PCAP_THREAD_OK; +} + +/* + * Layers + */ + +int pcap_thread_set_callback_linux_sll(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_linux_sll) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->callback_ether + || pcap_thread->callback_null + || pcap_thread->callback_loop + || pcap_thread->callback_ieee802 + || pcap_thread->callback_gre + || pcap_thread->callback_ip + || pcap_thread->callback_ipv4 + || pcap_thread->callback_ipv6 + || pcap_thread->callback_icmp + || pcap_thread->callback_icmpv6 + || pcap_thread->callback_udp + || pcap_thread->callback_tcp) { + return PCAP_THREAD_ELAYERCB; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_linux_sll = callback_linux_sll; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_ether(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_ether) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->callback_linux_sll + || pcap_thread->callback_null + || pcap_thread->callback_loop + || pcap_thread->callback_ieee802 + || pcap_thread->callback_gre + || pcap_thread->callback_ip + || pcap_thread->callback_ipv4 + || pcap_thread->callback_ipv6 + || pcap_thread->callback_icmp + || pcap_thread->callback_icmpv6 + || pcap_thread->callback_udp + || pcap_thread->callback_tcp) { + return PCAP_THREAD_ELAYERCB; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_ether = callback_ether; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_null(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_null) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->callback_linux_sll + || pcap_thread->callback_ether + || pcap_thread->callback_loop + || pcap_thread->callback_ieee802 + || pcap_thread->callback_gre + || pcap_thread->callback_ip + || pcap_thread->callback_ipv4 + || pcap_thread->callback_ipv6 + || pcap_thread->callback_icmp + || pcap_thread->callback_icmpv6 + || pcap_thread->callback_udp + || pcap_thread->callback_tcp) { + return PCAP_THREAD_ELAYERCB; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_null = callback_null; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_loop(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_loop) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->callback_linux_sll + || pcap_thread->callback_ether + || pcap_thread->callback_null + || pcap_thread->callback_ieee802 + || pcap_thread->callback_gre + || pcap_thread->callback_ip + || pcap_thread->callback_ipv4 + || pcap_thread->callback_ipv6 + || pcap_thread->callback_icmp + || pcap_thread->callback_icmpv6 + || pcap_thread->callback_udp + || pcap_thread->callback_tcp) { + return PCAP_THREAD_ELAYERCB; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_loop = callback_loop; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_ieee802(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_ieee802) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->callback_linux_sll + || pcap_thread->callback_ether + || pcap_thread->callback_null + || pcap_thread->callback_loop + || pcap_thread->callback_gre + || pcap_thread->callback_ip + || pcap_thread->callback_ipv4 + || pcap_thread->callback_ipv6 + || pcap_thread->callback_icmp + || pcap_thread->callback_icmpv6 + || pcap_thread->callback_udp + || pcap_thread->callback_tcp) { + return PCAP_THREAD_ELAYERCB; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_ieee802 = callback_ieee802; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_gre(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_gre) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->callback_linux_sll + || pcap_thread->callback_ether + || pcap_thread->callback_null + || pcap_thread->callback_loop + || pcap_thread->callback_ieee802 + || pcap_thread->callback_ip + || pcap_thread->callback_ipv4 + || pcap_thread->callback_ipv6 + || pcap_thread->callback_icmp + || pcap_thread->callback_icmpv6 + || pcap_thread->callback_udp + || pcap_thread->callback_tcp) { + return PCAP_THREAD_ELAYERCB; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_gre = callback_gre; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_ip(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_ip) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->callback_linux_sll + || pcap_thread->callback_ether + || pcap_thread->callback_null + || pcap_thread->callback_loop + || pcap_thread->callback_ieee802 + || pcap_thread->callback_gre + || pcap_thread->callback_ipv4 + || pcap_thread->callback_ipv6 + || pcap_thread->callback_icmp + || pcap_thread->callback_icmpv6 + || pcap_thread->callback_udp + || pcap_thread->callback_tcp) { + return PCAP_THREAD_ELAYERCB; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_ip = callback_ip; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_ipv4(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_ipv4) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->callback_linux_sll + || pcap_thread->callback_ether + || pcap_thread->callback_null + || pcap_thread->callback_loop + || pcap_thread->callback_ieee802 + || pcap_thread->callback_gre + || pcap_thread->callback_ip + || pcap_thread->callback_icmp + || pcap_thread->callback_icmpv6 + || pcap_thread->callback_udp + || pcap_thread->callback_tcp) { + return PCAP_THREAD_ELAYERCB; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_ipv4 = callback_ipv4; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_ipv4_frag(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_frag_t callback_ipv4_frag) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (!callback_ipv4_frag.new + || !callback_ipv4_frag.free + || !callback_ipv4_frag.reassemble + || !callback_ipv4_frag.release) { + if (callback_ipv4_frag.new + || callback_ipv4_frag.free + || callback_ipv4_frag.reassemble + || callback_ipv4_frag.release) { + return PCAP_THREAD_EINVAL; + } + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_ipv4_frag = callback_ipv4_frag; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_ipv6(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_ipv6) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->callback_linux_sll + || pcap_thread->callback_ether + || pcap_thread->callback_null + || pcap_thread->callback_loop + || pcap_thread->callback_ieee802 + || pcap_thread->callback_gre + || pcap_thread->callback_ip + || pcap_thread->callback_icmp + || pcap_thread->callback_icmpv6 + || pcap_thread->callback_udp + || pcap_thread->callback_tcp) { + return PCAP_THREAD_ELAYERCB; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_ipv6 = callback_ipv6; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_ipv6_frag(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_frag_t callback_ipv6_frag) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (!callback_ipv6_frag.new + || !callback_ipv6_frag.free + || !callback_ipv6_frag.reassemble + || !callback_ipv6_frag.release) { + if (callback_ipv6_frag.new + || callback_ipv6_frag.free + || callback_ipv6_frag.reassemble + || callback_ipv6_frag.release) { + return PCAP_THREAD_EINVAL; + } + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_ipv6_frag = callback_ipv6_frag; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_icmp(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_icmp) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->callback_linux_sll + || pcap_thread->callback_ether + || pcap_thread->callback_null + || pcap_thread->callback_loop + || pcap_thread->callback_ieee802 + || pcap_thread->callback_gre + || pcap_thread->callback_ip + || pcap_thread->callback_ipv4 + || pcap_thread->callback_ipv6) { + return PCAP_THREAD_ELAYERCB; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_icmp = callback_icmp; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_icmpv6(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_icmpv6) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->callback_linux_sll + || pcap_thread->callback_ether + || pcap_thread->callback_null + || pcap_thread->callback_loop + || pcap_thread->callback_ieee802 + || pcap_thread->callback_gre + || pcap_thread->callback_ip + || pcap_thread->callback_ipv4 + || pcap_thread->callback_ipv6) { + return PCAP_THREAD_ELAYERCB; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_icmpv6 = callback_icmpv6; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_udp(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_udp) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->callback_linux_sll + || pcap_thread->callback_ether + || pcap_thread->callback_null + || pcap_thread->callback_loop + || pcap_thread->callback_ieee802 + || pcap_thread->callback_gre + || pcap_thread->callback_ip + || pcap_thread->callback_ipv4 + || pcap_thread->callback_ipv6) { + return PCAP_THREAD_ELAYERCB; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_udp = callback_udp; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_tcp(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_tcp) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->callback_linux_sll + || pcap_thread->callback_ether + || pcap_thread->callback_null + || pcap_thread->callback_loop + || pcap_thread->callback_ieee802 + || pcap_thread->callback_gre + || pcap_thread->callback_ip + || pcap_thread->callback_ipv4 + || pcap_thread->callback_ipv6) { + return PCAP_THREAD_ELAYERCB; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_tcp = callback_tcp; + + return PCAP_THREAD_OK; +} + +int pcap_thread_set_callback_invalid(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_invalid) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + pcap_thread->callback_invalid = callback_invalid; + + return PCAP_THREAD_OK; +} + +#define need4x2(v1, v2, p, l) \ + if (l < 1) { \ + break; \ + } \ + v1 = (*p) >> 4; \ + v2 = (*p) & 0xf; \ + p += 1; \ + l -= 1 + +#define need8(v, p, l) \ + if (l < 1) { \ + break; \ + } \ + v = *p; \ + p += 1; \ + l -= 1 + +#define need16(v, p, l) \ + if (l < 2) { \ + break; \ + } \ + v = (*p << 8) + *(p + 1); \ + p += 2; \ + l -= 2 + +#define need32(v, p, l) \ + if (l < 4) { \ + break; \ + } \ + v = (*p << 24) + (*(p + 1) << 16) + (*(p + 2) << 8) + *(p + 3); \ + p += 4; \ + l -= 4 + +#define needxb(b, x, p, l) \ + if (l < x) { \ + break; \ + } \ + memcpy(b, p, x); \ + p += x; \ + l -= x + +#define advancexb(x, p, l) \ + if (l < x) { \ + break; \ + } \ + p += x; \ + l -= x + +#if PCAP_THREAD_LAYER_TRACE +#define layer_trace(msg) printf("LT %s:%d: " msg "\n", __FILE__, __LINE__) +#define layer_tracef(msg, args...) printf("LT %s:%d: " msg "\n", __FILE__, __LINE__, args) +#else +#define layer_trace(msg) +#define layer_tracef(msg, args...) +#endif + +static void pcap_thread_callback(u_char* user, const struct pcap_pkthdr* pkthdr, const u_char* pkt, const char* name, int dlt) +{ + pcap_thread_pcaplist_t* pcaplist = (pcap_thread_pcaplist_t*)user; + size_t length; + pcap_thread_packet_t packet; + const u_char* orig = pkt; + size_t origlength; + + if (!pcaplist) { + return; + } + if (!pcaplist->pcap_thread) { + return; + } + if (!pkthdr) { + return; + } + if (!pkt) { + return; + } + if (!name) { + return; + } + + memset(&packet, 0, sizeof(packet)); + packet.name = name; + packet.dlt = dlt; + packet.pkthdr = *pkthdr; + packet.have_pkthdr = 1; + length = pkthdr->caplen; + origlength = length; + + layer_tracef("packet, length %lu", length); + + switch (dlt) { + case DLT_NULL: + layer_trace("dlt_null"); + { + uint8_t hdr[4]; + + packet.state = PCAP_THREAD_PACKET_INVALID_NULL; + need8(hdr[0], pkt, length); + need8(hdr[1], pkt, length); + need8(hdr[2], pkt, length); + need8(hdr[3], pkt, length); + packet.state = PCAP_THREAD_PACKET_OK; + + /* + * The header for null is in host byte order but may not be + * in the same endian as host if coming from a savefile + */ + + if (pcaplist->is_offline && pcap_is_swapped(pcaplist->pcap)) { +#if __BYTE_ORDER == __LITTLE_ENDIAN + packet.nullhdr.family = hdr[3] + (hdr[2] << 8) + (hdr[1] << 16) + (hdr[0] << 24); +#elif __BYTE_ORDER == __BIG_ENDIAN + packet.nullhdr.family = hdr[0] + (hdr[1] << 8) + (hdr[2] << 16) + (hdr[3] << 24); +#else +#error "Please fix <endian.h>" +#endif + } else { +#if __BYTE_ORDER == __LITTLE_ENDIAN + packet.nullhdr.family = hdr[0] + (hdr[1] << 8) + (hdr[2] << 16) + (hdr[3] << 24); +#elif __BYTE_ORDER == __BIG_ENDIAN + packet.nullhdr.family = hdr[3] + (hdr[2] << 8) + (hdr[1] << 16) + (hdr[0] << 24); +#else +#error "Please fix <endian.h>" +#endif + } + packet.have_nullhdr = 1; + + if (pcaplist->pcap_thread->callback_null) + pcaplist->pcap_thread->callback_null(pcaplist->user, &packet, pkt, length); + else + pcap_thread_callback_null((void*)pcaplist, &packet, pkt, length); + return; + } + break; + + case DLT_EN10MB: + layer_trace("dlt_en10mb"); + packet.state = PCAP_THREAD_PACKET_INVALID_ETHER; + needxb(packet.ethhdr.ether_dhost, sizeof(packet.ethhdr.ether_dhost), pkt, length); + needxb(packet.ethhdr.ether_shost, sizeof(packet.ethhdr.ether_shost), pkt, length); + need16(packet.ethhdr.ether_type, pkt, length); + packet.state = PCAP_THREAD_PACKET_OK; + packet.have_ethhdr = 1; + + if (pcaplist->pcap_thread->callback_ether) + pcaplist->pcap_thread->callback_ether(pcaplist->user, &packet, pkt, length); + else + pcap_thread_callback_ether((void*)pcaplist, &packet, pkt, length); + return; + + case DLT_LOOP: + layer_trace("dlt_loop"); + packet.state = PCAP_THREAD_PACKET_INVALID_LOOP; + need32(packet.loophdr.family, pkt, length); + packet.state = PCAP_THREAD_PACKET_OK; + packet.have_loophdr = 1; + + if (pcaplist->pcap_thread->callback_loop) + pcaplist->pcap_thread->callback_loop(pcaplist->user, &packet, pkt, length); + else + pcap_thread_callback_loop((void*)pcaplist, &packet, pkt, length); + return; + + case DLT_RAW: +#ifdef DLT_IPV4 + case DLT_IPV4: +#endif +#ifdef DLT_IPV6 + case DLT_IPV6: +#endif + layer_trace("dlt_raw/ipv4/ipv6"); + if (pcaplist->pcap_thread->callback_ip) + pcaplist->pcap_thread->callback_ip(pcaplist->user, &packet, pkt, length); + else + pcap_thread_callback_ip((void*)pcaplist, &packet, pkt, length); + return; + + case DLT_LINUX_SLL: + layer_trace("dlt_linux_sll"); + packet.state = PCAP_THREAD_PACKET_INVALID_LINUX_SLL; + need16(packet.linux_sll.packet_type, pkt, length); + need16(packet.linux_sll.arp_hardware, pkt, length); + need16(packet.linux_sll.link_layer_address_length, pkt, length); + needxb(packet.linux_sll.link_layer_address, 8, pkt, length); + need16(packet.linux_sll.ether_type, pkt, length); + packet.state = PCAP_THREAD_PACKET_OK; + packet.have_linux_sll = 1; + + if (pcaplist->pcap_thread->callback_linux_sll) + pcaplist->pcap_thread->callback_linux_sll(pcaplist->user, &packet, pkt, length); + else + pcap_thread_callback_linux_sll((void*)pcaplist, &packet, pkt, length); + return; + + /* TODO: These might be interesting to implement + case DLT_IPNET: + case DLT_PKTAP: + */ + + default: + packet.state = PCAP_THREAD_PACKET_UNSUPPORTED; + break; + } + + if (pcaplist->pcap_thread->callback_invalid) { + if (packet.state == PCAP_THREAD_PACKET_OK) + packet.state = PCAP_THREAD_PACKET_INVALID; + pcaplist->pcap_thread->callback_invalid(pcaplist->user, &packet, orig, origlength); + } +} + +static void pcap_thread_callback_linux_sll(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + pcap_thread_pcaplist_t* pcaplist = (pcap_thread_pcaplist_t*)user; + const u_char* orig = payload; + size_t origlength = length; + + if (!pcaplist) { + return; + } + if (!pcaplist->pcap_thread) { + return; + } + if (!packet) { + return; + } + if (!payload) { + return; + } + if (!length) { + return; + } + + if (packet->have_linux_sll) { + layer_trace("have_linux_sll"); + switch (packet->linux_sll.ether_type) { + case 0x8100: /* 802.1q */ + case 0x88a8: /* 802.1ad */ + case 0x9100: /* 802.1 QinQ non-standard */ + if (packet->have_ieee802hdr) + break; + + { + uint16_t tci; + + packet->state = PCAP_THREAD_PACKET_INVALID_IEEE802; + need16(tci, payload, length); + packet->ieee802hdr.pcp = (tci & 0xe000) >> 13; + packet->ieee802hdr.dei = (tci & 0x1000) >> 12; + packet->ieee802hdr.vid = tci & 0x0fff; + need16(packet->ieee802hdr.ether_type, payload, length); + packet->state = PCAP_THREAD_PACKET_OK; + packet->have_ieee802hdr = 1; + } + + if (pcaplist->pcap_thread->callback_ieee802) + pcaplist->pcap_thread->callback_ieee802(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_ieee802((void*)pcaplist, packet, payload, length); + return; + + case ETHERTYPE_IP: + case ETHERTYPE_IPV6: + if (pcaplist->pcap_thread->callback_ip) + pcaplist->pcap_thread->callback_ip(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_ip((void*)pcaplist, packet, payload, length); + return; + + default: + packet->state = PCAP_THREAD_PACKET_UNSUPPORTED; + break; + } + } + + if (pcaplist->pcap_thread->callback_invalid) { + if (packet->state == PCAP_THREAD_PACKET_OK) + packet->state = PCAP_THREAD_PACKET_INVALID; + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, orig, origlength); + } +} + +static void pcap_thread_callback_ether(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + pcap_thread_pcaplist_t* pcaplist = (pcap_thread_pcaplist_t*)user; + const u_char* orig = payload; + size_t origlength = length; + + if (!pcaplist) { + return; + } + if (!pcaplist->pcap_thread) { + return; + } + if (!packet) { + return; + } + if (!payload) { + return; + } + if (!length) { + return; + } + + if (packet->have_ethhdr) { + layer_trace("have_ethhdr"); + switch (packet->ethhdr.ether_type) { + case 0x8100: /* 802.1q */ + case 0x88a8: /* 802.1ad */ + case 0x9100: /* 802.1 QinQ non-standard */ + if (packet->have_ieee802hdr) + break; + + { + uint16_t tci; + + packet->state = PCAP_THREAD_PACKET_INVALID_IEEE802; + need16(tci, payload, length); + packet->ieee802hdr.pcp = (tci & 0xe000) >> 13; + packet->ieee802hdr.dei = (tci & 0x1000) >> 12; + packet->ieee802hdr.vid = tci & 0x0fff; + need16(packet->ieee802hdr.ether_type, payload, length); + packet->state = PCAP_THREAD_PACKET_OK; + packet->have_ieee802hdr = 1; + } + + if (pcaplist->pcap_thread->callback_ieee802) + pcaplist->pcap_thread->callback_ieee802(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_ieee802((void*)pcaplist, packet, payload, length); + return; + + case ETHERTYPE_IP: + case ETHERTYPE_IPV6: + if (pcaplist->pcap_thread->callback_ip) + pcaplist->pcap_thread->callback_ip(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_ip((void*)pcaplist, packet, payload, length); + return; + + default: + packet->state = PCAP_THREAD_PACKET_UNSUPPORTED; + break; + } + } + + if (pcaplist->pcap_thread->callback_invalid) { + if (packet->state == PCAP_THREAD_PACKET_OK) + packet->state = PCAP_THREAD_PACKET_INVALID; + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, orig, origlength); + } +} + +static void pcap_thread_callback_null(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + pcap_thread_pcaplist_t* pcaplist = (pcap_thread_pcaplist_t*)user; + const u_char* orig = payload; + size_t origlength = length; + + if (!pcaplist) { + return; + } + if (!pcaplist->pcap_thread) { + return; + } + if (!packet) { + return; + } + if (!payload) { + return; + } + if (!length) { + return; + } + + if (packet->have_nullhdr) { + layer_trace("have_nullhdr"); + + /* From libpcap link types documentation: + * containing a value of 2 for IPv4 packets, a value of either 24, 28, + * or 30 for IPv6 packets, a value of 7 for OSI packets, or a value of 23 + * for IPX packets. All of the IPv6 values correspond to IPv6 packets; + * code reading files should check for all of them. + */ + + switch (packet->nullhdr.family) { + case 2: + case 24: + case 28: + case 30: + if (pcaplist->pcap_thread->callback_ip) + pcaplist->pcap_thread->callback_ip(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_ip((void*)pcaplist, packet, payload, length); + return; + + default: + packet->state = PCAP_THREAD_PACKET_UNSUPPORTED; + break; + } + } + + if (pcaplist->pcap_thread->callback_invalid) { + if (packet->state == PCAP_THREAD_PACKET_OK) + packet->state = PCAP_THREAD_PACKET_INVALID; + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, orig, origlength); + } +} + +static void pcap_thread_callback_loop(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + pcap_thread_pcaplist_t* pcaplist = (pcap_thread_pcaplist_t*)user; + const u_char* orig = payload; + size_t origlength = length; + + if (!pcaplist) { + return; + } + if (!pcaplist->pcap_thread) { + return; + } + if (!packet) { + return; + } + if (!payload) { + return; + } + if (!length) { + return; + } + + if (packet->have_loophdr) { + layer_trace("have_loophdr"); + + /* From libpcap link types documentation: + * containing a value of 2 for IPv4 packets, a value of either 24, 28, + * or 30 for IPv6 packets, a value of 7 for OSI packets, or a value of 23 + * for IPX packets. All of the IPv6 values correspond to IPv6 packets; + * code reading files should check for all of them. + */ + + switch (packet->loophdr.family) { + case 2: + case 24: + case 28: + case 30: + if (pcaplist->pcap_thread->callback_ip) + pcaplist->pcap_thread->callback_ip(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_ip((void*)pcaplist, packet, payload, length); + return; + + default: + packet->state = PCAP_THREAD_PACKET_UNSUPPORTED; + break; + } + } + + if (pcaplist->pcap_thread->callback_invalid) { + if (packet->state == PCAP_THREAD_PACKET_OK) + packet->state = PCAP_THREAD_PACKET_INVALID; + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, orig, origlength); + } +} + +static void pcap_thread_callback_ieee802(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + pcap_thread_pcaplist_t* pcaplist = (pcap_thread_pcaplist_t*)user; + const u_char* orig = payload; + size_t origlength = length; + + if (!pcaplist) { + return; + } + if (!pcaplist->pcap_thread) { + return; + } + if (!packet) { + return; + } + if (!payload) { + return; + } + if (!length) { + return; + } + + if (packet->have_ieee802hdr) { + layer_trace("have_ieee802hdr"); + + switch (packet->ieee802hdr.ether_type) { + case 0x88a8: /* 802.1ad */ + case 0x9100: /* 802.1 QinQ non-standard */ + { + pcap_thread_packet_t ieee802pkt; + uint16_t tci; + + memset(&ieee802pkt, 0, sizeof(ieee802pkt)); + ieee802pkt.prevpkt = packet; + ieee802pkt.have_prevpkt = 1; + + packet->state = PCAP_THREAD_PACKET_INVALID_IEEE802; + need16(tci, payload, length); + ieee802pkt.ieee802hdr.pcp = (tci & 0xe000) >> 13; + ieee802pkt.ieee802hdr.dei = (tci & 0x1000) >> 12; + ieee802pkt.ieee802hdr.vid = tci & 0x0fff; + need16(ieee802pkt.ieee802hdr.ether_type, payload, length); + packet->state = PCAP_THREAD_PACKET_OK; + ieee802pkt.have_ieee802hdr = 1; + + if (pcaplist->pcap_thread->callback_ieee802) + pcaplist->pcap_thread->callback_ieee802(pcaplist->user, &ieee802pkt, payload, length); + else + pcap_thread_callback_ieee802((void*)pcaplist, &ieee802pkt, payload, length); + return; + } + + case ETHERTYPE_IP: + case ETHERTYPE_IPV6: + if (pcaplist->pcap_thread->callback_ip) + pcaplist->pcap_thread->callback_ip(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_ip((void*)pcaplist, packet, payload, length); + return; + + default: + packet->state = PCAP_THREAD_PACKET_UNSUPPORTED; + break; + } + } + + if (pcaplist->pcap_thread->callback_invalid) { + if (packet->state == PCAP_THREAD_PACKET_OK) + packet->state = PCAP_THREAD_PACKET_INVALID; + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, orig, origlength); + } +} + +static void pcap_thread_callback_gre(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + pcap_thread_pcaplist_t* pcaplist = (pcap_thread_pcaplist_t*)user; + const u_char* orig = payload; + size_t origlength = length; + + if (!pcaplist) { + return; + } + if (!pcaplist->pcap_thread) { + return; + } + if (!packet) { + return; + } + if (!payload) { + return; + } + if (!length) { + return; + } + + if (packet->have_grehdr) { + pcap_thread_packet_t grepkt; + + layer_trace("have_grehdr"); + + memset(&grepkt, 0, sizeof(grepkt)); + grepkt.prevpkt = packet; + grepkt.have_prevpkt = 1; + + for (;;) { + packet->state = PCAP_THREAD_PACKET_INVALID_GRE; + if (packet->grehdr.gre_flags & 0x1) { + need16(packet->gre.checksum, payload, length); + } + if (packet->grehdr.gre_flags & 0x4) { + need16(packet->gre.key, payload, length); + } + if (packet->grehdr.gre_flags & 0x8) { + need16(packet->gre.sequence, payload, length); + } + packet->state = PCAP_THREAD_PACKET_OK; + packet->have_gre = 1; + + switch (packet->grehdr.ether_type) { + case ETHERTYPE_IP: + case ETHERTYPE_IPV6: + if (pcaplist->pcap_thread->callback_ip) + pcaplist->pcap_thread->callback_ip(pcaplist->user, &grepkt, payload, length); + else + pcap_thread_callback_ip((void*)pcaplist, &grepkt, payload, length); + return; + + default: + packet->state = PCAP_THREAD_PACKET_UNSUPPORTED; + break; + } + break; + } + } + + if (pcaplist->pcap_thread->callback_invalid) { + if (packet->state == PCAP_THREAD_PACKET_OK) + packet->state = PCAP_THREAD_PACKET_INVALID; + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, orig, origlength); + } +} + +static void pcap_thread_callback_ip(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + pcap_thread_pcaplist_t* pcaplist = (pcap_thread_pcaplist_t*)user; + const u_char* orig = payload; + size_t origlength = length; + + if (!pcaplist) { + return; + } + if (!pcaplist->pcap_thread) { + return; + } + if (!packet) { + return; + } + if (!payload) { + return; + } + if (!length) { + return; + } + + if (!packet->have_iphdr && !packet->have_ip6hdr) { + layer_trace("checking for ip"); + + for (;;) { + packet->state = PCAP_THREAD_PACKET_INVALID_IP; + need4x2(packet->iphdr.ip_v, packet->iphdr.ip_hl, payload, length); + if (packet->iphdr.ip_v == 4) { + packet->state = PCAP_THREAD_PACKET_INVALID_IPV4; + need8(packet->iphdr.ip_tos, payload, length); + need16(packet->iphdr.ip_len, payload, length); + need16(packet->iphdr.ip_id, payload, length); + need16(packet->iphdr.ip_off, payload, length); + need8(packet->iphdr.ip_ttl, payload, length); + need8(packet->iphdr.ip_p, payload, length); + need16(packet->iphdr.ip_sum, payload, length); + needxb(&(packet->iphdr.ip_src.s_addr), 4, payload, length); + needxb(&(packet->iphdr.ip_dst.s_addr), 4, payload, length); + + /* TODO: IPv4 options */ + + if (packet->iphdr.ip_hl < 5) + break; + if (packet->iphdr.ip_hl > 5) { + advancexb((packet->iphdr.ip_hl - 5) * 4, payload, length); + } + + packet->state = PCAP_THREAD_PACKET_OK; + packet->have_iphdr = 1; + + if (pcaplist->pcap_thread->callback_ipv4) + pcaplist->pcap_thread->callback_ipv4(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_ipv4((void*)pcaplist, packet, payload, length); + return; + } else if (packet->iphdr.ip_v == 6) { + /* + * Clear IPv4 headers and reverse reading one byte + */ + packet->iphdr.ip_v = 0; + packet->iphdr.ip_hl = 0; + payload--; + length++; + + packet->state = PCAP_THREAD_PACKET_INVALID_IPV6; + need32(packet->ip6hdr.ip6_flow, payload, length); + need16(packet->ip6hdr.ip6_plen, payload, length); + need8(packet->ip6hdr.ip6_nxt, payload, length); + need8(packet->ip6hdr.ip6_hlim, payload, length); + needxb(&(packet->ip6hdr.ip6_src), 16, payload, length); + needxb(&(packet->ip6hdr.ip6_dst), 16, payload, length); + packet->state = PCAP_THREAD_PACKET_OK; + packet->have_ip6hdr = 1; + + if (pcaplist->pcap_thread->callback_ipv6) + pcaplist->pcap_thread->callback_ipv6(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_ipv6((void*)pcaplist, packet, payload, length); + return; + } + + packet->state = PCAP_THREAD_PACKET_UNSUPPORTED; + break; + } + } + + if (pcaplist->pcap_thread->callback_invalid) { + if (packet->state == PCAP_THREAD_PACKET_OK) + packet->state = PCAP_THREAD_PACKET_INVALID; + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, orig, origlength); + } +} + +static void pcap_thread_callback_ipv4(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + pcap_thread_pcaplist_t* pcaplist = (pcap_thread_pcaplist_t*)user; + const u_char* orig = payload; + size_t origlength = length; + int release_frag = 0; + + if (!pcaplist) { + return; + } + if (!pcaplist->pcap_thread) { + return; + } + if (!packet) { + return; + } + if (!payload) { + return; + } + if (!length) { + return; + } + + if (packet->have_iphdr) { + layer_trace("have_iphdr"); + + for (;;) { + /* Check reported length for missing payload or padding */ + if (packet->iphdr.ip_len < (packet->iphdr.ip_hl * 4)) { + layer_trace("ip_len < ip header"); + packet->state = PCAP_THREAD_PACKET_INVALID_IPV4; + break; + } + if (length < (packet->iphdr.ip_len - (packet->iphdr.ip_hl * 4))) { + layer_trace("length < (ip_len - ip header)"); + packet->state = PCAP_THREAD_PACKET_INVALID_IPV4; + break; + } + if (length > (packet->iphdr.ip_len - (packet->iphdr.ip_hl * 4))) { + layer_trace("have_ippadding"); + packet->ippadding = length - (packet->iphdr.ip_len - (packet->iphdr.ip_hl * 4)); + packet->have_ippadding = 1; + length -= packet->ippadding; + } + + /* Check if packet wants more fragments or has an offset */ + if (packet->iphdr.ip_off & 0x2000 || packet->iphdr.ip_off & 0x1fff) { + layer_trace("is_v4_frag"); + + if (pcaplist->pcap_thread->callback_ipv4_frag.reassemble) { + pcap_thread_packet_t* whole_packet = 0; + const u_char* whole_payload = 0; + size_t whole_length = 0; + + packet->state = pcaplist->pcap_thread->callback_ipv4_frag.reassemble(pcaplist->ipv4_frag_ctx, packet, payload, length, &whole_packet, &whole_payload, &whole_length); + + /* Defragmentation failed some how, we return packet as invalid */ + if (packet->state != PCAP_THREAD_PACKET_OK) { + break; + } + + /* No whole/defragmented packet return, need more */ + if (!whole_packet || !whole_payload || !whole_length) { + return; + } + + layer_tracef("v4_reasm %p %p %lu", whole_packet, whole_payload, whole_length); + + packet = whole_packet; + payload = whole_payload; + length = whole_length; + release_frag = 1; + } else { + /* + * Mark packet as fragment and send it to the next user + * layer (if any) or return it as invalid. + */ + packet->state = PCAP_THREAD_PACKET_IS_FRAGMENT; + + switch (packet->iphdr.ip_p) { + case IPPROTO_GRE: + layer_trace("ipproto_gre frag"); + + if (!(packet->iphdr.ip_off & 0x1fff)) { + for (;;) { + packet->state = PCAP_THREAD_PACKET_FRAGMENTED_GREHDR; + need16(packet->grehdr.gre_flags, payload, length); + need16(packet->grehdr.ether_type, payload, length); + packet->state = PCAP_THREAD_PACKET_IS_FRAGMENT; + packet->have_grehdr = 1; + break; + } + } + + if (pcaplist->pcap_thread->callback_gre) { + pcaplist->pcap_thread->callback_gre(pcaplist->user, packet, payload, length); + return; + } + break; + + case IPPROTO_ICMP: + layer_trace("ipproto_icmp frag"); + + if (!(packet->iphdr.ip_off & 0x1fff)) { + for (;;) { + packet->state = PCAP_THREAD_PACKET_FRAGMENTED_ICMPHDR; + need8(packet->icmphdr.type, payload, length); + need8(packet->icmphdr.code, payload, length); + need16(packet->icmphdr.checksum, payload, length); + packet->state = PCAP_THREAD_PACKET_IS_FRAGMENT; + packet->have_icmphdr = 1; + break; + } + } + + if (pcaplist->pcap_thread->callback_icmp) { + pcaplist->pcap_thread->callback_icmp(pcaplist->user, packet, payload, length); + return; + } + break; + + case IPPROTO_UDP: + layer_trace("ipproto_udp frag"); + + if (!(packet->iphdr.ip_off & 0x1fff)) { + for (;;) { + packet->state = PCAP_THREAD_PACKET_FRAGMENTED_UDPHDR; + need16(packet->udphdr.uh_sport, payload, length); + need16(packet->udphdr.uh_dport, payload, length); + need16(packet->udphdr.uh_ulen, payload, length); + need16(packet->udphdr.uh_sum, payload, length); + packet->state = PCAP_THREAD_PACKET_IS_FRAGMENT; + packet->have_udphdr = 1; + break; + } + } + + if (pcaplist->pcap_thread->callback_udp) { + pcaplist->pcap_thread->callback_udp(pcaplist->user, packet, payload, length); + return; + } + break; + + case IPPROTO_TCP: + layer_trace("ipproto_tcp frag"); + + if (!(packet->iphdr.ip_off & 0x1fff)) { + for (;;) { + packet->state = PCAP_THREAD_PACKET_FRAGMENTED_TCPHDR; + need16(packet->tcphdr.th_sport, payload, length); + need16(packet->tcphdr.th_dport, payload, length); + need32(packet->tcphdr.th_seq, payload, length); + need32(packet->tcphdr.th_ack, payload, length); + need4x2(packet->tcphdr.th_off, packet->tcphdr.th_x2, payload, length); + need8(packet->tcphdr.th_flags, payload, length); + need16(packet->tcphdr.th_win, payload, length); + need16(packet->tcphdr.th_sum, payload, length); + need16(packet->tcphdr.th_urp, payload, length); + if (packet->tcphdr.th_off > 5) { + packet->tcpopts_len = (packet->tcphdr.th_off - 5) * 4; + needxb(&(packet->tcpopts[0]), packet->tcpopts_len, payload, length); + packet->have_tcpopts = 1; + } + packet->state = PCAP_THREAD_PACKET_IS_FRAGMENT; + packet->have_tcphdr = 1; + break; + } + } + + if (pcaplist->pcap_thread->callback_tcp) { + pcaplist->pcap_thread->callback_tcp(pcaplist->user, packet, payload, length); + return; + } + break; + + default: + break; + } + break; + } + } + + switch (packet->iphdr.ip_p) { + case IPPROTO_GRE: + layer_trace("ipproto_gre"); + + if (packet->have_grehdr) + break; + + packet->state = PCAP_THREAD_PACKET_INVALID_GRE; + need16(packet->grehdr.gre_flags, payload, length); + need16(packet->grehdr.ether_type, payload, length); + packet->state = PCAP_THREAD_PACKET_OK; + packet->have_grehdr = 1; + + if (pcaplist->pcap_thread->callback_gre) + pcaplist->pcap_thread->callback_gre(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_gre((void*)pcaplist, packet, payload, length); + + if (release_frag) { + pcaplist->pcap_thread->callback_ipv4_frag.release(pcaplist->ipv4_frag_ctx, packet, payload, length); + } + return; + + case IPPROTO_ICMP: + layer_trace("ipproto_icmp"); + + if (packet->have_icmphdr) + break; + + packet->state = PCAP_THREAD_PACKET_INVALID_ICMP; + need8(packet->icmphdr.type, payload, length); + need8(packet->icmphdr.code, payload, length); + need16(packet->icmphdr.checksum, payload, length); + packet->state = PCAP_THREAD_PACKET_OK; + packet->have_icmphdr = 1; + + if (pcaplist->pcap_thread->callback_icmp) + pcaplist->pcap_thread->callback_icmp(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_icmp((void*)pcaplist, packet, payload, length); + + if (release_frag) { + pcaplist->pcap_thread->callback_ipv4_frag.release(pcaplist->ipv4_frag_ctx, packet, payload, length); + } + return; + + case IPPROTO_UDP: + layer_trace("ipproto_udp"); + + if (packet->have_udphdr) + break; + + packet->state = PCAP_THREAD_PACKET_INVALID_UDP; + need16(packet->udphdr.uh_sport, payload, length); + need16(packet->udphdr.uh_dport, payload, length); + need16(packet->udphdr.uh_ulen, payload, length); + need16(packet->udphdr.uh_sum, payload, length); + packet->state = PCAP_THREAD_PACKET_OK; + packet->have_udphdr = 1; + + if (pcaplist->pcap_thread->callback_udp) + pcaplist->pcap_thread->callback_udp(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_udp((void*)pcaplist, packet, payload, length); + + if (release_frag) { + pcaplist->pcap_thread->callback_ipv4_frag.release(pcaplist->ipv4_frag_ctx, packet, payload, length); + } + return; + + case IPPROTO_TCP: + layer_trace("ipproto_tcp"); + + if (packet->have_tcphdr) + break; + + packet->state = PCAP_THREAD_PACKET_INVALID_TCP; + need16(packet->tcphdr.th_sport, payload, length); + need16(packet->tcphdr.th_dport, payload, length); + need32(packet->tcphdr.th_seq, payload, length); + need32(packet->tcphdr.th_ack, payload, length); + need4x2(packet->tcphdr.th_off, packet->tcphdr.th_x2, payload, length); + need8(packet->tcphdr.th_flags, payload, length); + need16(packet->tcphdr.th_win, payload, length); + need16(packet->tcphdr.th_sum, payload, length); + need16(packet->tcphdr.th_urp, payload, length); + if (packet->tcphdr.th_off > 5) { + packet->tcpopts_len = (packet->tcphdr.th_off - 5) * 4; + needxb(&(packet->tcpopts[0]), packet->tcpopts_len, payload, length); + packet->have_tcpopts = 1; + } + packet->state = PCAP_THREAD_PACKET_OK; + packet->have_tcphdr = 1; + + if (pcaplist->pcap_thread->callback_tcp) + pcaplist->pcap_thread->callback_tcp(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_tcp((void*)pcaplist, packet, payload, length); + + if (release_frag) { + pcaplist->pcap_thread->callback_ipv4_frag.release(pcaplist->ipv4_frag_ctx, packet, payload, length); + } + return; + + default: + packet->state = PCAP_THREAD_PACKET_UNSUPPORTED; + break; + } + break; + } + } + + if (pcaplist->pcap_thread->callback_invalid) { + if (packet->state == PCAP_THREAD_PACKET_OK) + packet->state = PCAP_THREAD_PACKET_INVALID; + if (release_frag) + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, payload, length); + else + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, orig, origlength); + } + + if (release_frag) { + pcaplist->pcap_thread->callback_ipv4_frag.release(pcaplist->ipv4_frag_ctx, packet, payload, length); + } +} + +static void pcap_thread_callback_ipv6(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + pcap_thread_pcaplist_t* pcaplist = (pcap_thread_pcaplist_t*)user; + const u_char* orig = payload; + size_t origlength = length; + int release_frag = 0; + + if (!pcaplist) { + return; + } + if (!pcaplist->pcap_thread) { + return; + } + if (!packet) { + return; + } + if (!payload) { + return; + } + if (!length) { + return; + } + + if (packet->have_ip6hdr) { + struct ip6_ext ext; + size_t already_advanced = 0; + + layer_trace("have_ip6hdr"); + + /* Check reported length for missing payload or padding */ + if (length < packet->ip6hdr.ip6_plen) { + layer_trace("length < ip6_plen"); + packet->state = PCAP_THREAD_PACKET_INVALID_IPV6; + if (pcaplist->pcap_thread->callback_invalid) { + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, orig, origlength); + } + return; + } + if (length > packet->ip6hdr.ip6_plen) { + layer_trace("have_ip6padding"); + packet->ip6padding = length - packet->ip6hdr.ip6_plen; + packet->have_ip6padding = 1; + length -= packet->ip6padding; + } + + ext.ip6e_nxt = packet->ip6hdr.ip6_nxt; + ext.ip6e_len = 0; + while (ext.ip6e_nxt != IPPROTO_NONE + && ext.ip6e_nxt != IPPROTO_GRE + && ext.ip6e_nxt != IPPROTO_ICMPV6 + && ext.ip6e_nxt != IPPROTO_UDP + && ext.ip6e_nxt != IPPROTO_TCP) { + packet->state = PCAP_THREAD_PACKET_INVALID_IPV6HDR; + + /* + * Advance to the start of next header, this may not be needed + * if it's the first header or if the header is supported. + */ + if (ext.ip6e_len) { + if (ext.ip6e_len < already_advanced) { + /* Header length is invalid */ + layer_trace("ip6hdr invalid"); + break; + } + /* Advance if not already there */ + else if (ext.ip6e_len > already_advanced) { + advancexb((ext.ip6e_len - already_advanced) * 8, payload, length); + } + already_advanced = 0; + } else if (already_advanced) { + /* Already advanced but header has no length */ + layer_trace("ip6hdr already advanced"); + break; + } + + /* TODO: Store IPv6 headers? */ + + /* Handle supported headers */ + if (ext.ip6e_nxt == IPPROTO_FRAGMENT) { + if (packet->have_ip6frag) { + layer_trace("dup ip6frag"); + break; + } + layer_trace("ip6frag"); + need8(ext.ip6e_nxt, payload, length); + need8(packet->ip6frag.ip6f_reserved, payload, length); + need16(packet->ip6frag.ip6f_offlg, payload, length); + need32(packet->ip6frag.ip6f_ident, payload, length); + packet->have_ip6frag = 1; + ext.ip6e_len = 1; + already_advanced = 1; + } else if (ext.ip6e_nxt == IPPROTO_ROUTING) { + struct ip6_rthdr rthdr; + struct in6_addr rt[255]; + + if (packet->have_ip6rtdst) { + layer_trace("dup ip6rtdst"); + break; + } + need8(ext.ip6e_nxt, payload, length); + need8(ext.ip6e_len, payload, length); + need8(rthdr.ip6r_type, payload, length); + need8(rthdr.ip6r_segleft, payload, length); + if (!rthdr.ip6r_type) { + if (rthdr.ip6r_segleft > ext.ip6e_len) + break; + for (rthdr.ip6r_len = 0; rthdr.ip6r_len < ext.ip6e_len; rthdr.ip6r_len++, already_advanced += 2) { + needxb(&rt[rthdr.ip6r_len], 16, payload, length); + } + if (!rthdr.ip6r_len || rthdr.ip6r_len != ext.ip6e_len) { + break; + } + if (rthdr.ip6r_segleft) { + packet->ip6rtdst = rt[rthdr.ip6r_segleft]; + packet->have_ip6rtdst = 1; + } + } + } else { + /* Nonsupported header */ + layer_trace("ip6hdr?"); + need8(ext.ip6e_nxt, payload, length); + need8(ext.ip6e_len, payload, length); + } + + packet->state = PCAP_THREAD_PACKET_OK; + + if (!ext.ip6e_len) + break; + } + + for (; packet->state == PCAP_THREAD_PACKET_OK;) { + if (packet->have_ip6frag) { + packet->ip6frag_payload = ext.ip6e_nxt; + + layer_trace("is_v6_frag"); + + if (pcaplist->pcap_thread->callback_ipv6_frag.reassemble) { + pcap_thread_packet_t* whole_packet = 0; + const u_char* whole_payload = 0; + size_t whole_length = 0; + + packet->state = pcaplist->pcap_thread->callback_ipv6_frag.reassemble(pcaplist->ipv6_frag_ctx, packet, payload, length, &whole_packet, &whole_payload, &whole_length); + + /* Defragmentation failed some how, we return packet as invalid */ + if (packet->state != PCAP_THREAD_PACKET_OK) { + break; + } + + /* No whole/defragmented packet return, need more */ + if (!whole_packet || !whole_payload || !whole_length) { + return; + } + + layer_tracef("v6_reasm %p %p %lu", whole_packet, whole_payload, whole_length); + + packet = whole_packet; + payload = whole_payload; + length = whole_length; + release_frag = 1; + } else { + /* + * Mark packet as fragment and send it to the next user + * layer (if any) or return it as invalid. + */ + packet->state = PCAP_THREAD_PACKET_IS_FRAGMENT; + + switch (ext.ip6e_nxt) { + case IPPROTO_GRE: + layer_trace("ipproto_gre frag"); + + if (!packet->ip6frag.ip6f_offlg) { + for (;;) { + packet->state = PCAP_THREAD_PACKET_FRAGMENTED_GREHDR; + need16(packet->grehdr.gre_flags, payload, length); + need16(packet->grehdr.ether_type, payload, length); + packet->state = PCAP_THREAD_PACKET_IS_FRAGMENT; + packet->have_grehdr = 1; + break; + } + } + + if (pcaplist->pcap_thread->callback_gre) { + pcaplist->pcap_thread->callback_gre(pcaplist->user, packet, payload, length); + return; + } + break; + + case IPPROTO_ICMPV6: + layer_trace("ipproto_icmpv6 frag"); + + if (!packet->ip6frag.ip6f_offlg) { + for (;;) { + packet->state = PCAP_THREAD_PACKET_FRAGMENTED_ICMPV6HDR; + need8(packet->icmpv6hdr.icmp6_type, payload, length); + need8(packet->icmpv6hdr.icmp6_code, payload, length); + need16(packet->icmpv6hdr.icmp6_cksum, payload, length); + packet->state = PCAP_THREAD_PACKET_IS_FRAGMENT; + packet->have_icmpv6hdr = 1; + break; + } + } + + if (pcaplist->pcap_thread->callback_icmpv6) { + pcaplist->pcap_thread->callback_icmpv6(pcaplist->user, packet, payload, length); + return; + } + break; + + case IPPROTO_UDP: + layer_trace("ipproto_udp frag"); + + if (!packet->ip6frag.ip6f_offlg) { + for (;;) { + packet->state = PCAP_THREAD_PACKET_FRAGMENTED_UDPHDR; + need16(packet->udphdr.uh_sport, payload, length); + need16(packet->udphdr.uh_dport, payload, length); + need16(packet->udphdr.uh_ulen, payload, length); + need16(packet->udphdr.uh_sum, payload, length); + packet->state = PCAP_THREAD_PACKET_IS_FRAGMENT; + packet->have_udphdr = 1; + break; + } + } + + if (pcaplist->pcap_thread->callback_udp) { + pcaplist->pcap_thread->callback_udp(pcaplist->user, packet, payload, length); + return; + } + break; + + case IPPROTO_TCP: + layer_trace("ipproto_tcp frag"); + + if (!packet->ip6frag.ip6f_offlg) { + for (;;) { + packet->state = PCAP_THREAD_PACKET_FRAGMENTED_TCPHDR; + need16(packet->tcphdr.th_sport, payload, length); + need16(packet->tcphdr.th_dport, payload, length); + need32(packet->tcphdr.th_seq, payload, length); + need32(packet->tcphdr.th_ack, payload, length); + need4x2(packet->tcphdr.th_off, packet->tcphdr.th_x2, payload, length); + need8(packet->tcphdr.th_flags, payload, length); + need16(packet->tcphdr.th_win, payload, length); + need16(packet->tcphdr.th_sum, payload, length); + need16(packet->tcphdr.th_urp, payload, length); + if (packet->tcphdr.th_off > 5) { + packet->tcpopts_len = (packet->tcphdr.th_off - 5) * 4; + needxb(&(packet->tcpopts[0]), packet->tcpopts_len, payload, length); + packet->have_tcpopts = 1; + } + packet->state = PCAP_THREAD_PACKET_IS_FRAGMENT; + packet->have_tcphdr = 1; + break; + } + } + + if (pcaplist->pcap_thread->callback_tcp) { + pcaplist->pcap_thread->callback_tcp(pcaplist->user, packet, payload, length); + return; + } + break; + + default: + break; + } + break; + } + } + + switch (ext.ip6e_nxt) { + case IPPROTO_GRE: + if (packet->have_grehdr) + break; + + packet->state = PCAP_THREAD_PACKET_INVALID_GRE; + need16(packet->grehdr.gre_flags, payload, length); + need16(packet->grehdr.ether_type, payload, length); + packet->state = PCAP_THREAD_PACKET_OK; + packet->have_grehdr = 1; + + if (pcaplist->pcap_thread->callback_gre) + pcaplist->pcap_thread->callback_gre(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_gre((void*)pcaplist, packet, payload, length); + + if (release_frag) { + pcaplist->pcap_thread->callback_ipv6_frag.release(pcaplist->ipv6_frag_ctx, packet, payload, length); + } + return; + + case IPPROTO_ICMPV6: + layer_trace("ipproto_icmpv6"); + + if (packet->have_icmpv6hdr) + break; + + packet->state = PCAP_THREAD_PACKET_INVALID_ICMPV6; + need8(packet->icmpv6hdr.icmp6_type, payload, length); + need8(packet->icmpv6hdr.icmp6_code, payload, length); + need16(packet->icmpv6hdr.icmp6_cksum, payload, length); + packet->state = PCAP_THREAD_PACKET_OK; + packet->have_icmpv6hdr = 1; + + if (pcaplist->pcap_thread->callback_icmpv6) + pcaplist->pcap_thread->callback_icmpv6(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_icmpv6((void*)pcaplist, packet, payload, length); + + if (release_frag) { + pcaplist->pcap_thread->callback_ipv6_frag.release(pcaplist->ipv6_frag_ctx, packet, payload, length); + } + return; + + case IPPROTO_UDP: + if (packet->have_udphdr) + break; + + packet->state = PCAP_THREAD_PACKET_INVALID_UDP; + need16(packet->udphdr.uh_sport, payload, length); + need16(packet->udphdr.uh_dport, payload, length); + need16(packet->udphdr.uh_ulen, payload, length); + need16(packet->udphdr.uh_sum, payload, length); + packet->state = PCAP_THREAD_PACKET_OK; + packet->have_udphdr = 1; + + if (pcaplist->pcap_thread->callback_udp) + pcaplist->pcap_thread->callback_udp(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_udp((void*)pcaplist, packet, payload, length); + + if (release_frag) { + pcaplist->pcap_thread->callback_ipv6_frag.release(pcaplist->ipv6_frag_ctx, packet, payload, length); + } + return; + + case IPPROTO_TCP: + if (packet->have_tcphdr) + break; + + packet->state = PCAP_THREAD_PACKET_INVALID_TCP; + need16(packet->tcphdr.th_sport, payload, length); + need16(packet->tcphdr.th_dport, payload, length); + need32(packet->tcphdr.th_seq, payload, length); + need32(packet->tcphdr.th_ack, payload, length); + need4x2(packet->tcphdr.th_off, packet->tcphdr.th_x2, payload, length); + need8(packet->tcphdr.th_flags, payload, length); + need16(packet->tcphdr.th_win, payload, length); + need16(packet->tcphdr.th_sum, payload, length); + need16(packet->tcphdr.th_urp, payload, length); + if (packet->tcphdr.th_off > 5) { + packet->tcpopts_len = (packet->tcphdr.th_off - 5) * 4; + needxb(&(packet->tcpopts[0]), packet->tcpopts_len, payload, length); + packet->have_tcpopts = 1; + } + packet->state = PCAP_THREAD_PACKET_OK; + packet->have_tcphdr = 1; + + if (pcaplist->pcap_thread->callback_tcp) + pcaplist->pcap_thread->callback_tcp(pcaplist->user, packet, payload, length); + else + pcap_thread_callback_tcp((void*)pcaplist, packet, payload, length); + + if (release_frag) { + pcaplist->pcap_thread->callback_ipv6_frag.release(pcaplist->ipv6_frag_ctx, packet, payload, length); + } + return; + + default: + packet->state = PCAP_THREAD_PACKET_UNSUPPORTED; + break; + } + break; + } + } + + if (pcaplist->pcap_thread->callback_invalid) { + if (packet->state == PCAP_THREAD_PACKET_OK) + packet->state = PCAP_THREAD_PACKET_INVALID; + if (release_frag) + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, payload, length); + else + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, orig, origlength); + } + + if (release_frag) { + pcaplist->pcap_thread->callback_ipv6_frag.release(pcaplist->ipv6_frag_ctx, packet, payload, length); + } +} + +static void pcap_thread_callback_icmp(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + pcap_thread_pcaplist_t* pcaplist = (pcap_thread_pcaplist_t*)user; + const u_char* orig = payload; + size_t origlength = length; + + if (!pcaplist) { + return; + } + if (!pcaplist->pcap_thread) { + return; + } + if (!packet) { + return; + } + if (!payload) { + return; + } + if (!length) { + return; + } + + /* TODO: Higher layer support? */ + packet->state = PCAP_THREAD_PACKET_UNPROCESSED; + + if (pcaplist->pcap_thread->callback_invalid) { + if (packet->state == PCAP_THREAD_PACKET_OK) + packet->state = PCAP_THREAD_PACKET_INVALID; + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, orig, origlength); + } +} + +static void pcap_thread_callback_icmpv6(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + pcap_thread_pcaplist_t* pcaplist = (pcap_thread_pcaplist_t*)user; + const u_char* orig = payload; + size_t origlength = length; + + if (!pcaplist) { + return; + } + if (!pcaplist->pcap_thread) { + return; + } + if (!packet) { + return; + } + if (!payload) { + return; + } + if (!length) { + return; + } + + /* TODO: Higher layer support? */ + packet->state = PCAP_THREAD_PACKET_UNPROCESSED; + + if (pcaplist->pcap_thread->callback_invalid) { + if (packet->state == PCAP_THREAD_PACKET_OK) + packet->state = PCAP_THREAD_PACKET_INVALID; + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, orig, origlength); + } +} + +static void pcap_thread_callback_udp(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + pcap_thread_pcaplist_t* pcaplist = (pcap_thread_pcaplist_t*)user; + const u_char* orig = payload; + size_t origlength = length; + + if (!pcaplist) { + return; + } + if (!pcaplist->pcap_thread) { + return; + } + if (!packet) { + return; + } + if (!payload) { + return; + } + if (!length) { + return; + } + + /* TODO: Higher layer support? */ + packet->state = PCAP_THREAD_PACKET_UNPROCESSED; + + if (pcaplist->pcap_thread->callback_invalid) { + if (packet->state == PCAP_THREAD_PACKET_OK) + packet->state = PCAP_THREAD_PACKET_INVALID; + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, orig, origlength); + } +} + +static void pcap_thread_callback_tcp(u_char* user, pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + pcap_thread_pcaplist_t* pcaplist = (pcap_thread_pcaplist_t*)user; + const u_char* orig = payload; + size_t origlength = length; + + if (!pcaplist) { + return; + } + if (!pcaplist->pcap_thread) { + return; + } + if (!packet) { + return; + } + if (!payload) { + return; + } + if (!length) { + return; + } + + /* TODO: Higher layer support? */ + packet->state = PCAP_THREAD_PACKET_UNPROCESSED; + + if (pcaplist->pcap_thread->callback_invalid) { + if (packet->state == PCAP_THREAD_PACKET_OK) + packet->state = PCAP_THREAD_PACKET_INVALID; + pcaplist->pcap_thread->callback_invalid(pcaplist->user, packet, orig, origlength); + } +} + +/* + * Open/Close + */ + +static pcap_thread_pcaplist_t _pcaplist_defaults = PCAP_THREAD_PCAPLIST_T_INIT; + +int pcap_thread_open(pcap_thread_t* pcap_thread, const char* device, void* user) +{ + pcap_t* pcap; + pcap_thread_pcaplist_t* pcaplist; + int snapshot; + + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (!device) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + if (pcap_thread->errbuf[0]) { + memset(pcap_thread->errbuf, 0, sizeof(pcap_thread->errbuf)); + } + pcap_thread->status = 0; + + if (!(pcaplist = malloc(sizeof(pcap_thread_pcaplist_t)))) { + return PCAP_THREAD_ENOMEM; + } + memcpy(pcaplist, &_pcaplist_defaults, sizeof(pcap_thread_pcaplist_t)); + if (!(pcaplist->name = strdup(device))) { + free(pcaplist); + return PCAP_THREAD_ENOMEM; + } + +#ifdef HAVE_PCAP_CREATE + if (!(pcap = pcap_create(pcaplist->name, pcap_thread->errbuf))) { + free(pcaplist->name); + free(pcaplist); + return PCAP_THREAD_EPCAP; + } + + if (pcap_thread->monitor) { + pcap_thread->status = pcap_can_set_rfmon(pcap); + if (pcap_thread->status == 0) { + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + return PCAP_THREAD_ENOMON; + } + if (pcap_thread->status != 1) { + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_can_set_rfmon()"); + return PCAP_THREAD_EPCAP; + } + } + +#ifdef HAVE_PCAP_SET_TSTAMP_PRECISION + if (pcap_thread->have_timestamp_precision && (pcap_thread->status = pcap_set_tstamp_precision(pcap, pcap_thread->timestamp_precision))) { + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_set_tstamp_precision()"); + return PCAP_THREAD_EPCAP; + } +#endif +#ifdef HAVE_PCAP_SET_IMMEDIATE_MODE + if (pcap_thread->immediate_mode && (pcap_thread->status = pcap_set_immediate_mode(pcap, 1))) { + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_set_immediate_mode()"); + return PCAP_THREAD_EPCAP; + } +#endif + + if (pcap_thread->monitor && (pcap_thread->status = pcap_set_rfmon(pcap, 1))) { + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_set_rfmon()"); + return PCAP_THREAD_EPCAP; + } + if (pcap_thread->snaplen && (pcap_thread->status = pcap_set_snaplen(pcap, pcap_thread->snaplen))) { + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_set_snaplen()"); + return PCAP_THREAD_EPCAP; + } + if (pcap_thread->promiscuous && (pcap_thread->status = pcap_set_promisc(pcap, pcap_thread->promiscuous))) { + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_set_promisc()"); + return PCAP_THREAD_EPCAP; + } + if (pcap_thread->timeout && (pcap_thread->status = pcap_set_timeout(pcap, pcap_thread->timeout))) { + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_set_timeout()"); + return PCAP_THREAD_EPCAP; + } + if (pcap_thread->buffer_size && (pcap_thread->status = pcap_set_buffer_size(pcap, pcap_thread->buffer_size))) { + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_set_buffer_size()"); + return PCAP_THREAD_EPCAP; + } + +#ifdef HAVE_PCAP_SET_TSTAMP_TYPE + if (pcap_thread->have_timestamp_type && (pcap_thread->status = pcap_set_tstamp_type(pcap, pcap_thread->timestamp_type))) { + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_set_tstamp_type()"); + return PCAP_THREAD_EPCAP; + } +#endif + + if (pcap_thread->activate_mode == PCAP_THREAD_ACTIVATE_MODE_IMMEDIATE) { + if ((pcap_thread->status = pcap_activate(pcap))) { + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_activate()"); + return PCAP_THREAD_EPCAP; + } + +#ifdef HAVE_PCAP_SETDIRECTION +#ifdef HAVE_PCAP_DIRECTION_T + if (pcap_thread->have_direction && (pcap_thread->status = pcap_setdirection(pcap, pcap_thread->direction))) { + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_setdirection()"); + return PCAP_THREAD_EPCAP; + } +#endif +#endif + } +#else /* HAVE_PCAP_CREATE */ + if (!(pcap = pcap_open_live(pcaplist->name, pcap_thread->snaplen, pcap_thread->promiscuous, pcap_thread->timeout, pcap_thread->errbuf))) { + free(pcaplist->name); + free(pcaplist); + return PCAP_THREAD_EPCAP; + } +#endif + + if (pcap_thread->activate_mode == PCAP_THREAD_ACTIVATE_MODE_IMMEDIATE) { + if (pcap_thread->filter) { + if ((pcap_thread->status = pcap_compile(pcap, &(pcaplist->bpf), pcap_thread->filter, pcap_thread->filter_optimize, pcap_thread->filter_netmask))) { + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_compile()"); + return PCAP_THREAD_EPCAP; + } + pcaplist->have_bpf = 1; + pcap_thread->filter_errno = 0; + errno = 0; + if ((pcap_thread->status = pcap_setfilter(pcap, &(pcaplist->bpf)))) { + pcap_freecode(&(pcaplist->bpf)); + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_setfilter()"); + return PCAP_THREAD_EPCAP; + } + pcap_thread->filter_errno = errno; + } + + if ((snapshot = pcap_snapshot(pcap)) < 0) { + pcap_thread->status = snapshot; + if (pcaplist->have_bpf) + pcap_freecode(&(pcaplist->bpf)); + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_snapshot()"); + return PCAP_THREAD_EPCAP; + } + if (snapshot > pcap_thread->snapshot) { + pcap_thread->snapshot = snapshot; + } + } + + pcaplist->pcap = pcap; + pcaplist->user = user; + if (pcap_thread->callback_ipv4_frag.new) { + pcaplist->ipv4_frag_ctx = pcap_thread->callback_ipv4_frag.new(pcap_thread->callback_ipv4_frag.conf, user); + pcaplist->have_ipv4_frag_ctx = 1; + } + if (pcap_thread->callback_ipv6_frag.new) { + pcaplist->ipv6_frag_ctx = pcap_thread->callback_ipv6_frag.new(pcap_thread->callback_ipv6_frag.conf, user); + pcaplist->have_ipv6_frag_ctx = 1; + } + if (pcap_thread->pcaplist) { + pcaplist->next = pcap_thread->pcaplist; + } + pcap_thread->pcaplist = pcaplist; + + return PCAP_THREAD_OK; +} + +int pcap_thread_open_offline(pcap_thread_t* pcap_thread, const char* file, void* user) +{ + pcap_t* pcap; + pcap_thread_pcaplist_t* pcaplist; + int snapshot; + + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (!file) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + if (pcap_thread->errbuf[0]) { + memset(pcap_thread->errbuf, 0, sizeof(pcap_thread->errbuf)); + } + pcap_thread->status = 0; + + if (!(pcaplist = malloc(sizeof(pcap_thread_pcaplist_t)))) { + return PCAP_THREAD_ENOMEM; + } + memcpy(pcaplist, &_pcaplist_defaults, sizeof(pcap_thread_pcaplist_t)); + pcaplist->is_offline = 1; + if (!(pcaplist->name = strdup(file))) { + free(pcaplist); + return PCAP_THREAD_ENOMEM; + } + +#ifdef HAVE_PCAP_OPEN_OFFLINE_WITH_TSTAMP_PRECISION + if (pcap_thread->have_timestamp_precision) { + if (!(pcap = pcap_open_offline_with_tstamp_precision(pcaplist->name, pcap_thread->timestamp_precision, pcap_thread->errbuf))) { + free(pcaplist->name); + free(pcaplist); + return PCAP_THREAD_EPCAP; + } + } else +#endif + { + if (!(pcap = pcap_open_offline(pcaplist->name, pcap_thread->errbuf))) { + free(pcaplist->name); + free(pcaplist); + return PCAP_THREAD_EPCAP; + } + } + + if (pcap_thread->filter) { + if ((pcap_thread->status = pcap_compile(pcap, &(pcaplist->bpf), pcap_thread->filter, pcap_thread->filter_optimize, pcap_thread->filter_netmask))) { + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_compile()"); + return PCAP_THREAD_EPCAP; + } + pcaplist->have_bpf = 1; + pcap_thread->filter_errno = 0; + errno = 0; + if ((pcap_thread->status = pcap_setfilter(pcap, &(pcaplist->bpf)))) { + pcap_freecode(&(pcaplist->bpf)); + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_setfilter()"); + return PCAP_THREAD_EPCAP; + } + pcap_thread->filter_errno = errno; + } + + if ((snapshot = pcap_snapshot(pcap)) < 0) { + pcap_thread->status = snapshot; + if (pcaplist->have_bpf) + pcap_freecode(&(pcaplist->bpf)); + pcap_close(pcap); + free(pcaplist->name); + free(pcaplist); + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_snapshot()"); + return PCAP_THREAD_EPCAP; + } + if (snapshot > pcap_thread->snapshot) { + pcap_thread->snapshot = snapshot; + } + + pcaplist->pcap = pcap; + pcaplist->user = user; + if (pcap_thread->callback_ipv4_frag.new) { + pcaplist->ipv4_frag_ctx = pcap_thread->callback_ipv4_frag.new(pcap_thread->callback_ipv4_frag.conf, user); + pcaplist->have_ipv4_frag_ctx = 1; + } + if (pcap_thread->callback_ipv6_frag.new) { + pcaplist->ipv6_frag_ctx = pcap_thread->callback_ipv6_frag.new(pcap_thread->callback_ipv6_frag.conf, user); + pcaplist->have_ipv6_frag_ctx = 1; + } + if (pcap_thread->pcaplist) { + pcaplist->next = pcap_thread->pcaplist; + } + pcap_thread->pcaplist = pcaplist; + + return PCAP_THREAD_OK; +} + +int pcap_thread_add(pcap_thread_t* pcap_thread, const char* name, pcap_t* pcap, void* user) +{ + (void)pcap_thread; + (void)name; + (void)pcap; + (void)user; + + if (pcap_thread->errbuf[0]) { + memset(pcap_thread->errbuf, 0, sizeof(pcap_thread->errbuf)); + } + pcap_thread->status = 0; + + return PCAP_THREAD_EOBSOLETE; +} + +int pcap_thread_activate(pcap_thread_t* pcap_thread) +{ + pcap_thread_pcaplist_t* pcaplist; + int snapshot; + + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + if (pcap_thread->errbuf[0]) { + memset(pcap_thread->errbuf, 0, sizeof(pcap_thread->errbuf)); + } + pcap_thread->status = 0; + + pcap_thread->filter_errno = 0; + for (pcaplist = pcap_thread->pcaplist; pcaplist; pcaplist = pcaplist->next) { + if (pcaplist->is_offline) { + continue; + } + +#ifdef HAVE_PCAP_ACTIVATE + if ((pcap_thread->status = pcap_activate(pcaplist->pcap))) { + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_activate()"); + return PCAP_THREAD_EPCAP; + } +#endif + +#ifdef HAVE_PCAP_SETDIRECTION +#ifdef HAVE_PCAP_DIRECTION_T + if (pcap_thread->have_direction && (pcap_thread->status = pcap_setdirection(pcaplist->pcap, pcap_thread->direction))) { + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_setdirection()"); + return PCAP_THREAD_EPCAP; + } +#endif +#endif + + if (pcap_thread->filter) { + if (pcaplist->have_bpf) + pcap_freecode(&(pcaplist->bpf)); + if ((pcap_thread->status = pcap_compile(pcaplist->pcap, &(pcaplist->bpf), pcap_thread->filter, pcap_thread->filter_optimize, pcap_thread->filter_netmask))) { + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_compile()"); + return PCAP_THREAD_EPCAP; + } + pcaplist->have_bpf = 1; + errno = 0; + if ((pcap_thread->status = pcap_setfilter(pcaplist->pcap, &(pcaplist->bpf)))) { + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_setfilter()"); + return PCAP_THREAD_EPCAP; + } + if (errno && !pcap_thread->filter_errno) + pcap_thread->filter_errno = errno; + } + + if ((snapshot = pcap_snapshot(pcaplist->pcap)) < 0) { + pcap_thread->status = snapshot; + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_snapshot()"); + return PCAP_THREAD_EPCAP; + } + if (snapshot > pcap_thread->snapshot) { + pcap_thread->snapshot = snapshot; + } + } + + return PCAP_THREAD_OK; +} + +int pcap_thread_close(pcap_thread_t* pcap_thread) +{ + pcap_thread_pcaplist_t* pcaplist; + + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + while (pcap_thread->pcaplist) { + pcaplist = pcap_thread->pcaplist; + pcap_thread->pcaplist = pcaplist->next; + + if (pcap_thread->callback_ipv4_frag.free && pcaplist->have_ipv4_frag_ctx) { + pcap_thread->callback_ipv4_frag.free(pcaplist->ipv4_frag_ctx); + } + if (pcap_thread->callback_ipv6_frag.free && pcaplist->have_ipv6_frag_ctx) { + pcap_thread->callback_ipv6_frag.free(pcaplist->ipv6_frag_ctx); + } + + if (pcaplist->pcap) { + pcap_close(pcaplist->pcap); + } + if (pcaplist->have_bpf) { + pcap_freecode(&(pcaplist->bpf)); + } + if (pcaplist->name) { + free(pcaplist->name); + } + free(pcaplist); + } + pcap_thread->step = 0; + +#ifdef HAVE_PTHREAD + if (pcap_thread->pkthdr) { + free(pcap_thread->pkthdr); + pcap_thread->pkthdr = 0; + } + if (pcap_thread->pkt) { + free(pcap_thread->pkt); + pcap_thread->pkt = 0; + } + if (pcap_thread->pcaplist_pkt) { + free(pcap_thread->pcaplist_pkt); + pcap_thread->pcaplist_pkt = 0; + } +#endif + + return PCAP_THREAD_OK; +} + +/* + * Engine + */ + +#ifdef HAVE_PTHREAD +static void _callback(u_char* user, const struct pcap_pkthdr* pkthdr, const u_char* pkt) +{ + pcap_thread_pcaplist_t* pcaplist; + pcap_thread_t* pcap_thread; + + pthread_testcancel(); + + if (!user) { + return; + } + pcaplist = (pcap_thread_pcaplist_t*)user; + + if (!pcaplist->pcap_thread) { + pcaplist->running = 0; + return; + } + pcap_thread = pcaplist->pcap_thread; + + if (pkthdr->caplen > pcap_thread->snapshot) { + if (pcap_thread->dropback) { + pcap_thread->dropback(pcaplist->user, pkthdr, pkt, pcaplist->name, pcap_datalink(pcaplist->pcap)); + } + return; + } + + if (pcap_thread->queue_mode == PCAP_THREAD_QUEUE_MODE_DIRECT) { + if (pcap_thread->callback) { + pcap_thread->callback(pcaplist->user, pkthdr, pkt, pcaplist->name, pcap_datalink(pcaplist->pcap)); + } else if (pcaplist->layer_callback) { + pcaplist->layer_callback((void*)pcaplist, pkthdr, pkt, pcaplist->name, pcap_datalink(pcaplist->pcap)); + } else if (pcap_thread->dropback) { + pcap_thread->dropback(pcaplist->user, pkthdr, pkt, pcaplist->name, pcap_datalink(pcaplist->pcap)); + } + return; + } + + if (pthread_mutex_lock(&(pcap_thread->mutex))) { + if (pcap_thread->dropback) { + pcap_thread->dropback(pcaplist->user, pkthdr, pkt, pcaplist->name, pcap_datalink(pcaplist->pcap)); + } + return; + } + + while (pcaplist->running && pcap_thread->running) { + if (pcap_thread->pkts < pcap_thread->queue_size) { + pcap_thread->pcaplist_pkt[pcap_thread->write_pos] = pcaplist; + memcpy(&(pcap_thread->pkthdr[pcap_thread->write_pos]), pkthdr, sizeof(struct pcap_pkthdr)); + memcpy(&(pcap_thread->pkt[pcap_thread->write_pos * pcap_thread->snapshot]), pkt, pkthdr->caplen); + pcap_thread->write_pos++; + if (pcap_thread->write_pos == pcap_thread->queue_size) { + pcap_thread->write_pos = 0; + } + pcap_thread->pkts++; + + pthread_cond_signal(&(pcap_thread->have_packets)); + break; + } + + if (pthread_cond_wait(&(pcap_thread->can_write), &(pcap_thread->mutex))) { + pcaplist->running = 0; + pcap_breakloop(pcaplist->pcap); + return; + } + continue; + } + + if (pthread_mutex_unlock(&(pcap_thread->mutex))) { + pcaplist->running = 0; + pcap_breakloop(pcaplist->pcap); + return; + } +} + +static void* _thread(void* vp) +{ + pcap_thread_pcaplist_t* pcaplist; + int ret = 0; + + /*pthread_detach(pthread_self());*/ + + if (!vp) { + return 0; + } + pcaplist = (pcap_thread_pcaplist_t*)vp; + + if (!pcaplist->pcap_thread) { + pcaplist->running = 0; + return 0; + } + + /* + * pcap_loop() might return -2 to indicate pcap_breakloop() was called + * but we do not need to act on that because either this thread has + * been cancelled or running has been cleared + */ + while (pcaplist->running) { + pthread_testcancel(); + ret = pcap_loop(pcaplist->pcap, -1, _callback, (u_char*)pcaplist); + if (ret == PCAP_ERROR) { + /* TODO: Store pcap_loop() error */ + break; + } + if (!ret) + break; + } + + pcaplist->running = 0; + + pthread_mutex_lock(&(pcaplist->pcap_thread->mutex)); + pthread_cond_signal(&(pcaplist->pcap_thread->have_packets)); + pthread_mutex_unlock(&(pcaplist->pcap_thread->mutex)); + + return 0; +} +#endif + +static void _callback2(u_char* user, const struct pcap_pkthdr* pkthdr, const u_char* pkt) +{ + pcap_thread_pcaplist_t* pcaplist; + + if (!user) { + return; + } + pcaplist = (pcap_thread_pcaplist_t*)user; + + if (!pcaplist->pcap_thread) { + pcaplist->running = 0; + return; + } + if (pcaplist->pcap_thread->callback) { + pcaplist->pcap_thread->callback(pcaplist->user, pkthdr, pkt, pcaplist->name, pcap_datalink(pcaplist->pcap)); + } else if (pcaplist->layer_callback) { + pcaplist->layer_callback((void*)pcaplist, pkthdr, pkt, pcaplist->name, pcap_datalink(pcaplist->pcap)); + } else { + pcaplist->running = 0; + } + + if (pcaplist->timedrun + && (pkthdr->ts.tv_sec > pcaplist->end.tv_sec + || (pkthdr->ts.tv_sec == pcaplist->end.tv_sec && (pkthdr->ts.tv_usec * 1000) >= pcaplist->end.tv_nsec))) { + pcap_breakloop(pcaplist->pcap); + } +} + +int pcap_thread_run(pcap_thread_t* pcap_thread) +{ + pcap_thread_pcaplist_t* pcaplist; + int run = 1, timedrun = 0; + struct timeval start = { 0, 0 }; + struct timespec end = { 0, 0 }; + + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (!pcap_thread->pcaplist) { + return PCAP_THREAD_NOPCAPS; + } + if (!pcap_thread->callback && !pcap_thread->use_layers) { + return PCAP_THREAD_NOCALLBACK; + } + if (pcap_thread->use_layers + && !(pcap_thread->callback_linux_sll + || pcap_thread->callback_ether + || pcap_thread->callback_null + || pcap_thread->callback_loop + || pcap_thread->callback_ieee802 + || pcap_thread->callback_gre + || pcap_thread->callback_ip + || pcap_thread->callback_ipv4 + || pcap_thread->callback_ipv6 + || pcap_thread->callback_icmp + || pcap_thread->callback_icmpv6 + || pcap_thread->callback_udp + || pcap_thread->callback_tcp)) { + return PCAP_THREAD_NOCALLBACK; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + + if (pcap_thread->errbuf[0]) { + memset(pcap_thread->errbuf, 0, sizeof(pcap_thread->errbuf)); + } + pcap_thread->status = 0; + + if (pcap_thread->timedrun.tv_sec || pcap_thread->timedrun.tv_usec) { + timedrun = 1; + if (gettimeofday(&start, 0)) { + PCAP_THREAD_SET_ERRBUF(pcap_thread, "gettimeofday()"); + return PCAP_THREAD_ERRNO; + } + + end.tv_sec = start.tv_sec + pcap_thread->timedrun.tv_sec + + ((start.tv_usec + pcap_thread->timedrun.tv_usec) / 1000000); + end.tv_nsec = ((start.tv_usec + pcap_thread->timedrun.tv_usec) % 1000000) * 1000; + } else if (pcap_thread->timedrun_to.tv_sec) { + timedrun = 1; + + end.tv_sec = pcap_thread->timedrun_to.tv_sec; + end.tv_nsec = pcap_thread->timedrun_to.tv_usec * 1000; + } + +#ifdef HAVE_PTHREAD + if (pcap_thread->use_threads) { + int err, all_offline; + + switch (pcap_thread->queue_mode) { + case PCAP_THREAD_QUEUE_MODE_COND: + case PCAP_THREAD_QUEUE_MODE_DIRECT: + if ((err = pthread_mutex_lock(&(pcap_thread->mutex)))) { + errno = err; + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pthread_mutex_lock()"); + return PCAP_THREAD_ERRNO; + } + break; + case PCAP_THREAD_QUEUE_MODE_WAIT: + case PCAP_THREAD_QUEUE_MODE_YIELD: + case PCAP_THREAD_QUEUE_MODE_DROP: + return PCAP_THREAD_EOBSOLETE; + default: + return PCAP_THREAD_EINVAL; + } + + if (pcap_thread->running) { + pthread_mutex_unlock(&(pcap_thread->mutex)); + return PCAP_THREAD_ERUNNING; + } + + if (pcap_thread->pkthdr) { + free(pcap_thread->pkthdr); + } + if (!(pcap_thread->pkthdr = calloc(pcap_thread->queue_size, sizeof(struct pcap_pkthdr)))) { + pthread_mutex_unlock(&(pcap_thread->mutex)); + return PCAP_THREAD_ENOMEM; + } + + if (pcap_thread->pkt) { + free(pcap_thread->pkt); + } + if (!(pcap_thread->pkt = calloc(pcap_thread->queue_size, pcap_thread->snapshot))) { + pthread_mutex_unlock(&(pcap_thread->mutex)); + return PCAP_THREAD_ENOMEM; + } + + if (pcap_thread->pcaplist_pkt) { + free(pcap_thread->pcaplist_pkt); + } + if (!(pcap_thread->pcaplist_pkt = calloc(pcap_thread->queue_size, sizeof(pcap_thread_pcaplist_t*)))) { + pthread_mutex_unlock(&(pcap_thread->mutex)); + return PCAP_THREAD_ENOMEM; + } + + pcap_thread->read_pos = 0; + pcap_thread->write_pos = 0; + pcap_thread->pkts = 0; + + all_offline = 1; + for (pcaplist = pcap_thread->pcaplist; all_offline && pcaplist; pcaplist = pcaplist->next) { + if (!pcaplist->is_offline) { + all_offline = 0; + break; + } + } + + pcap_thread->running = 1; + pcap_thread->was_stopped = 0; + err = PCAP_THREAD_OK; + + for (pcaplist = pcap_thread->pcaplist; pcaplist; pcaplist = pcaplist->next) { + pcaplist->pcap_thread = pcap_thread; + if (pcap_thread->use_layers) { + pcaplist->layer_callback = &pcap_thread_callback; + } + if (pcap_thread->callback_ipv4_frag.new && !pcaplist->have_ipv4_frag_ctx) { + pcaplist->ipv4_frag_ctx = pcap_thread->callback_ipv4_frag.new(pcap_thread->callback_ipv4_frag.conf, pcaplist->user); + pcaplist->have_ipv4_frag_ctx = 1; + } + if (pcap_thread->callback_ipv6_frag.new && !pcaplist->have_ipv6_frag_ctx) { + pcaplist->ipv6_frag_ctx = pcap_thread->callback_ipv6_frag.new(pcap_thread->callback_ipv6_frag.conf, pcaplist->user); + pcaplist->have_ipv6_frag_ctx = 1; + } + pcaplist->running = 1; + + if ((err = pthread_create(&(pcaplist->thread), 0, _thread, (void*)pcaplist))) { + errno = err; + err = PCAP_THREAD_ERRNO; + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pthread_create()"); + break; + } + } + + while (err == PCAP_THREAD_OK && run && pcap_thread->running) { + while (pcap_thread->pkts) { + if (!pcap_thread->pcaplist_pkt[pcap_thread->read_pos]) { + err = PCAP_THREAD_ENOPCAPLIST; + break; + } + + if (pcap_thread->callback) { + pcap_thread->callback( + pcap_thread->pcaplist_pkt[pcap_thread->read_pos]->user, + &(pcap_thread->pkthdr[pcap_thread->read_pos]), + &(pcap_thread->pkt[pcap_thread->read_pos * pcap_thread->snapshot]), + pcap_thread->pcaplist_pkt[pcap_thread->read_pos]->name, + pcap_datalink(pcap_thread->pcaplist_pkt[pcap_thread->read_pos]->pcap)); + } else { + pcap_thread_callback( + (void*)pcap_thread->pcaplist_pkt[pcap_thread->read_pos], + &(pcap_thread->pkthdr[pcap_thread->read_pos]), + &(pcap_thread->pkt[pcap_thread->read_pos * pcap_thread->snapshot]), + pcap_thread->pcaplist_pkt[pcap_thread->read_pos]->name, + pcap_datalink(pcap_thread->pcaplist_pkt[pcap_thread->read_pos]->pcap)); + } + + pcap_thread->pcaplist_pkt[pcap_thread->read_pos] = 0; + pcap_thread->read_pos++; + if (pcap_thread->read_pos == pcap_thread->queue_size) { + pcap_thread->read_pos = 0; + } + pcap_thread->pkts--; + } + + if (err != PCAP_THREAD_OK) + break; + + if ((err = pthread_cond_broadcast(&(pcap_thread->can_write)))) { + errno = err; + err = PCAP_THREAD_ERRNO; + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pthread_cond_broadcast()"); + break; + } + + run = 0; + for (pcaplist = pcap_thread->pcaplist; pcaplist; pcaplist = pcaplist->next) { + if (pcaplist->running) { + run = 1; + } + } + if (!run) + break; + + if (timedrun) { + struct timeval now; + + if (gettimeofday(&now, 0)) { + err = PCAP_THREAD_ERRNO; + PCAP_THREAD_SET_ERRBUF(pcap_thread, "gettimeofday()"); + break; + } + + if (now.tv_sec > end.tv_sec + || (now.tv_sec == end.tv_sec && (now.tv_usec * 1000) >= end.tv_nsec)) { + break; + } + + err = pthread_cond_timedwait(&(pcap_thread->have_packets), &(pcap_thread->mutex), &end); + if (err == ETIMEDOUT) { + err = PCAP_THREAD_OK; + } else if (err) { + errno = err; + err = PCAP_THREAD_ERRNO; + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pthread_cond_timedwait()"); + break; + } + } else { + if ((err = pthread_cond_wait(&(pcap_thread->have_packets), &(pcap_thread->mutex)))) { + errno = err; + err = PCAP_THREAD_ERRNO; + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pthread_cond_wait()"); + break; + } + } + } + + for (pcaplist = pcap_thread->pcaplist; pcaplist; pcaplist = pcaplist->next) { + pcaplist->running = 0; + pcap_breakloop(pcaplist->pcap); + if (pcaplist->thread) { + pthread_cancel(pcaplist->thread); + } + } + + pthread_mutex_unlock(&(pcap_thread->mutex)); + + for (pcaplist = pcap_thread->pcaplist; pcaplist; pcaplist = pcaplist->next) { + if (pcaplist->thread) { + pthread_join(pcaplist->thread, 0); + pcaplist->thread = 0; + } + } + + pcap_thread->running = 0; + return err; + } else +#endif + { + fd_set fds, rfds; + int max_fd = 0; + struct timeval t1, t2; + + pcap_thread->running = 1; + pcap_thread->was_stopped = 0; + + FD_ZERO(&fds); + for (pcaplist = pcap_thread->pcaplist; pcaplist; pcaplist = pcaplist->next) { + int fd = pcap_get_selectable_fd(pcaplist->pcap); + + FD_SET(fd, &fds); + if (fd > max_fd) + max_fd = fd; + + if (!pcaplist->is_offline && (pcap_thread->status = pcap_setnonblock(pcaplist->pcap, 1, pcap_thread->errbuf))) { + pcap_thread->running = 0; + return PCAP_THREAD_EPCAP; + } + pcaplist->pcap_thread = pcap_thread; + if (pcap_thread->use_layers) { + pcaplist->layer_callback = &pcap_thread_callback; + } + if (pcap_thread->callback_ipv4_frag.new && !pcaplist->have_ipv4_frag_ctx) { + pcaplist->ipv4_frag_ctx = pcap_thread->callback_ipv4_frag.new(pcap_thread->callback_ipv4_frag.conf, pcaplist->user); + pcaplist->have_ipv4_frag_ctx = 1; + } + if (pcap_thread->callback_ipv6_frag.new && !pcaplist->have_ipv6_frag_ctx) { + pcaplist->ipv6_frag_ctx = pcap_thread->callback_ipv6_frag.new(pcap_thread->callback_ipv6_frag.conf, pcaplist->user); + pcaplist->have_ipv6_frag_ctx = 1; + } + pcaplist->running = 1; + pcaplist->timedrun = timedrun; + pcaplist->end = end; + } + + t1.tv_sec = pcap_thread->timeout / 1000; + t1.tv_usec = (pcap_thread->timeout % 1000) * 1000; + max_fd++; + while (run) { + rfds = fds; + t2 = t1; + if (timedrun) { + struct timeval now; + struct timeval diff; + + if (gettimeofday(&now, 0)) { + PCAP_THREAD_SET_ERRBUF(pcap_thread, "gettimeofday()"); + pcap_thread->running = 0; + return PCAP_THREAD_ERRNO; + } + if (now.tv_sec > end.tv_sec + || (now.tv_sec == end.tv_sec && (now.tv_usec * 1000) >= end.tv_nsec)) { + break; + } + + if (end.tv_sec > now.tv_sec) { + diff.tv_sec = end.tv_sec - now.tv_sec - 1; + diff.tv_usec = 1000000 - now.tv_usec; + diff.tv_usec += end.tv_nsec / 1000; + if (diff.tv_usec > 1000000) { + diff.tv_sec += diff.tv_usec / 1000000; + diff.tv_usec %= 1000000; + } + } else { + diff.tv_sec = 0; + if (end.tv_sec == now.tv_sec && (end.tv_nsec / 1000) > now.tv_usec) { + diff.tv_usec = (end.tv_nsec / 1000) - now.tv_usec; + } else { + diff.tv_usec = 0; + } + } + + if (diff.tv_sec < t1.tv_sec || (diff.tv_sec == t1.tv_sec && diff.tv_usec < t1.tv_usec)) { + t2 = diff; + } + } + if (select(max_fd, &rfds, 0, 0, &t2) == -1) { + PCAP_THREAD_SET_ERRBUF(pcap_thread, "select()"); + pcap_thread->running = 0; + return PCAP_THREAD_ERRNO; + } + + run = 0; + for (pcaplist = pcap_thread->pcaplist; pcaplist; pcaplist = pcaplist->next) { + int packets; + + if (!pcaplist->running) { + continue; + } else { + run = 1; + } + + packets = pcap_dispatch(pcaplist->pcap, -1, _callback2, (u_char*)pcaplist); + if (packets == PCAP_ERROR) { + pcap_thread->status = -1; + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_dispatch()"); + pcap_thread->running = 0; + return PCAP_THREAD_EPCAP; + } + if (pcaplist->is_offline && !packets) { + pcaplist->running = 0; + } + } + } + + pcap_thread->running = 0; + } + + return PCAP_THREAD_OK; +} + +int pcap_thread_next(pcap_thread_t* pcap_thread) +{ + const u_char* pkt; + struct pcap_pkthdr pkthdr; + + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (!pcap_thread->callback && !pcap_thread->use_layers) { + return PCAP_THREAD_NOCALLBACK; + } + if (pcap_thread->use_layers + && !(pcap_thread->callback_linux_sll + || pcap_thread->callback_ether + || pcap_thread->callback_null + || pcap_thread->callback_loop + || pcap_thread->callback_ieee802 + || pcap_thread->callback_gre + || pcap_thread->callback_ip + || pcap_thread->callback_ipv4 + || pcap_thread->callback_ipv6 + || pcap_thread->callback_icmp + || pcap_thread->callback_icmpv6 + || pcap_thread->callback_udp + || pcap_thread->callback_tcp)) { + return PCAP_THREAD_NOCALLBACK; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + if (!pcap_thread->pcaplist) { + return PCAP_THREAD_NOPCAPS; + } + + if (pcap_thread->errbuf[0]) { + memset(pcap_thread->errbuf, 0, sizeof(pcap_thread->errbuf)); + } + pcap_thread->status = 0; + + if (!pcap_thread->step) { + pcap_thread->step = pcap_thread->pcaplist; + } + if (!pcap_thread->step) { + return PCAP_THREAD_OK; + } + + pcap_thread->step->pcap_thread = pcap_thread; + if (pcap_thread->callback_ipv4_frag.new && !pcap_thread->step->have_ipv4_frag_ctx) { + pcap_thread->step->ipv4_frag_ctx = pcap_thread->callback_ipv4_frag.new(pcap_thread->callback_ipv4_frag.conf, pcap_thread->step->user); + pcap_thread->step->have_ipv4_frag_ctx = 1; + } + if (pcap_thread->callback_ipv6_frag.new && !pcap_thread->step->have_ipv6_frag_ctx) { + pcap_thread->step->ipv6_frag_ctx = pcap_thread->callback_ipv6_frag.new(pcap_thread->callback_ipv6_frag.conf, pcap_thread->step->user); + pcap_thread->step->have_ipv6_frag_ctx = 1; + } + + if (!(pkt = pcap_next(pcap_thread->step->pcap, &pkthdr))) { + pcap_thread->status = -1; + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_next()"); + return PCAP_THREAD_EPCAP; + } + if (pcap_thread->callback) { + pcap_thread->callback(pcap_thread->step->user, &pkthdr, pkt, pcap_thread->step->name, pcap_datalink(pcap_thread->step->pcap)); + } else { + pcap_thread_callback((void*)pcap_thread->step, &pkthdr, pkt, pcap_thread->step->name, pcap_datalink(pcap_thread->step->pcap)); + } + pcap_thread->step = pcap_thread->step->next; + + return PCAP_THREAD_OK; +} + +int pcap_thread_next_reset(pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (pcap_thread->running) { + return PCAP_THREAD_ERUNNING; + } + if (!pcap_thread->pcaplist) { + return PCAP_THREAD_NOPCAPS; + } + + pcap_thread->step = 0; + + return PCAP_THREAD_OK; +} + +int pcap_thread_stop(pcap_thread_t* pcap_thread) +{ + pcap_thread_pcaplist_t* pcaplist; + + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (!pcap_thread->pcaplist) { + return PCAP_THREAD_NOPCAPS; + } + + for (pcaplist = pcap_thread->pcaplist; pcaplist; pcaplist = pcaplist->next) { + pcaplist->running = 0; + pcap_breakloop(pcaplist->pcap); + } + pcap_thread->running = 0; + pcap_thread->was_stopped = 1; + +#ifdef HAVE_PTHREAD + pthread_cond_broadcast(&(pcap_thread->have_packets)); + pthread_cond_broadcast(&(pcap_thread->can_write)); +#endif + + return PCAP_THREAD_OK; +} + +/* + * Stats + */ + +int pcap_thread_stats(pcap_thread_t* pcap_thread, pcap_thread_stats_callback_t callback, u_char* user) +{ + pcap_thread_pcaplist_t* pcaplist; + struct pcap_stat stats; + + if (!pcap_thread) { + return PCAP_THREAD_EINVAL; + } + if (!callback) { + return PCAP_THREAD_NOCALLBACK; + } + if (!pcap_thread->pcaplist) { + return PCAP_THREAD_NOPCAPS; + } + + if (pcap_thread->errbuf[0]) { + memset(pcap_thread->errbuf, 0, sizeof(pcap_thread->errbuf)); + } + pcap_thread->status = 0; + + for (pcaplist = pcap_thread->pcaplist; pcaplist; pcaplist = pcaplist->next) { + if (pcaplist->is_offline) + continue; + if ((pcap_thread->status = pcap_stats(pcaplist->pcap, &stats))) { + PCAP_THREAD_SET_ERRBUF(pcap_thread, "pcap_stats()"); + return PCAP_THREAD_EPCAP; + } + callback(user, &stats, pcaplist->name, pcap_datalink(pcaplist->pcap)); + } + + return PCAP_THREAD_OK; +} + +/* + * Error handling + */ + +int pcap_thread_status(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return 0; + } + + return pcap_thread->status; +} + +const char* pcap_thread_errbuf(const pcap_thread_t* pcap_thread) +{ + if (!pcap_thread) { + return 0; + } + + return pcap_thread->errbuf; +} + +const char* pcap_thread_strerr(int error) +{ + switch (error) { + case PCAP_THREAD_OK: + return 0; + case PCAP_THREAD_EPCAP: + return PCAP_THREAD_EPCAP_STR; + case PCAP_THREAD_ENOMEM: + return PCAP_THREAD_ENOMEM_STR; + case PCAP_THREAD_ENOMON: + return PCAP_THREAD_ENOMON_STR; + case PCAP_THREAD_ENODIR: + return PCAP_THREAD_ENODIR_STR; + case PCAP_THREAD_EINVAL: + return PCAP_THREAD_EINVAL_STR; + case PCAP_THREAD_EWOULDBLOCK: + return PCAP_THREAD_EWOULDBLOCK_STR; + case PCAP_THREAD_NOPCAPS: + return PCAP_THREAD_NOPCAPS_STR; + case PCAP_THREAD_NOCALLBACK: + return PCAP_THREAD_NOCALLBACK_STR; + case PCAP_THREAD_ERRNO: + return PCAP_THREAD_ERRNO_STR; + case PCAP_THREAD_NOYIELD: + return PCAP_THREAD_NOYIELD_STR; + case PCAP_THREAD_EOBSOLETE: + return PCAP_THREAD_EOBSOLETE_STR; + case PCAP_THREAD_ERUNNING: + return PCAP_THREAD_ERUNNING_STR; + case PCAP_THREAD_ENOPCAPLIST: + return PCAP_THREAD_ENOPCAPLIST_STR; + case PCAP_THREAD_ELAYERCB: + return PCAP_THREAD_ELAYERCB_STR; + } + return "UNKNOWN"; +} diff --git a/src/pcap-thread/pcap_thread.h b/src/pcap-thread/pcap_thread.h new file mode 100644 index 0000000..ec4b1a0 --- /dev/null +++ b/src/pcap-thread/pcap_thread.h @@ -0,0 +1,644 @@ +/* + * Author Jerry Lundström <jerry@dns-oarc.net> + * Copyright (c) 2016-2023, OARC, Inc. + * All rights reserved. + * + * 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __pcap_thread_h +#define __pcap_thread_h + +#ifdef HAVE_PTHREAD +#include <pthread.h> +#endif +#include <pcap/pcap.h> +#include <sys/socket.h> +#ifdef TIME_WITH_SYS_TIME +#include <sys/time.h> +#include <time.h> +#else +#ifdef HAVE_SYS_TIME_H +#include <sys/time.h> +#else +#include <time.h> +#endif +#endif +#include <sys/types.h> +#include <netinet/in.h> +#include <net/if_arp.h> +#include <netinet/if_ether.h> +#include <netinet/ip.h> +#include <netinet/ip6.h> +#ifdef HAVE_ENDIAN_H +#include <endian.h> +#endif +#ifdef HAVE_SYS_ENDIAN_H +#include <sys/endian.h> +#endif +#ifdef HAVE_MACHINE_ENDIAN_H +#include <machine/endian.h> +#endif + +#ifndef __BYTE_ORDER +#if defined(BYTE_ORDER) +#define __BYTE_ORDER BYTE_ORDER +#elif defined(_BYTE_ORDER) +#define __BYTE_ORDER _BYTE_ORDER +#else +#error "No endian byte order define, please fix" +#endif +#endif +#ifndef __LITTLE_ENDIAN +#if defined(LITTLE_ENDIAN) +#define __LITTLE_ENDIAN LITTLE_ENDIAN +#elif defined(_LITTLE_ENDIAN) +#define __LITTLE_ENDIAN _LITTLE_ENDIAN +#else +#error "No little endian define, please fix" +#endif +#endif +#ifndef __BIG_ENDIAN +#if defined(BIG_ENDIAN) +#define __BIG_ENDIAN BIG_ENDIAN +#elif defined(_BIG_ENDIAN) +#define __BIG_ENDIAN _BIG_ENDIAN +#else +#error "No big endian define, please fix" +#endif +#endif + +#ifndef PCAP_NETMASK_UNKNOWN +#define PCAP_NETMASK_UNKNOWN 0xffffffff +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* clang-format off */ + +#define PCAP_THREAD_VERSION_STR "4.0.1" +#define PCAP_THREAD_VERSION_MAJOR 4 +#define PCAP_THREAD_VERSION_MINOR 0 +#define PCAP_THREAD_VERSION_PATCH 1 + +#define PCAP_THREAD_DEFAULT_TIMEOUT 1000 +#define PCAP_THREAD_DEFAULT_QUEUE_SIZE 64 +#define PCAP_THREAD_DEFAULT_QUEUE_MODE PCAP_THREAD_QUEUE_MODE_COND +#define PCAP_THREAD_DEFAULT_ACTIVATE_MODE PCAP_THREAD_ACTIVATE_MODE_IMMEDIATE + +#define PCAP_THREAD_OK 0 +#define PCAP_THREAD_EPCAP 1 +#define PCAP_THREAD_ENOMEM 2 +#define PCAP_THREAD_ENOMON 3 +#define PCAP_THREAD_ENODIR 4 +#define PCAP_THREAD_EINVAL 5 +#define PCAP_THREAD_EWOULDBLOCK 6 +#define PCAP_THREAD_NOPCAPS 7 +#define PCAP_THREAD_NOCALLBACK 8 +#define PCAP_THREAD_ERRNO 9 +#define PCAP_THREAD_NOYIELD 10 +#define PCAP_THREAD_EOBSOLETE 11 +#define PCAP_THREAD_ERUNNING 12 +#define PCAP_THREAD_ENOPCAPLIST 13 +#define PCAP_THREAD_ELAYERCB 14 + +#define PCAP_THREAD_EPCAP_STR "libpcap error" +#define PCAP_THREAD_ENOMEM_STR "out of memory" +#define PCAP_THREAD_ENOMON_STR "monitor mode requested but not supported" +#define PCAP_THREAD_ENODIR_STR "direction specified but not supported" +#define PCAP_THREAD_EINVAL_STR "invalid argument" +#define PCAP_THREAD_EWOULDBLOCK_STR "nonblocking pcap can not be added" +#define PCAP_THREAD_NOPCAPS_STR "nothing to capture on" +#define PCAP_THREAD_NOCALLBACK_STR "no callback set" +#define PCAP_THREAD_ERRNO_STR "system error, check errno" +#define PCAP_THREAD_NOYIELD_STR "queue more yield requested but not supported" +#define PCAP_THREAD_EOBSOLETE_STR "obsolete function or feature" +#define PCAP_THREAD_ERUNNING_STR "pcap thread are running, can not complete task" +#define PCAP_THREAD_ENOPCAPLIST_STR "no internal reference to the pcap that captured the packet" +#define PCAP_THREAD_ELAYERCB_STR "layer callback already set in lower or higher segment" + +/* clang-format on */ + +struct pcap_thread_linux_sll { + uint16_t packet_type; + uint16_t arp_hardware; + uint16_t link_layer_address_length; + uint8_t link_layer_address[8]; + uint16_t ether_type; +}; +struct pcap_thread_null_hdr { + uint32_t family; +}; +struct pcap_thread_loop_hdr { + uint32_t family; +}; +struct pcap_thread_ieee802_hdr { + uint16_t tpid; + unsigned short pcp : 3; + unsigned short dei : 1; + unsigned short vid : 12; + uint16_t ether_type; +}; +struct pcap_thread_gre_hdr { + uint16_t gre_flags; + uint16_t ether_type; +}; +struct pcap_thread_gre { + uint16_t checksum; + uint16_t key; + uint16_t sequence; +}; +typedef enum pcap_thread_packet_state pcap_thread_packet_state_t; +enum pcap_thread_packet_state { + PCAP_THREAD_PACKET_OK = 0, + PCAP_THREAD_PACKET_INVALID, + PCAP_THREAD_PACKET_UNSUPPORTED, + PCAP_THREAD_PACKET_UNPROCESSED, + PCAP_THREAD_PACKET_INVALID_ETHER, + PCAP_THREAD_PACKET_INVALID_LINUX_SLL, + PCAP_THREAD_PACKET_INVALID_NULL, + PCAP_THREAD_PACKET_INVALID_LOOP, + PCAP_THREAD_PACKET_INVALID_IEEE802, + PCAP_THREAD_PACKET_INVALID_GRE, + PCAP_THREAD_PACKET_INVALID_IP, + PCAP_THREAD_PACKET_INVALID_IPV4, + PCAP_THREAD_PACKET_INVALID_IPV6, + PCAP_THREAD_PACKET_INVALID_IPV6HDR, + PCAP_THREAD_PACKET_INVALID_ICMP, + PCAP_THREAD_PACKET_INVALID_ICMPV6, + PCAP_THREAD_PACKET_INVALID_UDP, + PCAP_THREAD_PACKET_INVALID_TCP, + PCAP_THREAD_PACKET_IS_FRAGMENT, + PCAP_THREAD_PACKET_INVALID_FRAGMENT, + PCAP_THREAD_PACKET_ENOMEM, + PCAP_THREAD_PACKET_EMUTEX, + PCAP_THREAD_PACKET_FRAGMENTED_GREHDR, + PCAP_THREAD_PACKET_FRAGMENTED_ICMPHDR, + PCAP_THREAD_PACKET_FRAGMENTED_ICMPV6HDR, + PCAP_THREAD_PACKET_FRAGMENTED_UDPHDR, + PCAP_THREAD_PACKET_FRAGMENTED_TCPHDR +}; + +typedef struct pcap_thread_packet pcap_thread_packet_t; +struct pcap_thread_packet { + unsigned short have_prevpkt : 1; + unsigned short have_pkthdr : 1; + unsigned short have_linux_sll : 1; + unsigned short have_ethhdr : 1; + unsigned short have_nullhdr : 1; + unsigned short have_loophdr : 1; + unsigned short have_ieee802hdr : 1; + unsigned short have_grehdr : 1; + unsigned short have_gre : 1; + unsigned short have_iphdr : 1; + unsigned short have_ip6hdr : 1; + unsigned short have_ip6frag : 1; + unsigned short have_ip6rtdst : 1; + unsigned short have_icmphdr : 1; + unsigned short have_icmpv6hdr : 1; + unsigned short have_udphdr : 1; + unsigned short have_tcphdr : 1; + unsigned short have_tcpopts : 1; + unsigned short have_ippadding : 1; + unsigned short have_ip6padding : 1; + + const char* name; + int dlt; + pcap_thread_packet_t* prevpkt; + struct pcap_pkthdr pkthdr; + struct pcap_thread_linux_sll linux_sll; + struct ether_header ethhdr; + struct pcap_thread_null_hdr nullhdr; + struct pcap_thread_loop_hdr loophdr; + struct pcap_thread_ieee802_hdr ieee802hdr; + struct pcap_thread_gre_hdr grehdr; + struct pcap_thread_gre gre; + struct ip iphdr; + struct ip6_hdr ip6hdr; + struct ip6_frag ip6frag; + uint8_t ip6frag_payload; + struct in6_addr ip6rtdst; + struct { + u_int8_t type; + u_int8_t code; + u_int16_t checksum; + } icmphdr; + struct { + u_int8_t icmp6_type; + u_int8_t icmp6_code; + u_int16_t icmp6_cksum; + } icmpv6hdr; + struct { + union { + struct { + u_int16_t uh_sport; + u_int16_t uh_dport; + u_int16_t uh_ulen; + u_int16_t uh_sum; + }; + struct { + u_int16_t source; + u_int16_t dest; + u_int16_t len; + u_int16_t check; + }; + }; + } udphdr; + struct { + union { + struct { + u_int16_t th_sport; + u_int16_t th_dport; + u_int32_t th_seq; + u_int32_t th_ack; +#if __BYTE_ORDER == __LITTLE_ENDIAN + u_int8_t th_x2 : 4; + u_int8_t th_off : 4; +#endif +#if __BYTE_ORDER == __BIG_ENDIAN + u_int8_t th_off : 4; + u_int8_t th_x2 : 4; +#endif + u_int8_t th_flags; + u_int16_t th_win; + u_int16_t th_sum; + u_int16_t th_urp; + }; + struct { + u_int16_t source; + u_int16_t dest; + u_int32_t seq; + u_int32_t ack_seq; +#if __BYTE_ORDER == __LITTLE_ENDIAN + u_int16_t res1 : 4; + u_int16_t doff : 4; + u_int16_t fin : 1; + u_int16_t syn : 1; + u_int16_t rst : 1; + u_int16_t psh : 1; + u_int16_t ack : 1; + u_int16_t urg : 1; + u_int16_t res2 : 2; +#elif __BYTE_ORDER == __BIG_ENDIAN + u_int16_t doff : 4; + u_int16_t res1 : 4; + u_int16_t res2 : 2; + u_int16_t urg : 1; + u_int16_t ack : 1; + u_int16_t psh : 1; + u_int16_t rst : 1; + u_int16_t syn : 1; + u_int16_t fin : 1; +#endif + u_int16_t window; + u_int16_t check; + u_int16_t urg_ptr; + }; + }; + } tcphdr; + u_int8_t tcpopts[64]; + size_t tcpopts_len; + + size_t ippadding; + size_t ip6padding; + + pcap_thread_packet_state_t state; +}; + +typedef enum pcap_thread_queue_mode pcap_thread_queue_mode_t; +typedef struct pcap_thread pcap_thread_t; +typedef void (*pcap_thread_callback_t)(u_char* user, const struct pcap_pkthdr* pkthdr, const u_char* pkt, const char* name, int dlt); +typedef void (*pcap_thread_layer_callback_t)(u_char* user, const pcap_thread_packet_t* packet, const u_char* payload, size_t length); +typedef void (*pcap_thread_stats_callback_t)(u_char* user, const struct pcap_stat* stats, const char* name, int dlt); +#ifndef HAVE_PCAP_DIRECTION_T +typedef int pcap_direction_t; +#endif +typedef struct pcap_thread_pcaplist pcap_thread_pcaplist_t; +typedef enum pcap_thread_activate_mode pcap_thread_activate_mode_t; + +enum pcap_thread_queue_mode { + PCAP_THREAD_QUEUE_MODE_COND, + PCAP_THREAD_QUEUE_MODE_WAIT, + PCAP_THREAD_QUEUE_MODE_YIELD, + PCAP_THREAD_QUEUE_MODE_DROP, + PCAP_THREAD_QUEUE_MODE_DIRECT +}; + +enum pcap_thread_activate_mode { + PCAP_THREAD_ACTIVATE_MODE_IMMEDIATE, + PCAP_THREAD_ACTIVATE_MODE_DELAYED +}; + +#ifdef HAVE_PCAP_DIRECTION_T +#define PCAP_THREAD_T_INIT_DIRECTION_T 0, +#else +#define PCAP_THREAD_T_INIT_DIRECTION_T +#endif + +#ifdef HAVE_PTHREAD +#define PCAP_THREAD_T_INIT_QUEUE PTHREAD_COND_INITIALIZER, PTHREAD_COND_INITIALIZER, PTHREAD_MUTEX_INITIALIZER, \ + 0, 0, 0, 0, 0, 0, +#else +#define PCAP_THREAD_T_INIT_QUEUE +#endif + +#ifdef PCAP_TSTAMP_PRECISION_MICRO +#define PCAP_THREAD_T_INIT_PRECISION PCAP_TSTAMP_PRECISION_MICRO +#else +#define PCAP_THREAD_T_INIT_PRECISION 0 +#endif + +typedef void* (*pcap_thread_layer_callback_frag_new_t)(void* conf, u_char* user); +typedef void (*pcap_thread_layer_callback_frag_free_t)(void* ctx); +typedef pcap_thread_packet_state_t (*pcap_thread_layer_callback_frag_reassemble_t)(void* ctx, const pcap_thread_packet_t* packet, const u_char* payload, size_t length, pcap_thread_packet_t** whole_packet, const u_char** whole_payload, size_t* whole_length); +typedef void (*pcap_thread_layer_callback_frag_release_t)(void* ctx, const pcap_thread_packet_t* packet, const u_char* payload, size_t length); + +/* clang-format off */ +#define PCAP_THREAD_LAYER_CALLBACK_FRAG_T_INIT { \ + 0, 0, 0, 0, 0, \ +} +/* clang-format on */ + +typedef struct pcap_thread_layer_callback_frag pcap_thread_layer_callback_frag_t; +struct pcap_thread_layer_callback_frag { + void* conf; + pcap_thread_layer_callback_frag_new_t new; + pcap_thread_layer_callback_frag_free_t free; + pcap_thread_layer_callback_frag_reassemble_t reassemble; + pcap_thread_layer_callback_frag_release_t release; +}; + +/* clang-format off */ +#define PCAP_THREAD_T_INIT { \ + 0, 0, 0, 0, \ + 0, 1, 0, PCAP_THREAD_DEFAULT_QUEUE_MODE, PCAP_THREAD_DEFAULT_QUEUE_SIZE, \ + PCAP_THREAD_T_INIT_QUEUE \ + 0, 0, 0, 0, PCAP_THREAD_DEFAULT_TIMEOUT, \ + 0, 0, PCAP_THREAD_T_INIT_PRECISION, 0, \ + PCAP_THREAD_T_INIT_DIRECTION_T \ + 0, 0, 0, 1, PCAP_NETMASK_UNKNOWN, \ + 0, 0, \ + 0, "", 0, 0, \ + { 0, 0 }, { 0, 0 }, \ + PCAP_THREAD_DEFAULT_ACTIVATE_MODE, \ + 0, 0, 0, 0, 0, 0, 0, 0, PCAP_THREAD_LAYER_CALLBACK_FRAG_T_INIT, 0, PCAP_THREAD_LAYER_CALLBACK_FRAG_T_INIT, 0, 0, 0, 0, \ + 0 \ +} +/* clang-format on */ + +struct pcap_thread { + unsigned short have_timestamp_precision : 1; + unsigned short have_timestamp_type : 1; + unsigned short have_direction : 1; + unsigned short was_stopped : 1; + + int running; + int use_threads; + int use_layers; + pcap_thread_queue_mode_t queue_mode; + size_t queue_size; + +#ifdef HAVE_PTHREAD + pthread_cond_t have_packets; + pthread_cond_t can_write; + pthread_mutex_t mutex; + + struct pcap_pkthdr* pkthdr; + u_char* pkt; + pcap_thread_pcaplist_t** pcaplist_pkt; + size_t read_pos; + size_t write_pos; + size_t pkts; +#endif + + int snapshot; + int snaplen; + int promiscuous; + int monitor; + int timeout; + + int buffer_size; + int timestamp_type; + int timestamp_precision; + int immediate_mode; + +#ifdef HAVE_PCAP_DIRECTION_T + pcap_direction_t direction; +#endif + + char* filter; + size_t filter_len; + int filter_errno; + int filter_optimize; + bpf_u_int32 filter_netmask; + + pcap_thread_callback_t callback; + pcap_thread_callback_t dropback; + + int status; + char errbuf[PCAP_ERRBUF_SIZE]; + pcap_thread_pcaplist_t* pcaplist; + pcap_thread_pcaplist_t* step; + + struct timeval timedrun; + struct timeval timedrun_to; + + pcap_thread_activate_mode_t activate_mode; + + pcap_thread_layer_callback_t callback_linux_sll; + pcap_thread_layer_callback_t callback_ether; + pcap_thread_layer_callback_t callback_null; + pcap_thread_layer_callback_t callback_loop; + pcap_thread_layer_callback_t callback_ieee802; + pcap_thread_layer_callback_t callback_gre; + pcap_thread_layer_callback_t callback_ip; + pcap_thread_layer_callback_t callback_ipv4; + pcap_thread_layer_callback_frag_t callback_ipv4_frag; + pcap_thread_layer_callback_t callback_ipv6; + pcap_thread_layer_callback_frag_t callback_ipv6_frag; + pcap_thread_layer_callback_t callback_icmp; + pcap_thread_layer_callback_t callback_icmpv6; + pcap_thread_layer_callback_t callback_udp; + pcap_thread_layer_callback_t callback_tcp; + + pcap_thread_layer_callback_t callback_invalid; +}; + +#define PCAP_THREAD_SET_ERRBUF(x, y) strncpy(x->errbuf, y, sizeof(x->errbuf) - 1) + +#ifdef HAVE_PTHREAD +#define PCAP_THREAD_PCAPLIST_T_INIT_THREAD 0, +#else +#define PCAP_THREAD_PCAPLIST_T_INIT_THREAD +#endif + +/* clang-format off */ +#define PCAP_THREAD_PCAPLIST_T_INIT { \ + 0, 0, 0, \ + 0, 0, 0, 0, 0, 0, 0, 0, \ + 0, \ + PCAP_THREAD_PCAPLIST_T_INIT_THREAD \ + { 0, 0 }, \ + 0, \ + 0, { 0, 0 } \ +} +/* clang-format on */ + +struct pcap_thread_pcaplist { + unsigned short have_bpf : 1; + unsigned short have_ipv4_frag_ctx : 1; + unsigned short have_ipv6_frag_ctx : 1; + + pcap_thread_pcaplist_t* next; + char* name; + pcap_t* pcap; + void* user; + int running; + int is_offline; + void* ipv4_frag_ctx; + void* ipv6_frag_ctx; + + pcap_thread_t* pcap_thread; + +#ifdef HAVE_PTHREAD + pthread_t thread; +#endif + + struct bpf_program bpf; + + pcap_thread_callback_t layer_callback; + + int timedrun; + struct timespec end; +}; + +const char* pcap_thread_version_str(void); + +int pcap_thread_version_major(void); +int pcap_thread_version_minor(void); +int pcap_thread_version_patch(void); + +pcap_thread_t* pcap_thread_create(void); +void pcap_thread_free(pcap_thread_t* pcap_thread); + +int pcap_thread_use_threads(const pcap_thread_t* pcap_thread); +int pcap_thread_set_use_threads(pcap_thread_t* pcap_thread, const int use_threads); +int pcap_thread_use_layers(const pcap_thread_t* pcap_thread); +int pcap_thread_set_use_layers(pcap_thread_t* pcap_thread, const int use_layers); +pcap_thread_queue_mode_t pcap_thread_queue_mode(const pcap_thread_t* pcap_thread); +int pcap_thread_set_queue_mode(pcap_thread_t* pcap_thread, const pcap_thread_queue_mode_t queue_mode); +struct timeval pcap_thread_queue_wait(const pcap_thread_t* pcap_thread); +int pcap_thread_set_queue_wait(pcap_thread_t* pcap_thread, const struct timeval queue_wait); +pcap_thread_queue_mode_t pcap_thread_callback_queue_mode(const pcap_thread_t* pcap_thread); +int pcap_thread_set_callback_queue_mode(pcap_thread_t* pcap_thread, const pcap_thread_queue_mode_t callback_queue_mode); +struct timeval pcap_thread_callback_queue_wait(const pcap_thread_t* pcap_thread); +int pcap_thread_set_callback_queue_wait(pcap_thread_t* pcap_thread, const struct timeval callback_queue_wait); +int pcap_thread_snapshot(const pcap_thread_t* pcap_thread); +int pcap_thread_snaplen(const pcap_thread_t* pcap_thread); +int pcap_thread_set_snaplen(pcap_thread_t* pcap_thread, const int snaplen); +int pcap_thread_promiscuous(const pcap_thread_t* pcap_thread); +int pcap_thread_set_promiscuous(pcap_thread_t* pcap_thread, const int promiscuous); +int pcap_thread_monitor(const pcap_thread_t* pcap_thread); +int pcap_thread_set_monitor(pcap_thread_t* pcap_thread, const int monitor); +int pcap_thread_timeout(const pcap_thread_t* pcap_thread); +int pcap_thread_set_timeout(pcap_thread_t* pcap_thread, const int timeout); +int pcap_thread_buffer_size(const pcap_thread_t* pcap_thread); +int pcap_thread_set_buffer_size(pcap_thread_t* pcap_thread, const int buffer_size); +int pcap_thread_timestamp_type(const pcap_thread_t* pcap_thread); +int pcap_thread_set_timestamp_type(pcap_thread_t* pcap_thread, const int timestamp_type); +int pcap_thread_timestamp_precision(const pcap_thread_t* pcap_thread); +int pcap_thread_set_timestamp_precision(pcap_thread_t* pcap_thread, const int timestamp_precision); +int pcap_thread_immediate_mode(const pcap_thread_t* pcap_thread); +int pcap_thread_set_immediate_mode(pcap_thread_t* pcap_thread, const int immediate_mode); +pcap_direction_t pcap_thread_direction(const pcap_thread_t* pcap_thread); +int pcap_thread_set_direction(pcap_thread_t* pcap_thread, const pcap_direction_t direction); +const char* pcap_thread_filter(const pcap_thread_t* pcap_thread); +int pcap_thread_set_filter(pcap_thread_t* pcap_thread, const char* filter, const size_t filter_len); +int pcap_thread_clear_filter(pcap_thread_t* pcap_thread); +int pcap_thread_filter_errno(const pcap_thread_t* pcap_thread); +int pcap_thread_filter_optimize(const pcap_thread_t* pcap_thread); +int pcap_thread_set_filter_optimize(pcap_thread_t* pcap_thread, const int filter_optimize); +bpf_u_int32 pcap_thread_filter_netmask(const pcap_thread_t* pcap_thread); +int pcap_thread_set_filter_netmask(pcap_thread_t* pcap_thread, const bpf_u_int32 filter_netmask); +struct timeval pcap_thread_timedrun(const pcap_thread_t* pcap_thread); +int pcap_thread_set_timedrun(pcap_thread_t* pcap_thread, const struct timeval timedrun); +struct timeval pcap_thread_timedrun_to(const pcap_thread_t* pcap_thread); +int pcap_thread_set_timedrun_to(pcap_thread_t* pcap_thread, const struct timeval timedrun_to); +pcap_thread_activate_mode_t pcap_thread_activate_mode(const pcap_thread_t* pcap_thread); +int pcap_thread_set_activate_mode(pcap_thread_t* pcap_thread, const pcap_thread_activate_mode_t activate_mode); +int pcap_thread_was_stopped(const pcap_thread_t* pcap_thread); + +size_t pcap_thread_queue_size(const pcap_thread_t* pcap_thread); +int pcap_thread_set_queue_size(pcap_thread_t* pcap_thread, const size_t queue_size); + +int pcap_thread_set_callback(pcap_thread_t* pcap_thread, pcap_thread_callback_t callback); +int pcap_thread_set_dropback(pcap_thread_t* pcap_thread, pcap_thread_callback_t dropback); + +int pcap_thread_set_callback_linux_sll(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_linux_sll); +int pcap_thread_set_callback_ether(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_ether); +int pcap_thread_set_callback_null(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_null); +int pcap_thread_set_callback_loop(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_loop); +int pcap_thread_set_callback_ieee802(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_ieee802); +int pcap_thread_set_callback_gre(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_gre); +int pcap_thread_set_callback_ip(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_ip); +int pcap_thread_set_callback_ipv4(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_ipv4); +int pcap_thread_set_callback_ipv4_frag(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_frag_t callback_ipv4_frag); +int pcap_thread_set_callback_ipv6(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_ipv6); +int pcap_thread_set_callback_ipv6_frag(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_frag_t callback_ipv6_frag); +int pcap_thread_set_callback_icmp(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_icmp); +int pcap_thread_set_callback_icmpv6(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_icmpv6); +int pcap_thread_set_callback_udp(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_udp); +int pcap_thread_set_callback_tcp(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_tcp); +int pcap_thread_set_callback_invalid(pcap_thread_t* pcap_thread, pcap_thread_layer_callback_t callback_tcp); + +int pcap_thread_open(pcap_thread_t* pcap_thread, const char* device, void* user); +int pcap_thread_open_offline(pcap_thread_t* pcap_thread, const char* file, void* user); +int pcap_thread_add(pcap_thread_t* pcap_thread, const char* name, pcap_t* pcap, void* user); +int pcap_thread_activate(pcap_thread_t* pcap_thread); +int pcap_thread_close(pcap_thread_t* pcap_thread); + +int pcap_thread_run(pcap_thread_t* pcap_thread); +int pcap_thread_next(pcap_thread_t* pcap_thread); +int pcap_thread_next_reset(pcap_thread_t* pcap_thread); +int pcap_thread_stop(pcap_thread_t* pcap_thread); + +int pcap_thread_stats(pcap_thread_t* pcap_thread, pcap_thread_stats_callback_t callback, u_char* user); + +int pcap_thread_status(const pcap_thread_t* pcap_thread); +const char* pcap_thread_errbuf(const pcap_thread_t* pcap_thread); +const char* pcap_thread_strerr(int error); + +#ifdef __cplusplus +} +#endif + +#endif /* __pcap_thread_h */ diff --git a/src/pcap-thread/pcap_thread_ext_frag.c b/src/pcap-thread/pcap_thread_ext_frag.c new file mode 100644 index 0000000..7c2db71 --- /dev/null +++ b/src/pcap-thread/pcap_thread_ext_frag.c @@ -0,0 +1,1013 @@ +/* + * Author Jerry Lundström <jerry@dns-oarc.net> + * Copyright (c) 2016-2023, OARC, Inc. + * All rights reserved. + * + * 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" + +#include "pcap_thread_ext_frag.h" + +#include <stdlib.h> +#include <string.h> +#ifdef HAVE_PTHREAD +#include <pthread.h> +#endif + +#ifndef PCAP_THREAD_EXT_FRAG_TRACE +#define PCAP_THREAD_EXT_FRAG_TRACE 0 +#endif + +/* + * Forward declares for callbacks + */ + +static void* pcap_thread_layer_callback_frag_new(void* conf, u_char* user); +static void pcap_thread_layer_callback_frag_free(void* _ctx); +static pcap_thread_packet_state_t pcap_thread_layer_callback_frag_reassemble(void* _ctx, const pcap_thread_packet_t* packet, const u_char* payload, size_t length, pcap_thread_packet_t** whole_packet, const u_char** whole_payload, size_t* whole_length); +static void pcap_thread_layer_callback_frag_release(void* _ctx, const pcap_thread_packet_t* packet, const u_char* payload, size_t length); + +/* + * Create/Free + */ + +static pcap_thread_ext_frag_conf_t _conf_defaults = PCAP_THREAD_EXT_FRAG_CONF_T_INIT; + +pcap_thread_ext_frag_conf_t* pcap_thread_ext_frag_conf_new(void) +{ + pcap_thread_ext_frag_conf_t* conf = calloc(1, sizeof(pcap_thread_ext_frag_conf_t)); + if (conf) { + memcpy(conf, &_conf_defaults, sizeof(pcap_thread_ext_frag_conf_t)); + } + + return conf; +} + +void pcap_thread_ext_frag_conf_free(pcap_thread_ext_frag_conf_t* conf) +{ + if (conf) { + free(conf); + } +} + +/* + * Get/Set + */ + +int pcap_thread_ext_frag_conf_reject_overlap(const pcap_thread_ext_frag_conf_t* conf) +{ + if (!conf) { + return 0; + } + + return conf->reject_overlap; +} + +int pcap_thread_ext_frag_conf_set_reject_overlap(pcap_thread_ext_frag_conf_t* conf, const int reject_overlap) +{ + if (!conf) { + return PCAP_THREAD_EINVAL; + } + + conf->reject_overlap = reject_overlap ? 1 : 0; + + return PCAP_THREAD_OK; +} + +int pcap_thread_ext_frag_conf_check_timeout(const pcap_thread_ext_frag_conf_t* conf) +{ + if (!conf) { + return 0; + } + + return conf->check_timeout; +} + +int pcap_thread_ext_frag_conf_set_check_timeout(pcap_thread_ext_frag_conf_t* conf, const int check_timeout) +{ + if (!conf) { + return PCAP_THREAD_EINVAL; + } + + conf->check_timeout = check_timeout ? 1 : 0; + + return PCAP_THREAD_OK; +} + +pcap_thread_ext_frag_reassemble_mode_t pcap_thread_ext_frag_conf_reassemble_mode(const pcap_thread_ext_frag_conf_t* conf) +{ + if (!conf) { + return PCAP_THREAD_EXT_FRAG_REASSEMBLE_RFC791; + } + + return conf->reassemble_mode; +} + +int pcap_thread_ext_frag_conf_set_reassemble_mode(pcap_thread_ext_frag_conf_t* conf, const pcap_thread_ext_frag_reassemble_mode_t reassemble_mode) +{ + if (!conf) { + return PCAP_THREAD_EINVAL; + } + + switch (reassemble_mode) { + case PCAP_THREAD_EXT_FRAG_REASSEMBLE_RFC791: + case PCAP_THREAD_EXT_FRAG_REASSEMBLE_BSD: + break; + case PCAP_THREAD_EXT_FRAG_REASSEMBLE_RFC815: + /* TODO: Implement */ + default: + return PCAP_THREAD_EINVAL; + } + + conf->reassemble_mode = reassemble_mode; + + return PCAP_THREAD_OK; +} + +size_t pcap_thread_ext_frag_conf_fragments(const pcap_thread_ext_frag_conf_t* conf) +{ + if (!conf) { + return -1; + } + + return conf->fragments; +} + +int pcap_thread_ext_frag_conf_set_fragments(pcap_thread_ext_frag_conf_t* conf, const size_t fragments) +{ + if (!conf) { + return PCAP_THREAD_EINVAL; + } + + conf->fragments = fragments; + + return PCAP_THREAD_OK; +} + +size_t pcap_thread_ext_frag_conf_per_packet(const pcap_thread_ext_frag_conf_t* conf) +{ + if (!conf) { + return -1; + } + + return conf->per_packet; +} + +int pcap_thread_ext_frag_conf_set_per_packet(pcap_thread_ext_frag_conf_t* conf, const size_t per_packet) +{ + if (!conf) { + return PCAP_THREAD_EINVAL; + } + + conf->per_packet = per_packet; + + return PCAP_THREAD_OK; +} + +struct timeval pcap_thread_ext_frag_conf_timeout(const pcap_thread_ext_frag_conf_t* conf) +{ + if (!conf) { + struct timeval ret = { 0, 0 }; + return ret; + } + + return conf->timeout; +} + +int pcap_thread_ext_frag_conf_set_timeout(pcap_thread_ext_frag_conf_t* conf, const struct timeval timeout) +{ + if (!conf) { + return PCAP_THREAD_EINVAL; + } + + conf->timeout = timeout; + + return PCAP_THREAD_OK; +} + +pcap_thread_ext_frag_callback_t pcap_thread_ext_frag_conf_overlap_callback(const pcap_thread_ext_frag_conf_t* conf) +{ + if (!conf) { + return 0; + } + + return conf->overlap_callback; +} + +int pcap_thread_ext_frag_conf_set_overlap_callback(pcap_thread_ext_frag_conf_t* conf, pcap_thread_ext_frag_callback_t overlap_callback) +{ + if (!conf) { + return PCAP_THREAD_EINVAL; + } + + conf->overlap_callback = overlap_callback; + + return PCAP_THREAD_OK; +} + +pcap_thread_ext_frag_callback_t pcap_thread_ext_frag_conf_timeout_callback(const pcap_thread_ext_frag_conf_t* conf) +{ + if (!conf) { + return 0; + } + + return conf->timeout_callback; +} + +int pcap_thread_ext_frag_conf_set_timeout_callback(pcap_thread_ext_frag_conf_t* conf, pcap_thread_ext_frag_callback_t timeout_callback) +{ + if (!conf) { + return PCAP_THREAD_EINVAL; + } + + conf->timeout_callback = timeout_callback; + + return PCAP_THREAD_OK; +} + +/* + * Init + */ + +pcap_thread_layer_callback_frag_t pcap_thread_ext_frag_layer_callback(pcap_thread_ext_frag_conf_t* conf) +{ + pcap_thread_layer_callback_frag_t callback = PCAP_THREAD_LAYER_CALLBACK_FRAG_T_INIT; + + if (conf) { + callback.conf = (void*)conf; + callback.new = pcap_thread_layer_callback_frag_new; + callback.free = pcap_thread_layer_callback_frag_free; + callback.reassemble = pcap_thread_layer_callback_frag_reassemble; + callback.release = pcap_thread_layer_callback_frag_release; + } + + return callback; +} + +/* + * Callbacks + */ + +#if PCAP_THREAD_EXT_FRAG_TRACE +#include <stdio.h> +#define layer_trace(msg) printf("LT %s:%d: " msg "\n", __FILE__, __LINE__) +#define layer_tracef(msg, args...) printf("LT %s:%d: " msg "\n", __FILE__, __LINE__, args) +#else +#define layer_trace(msg) +#define layer_tracef(msg, args...) +#endif + +/* TODO: +typedef struct _hole _hole_t; +struct _hole { + _hole_t* next; + + size_t first, last; +}; +*/ + +#ifdef HAVE_PTHREAD +#define PCAP_THREAD_EXT_FRAG_CTX_T_INIT_MUTEX PTHREAD_MUTEX_INITIALIZER, +#else +#define PCAP_THREAD_EXT_FRAG_CTX_T_INIT_MUTEX +#endif + +/* clang-format off */ +#define PCAP_THREAD_EXT_FRAG_CTX_T_INIT { \ + PCAP_THREAD_EXT_FRAG_CTX_T_INIT_MUTEX \ + PCAP_THREAD_EXT_FRAG_CONF_T_INIT, 0, 0 \ +} +/* clang-format on */ + +typedef struct _ctx _ctx_t; +struct _ctx { +#ifdef HAVE_PTHREAD + pthread_mutex_t mutex; +#endif + pcap_thread_ext_frag_conf_t conf; + pcap_thread_ext_frag_fragments_t* fragments; + size_t num_fragments; +}; + +static _ctx_t _ctx_defaults = PCAP_THREAD_EXT_FRAG_CTX_T_INIT; + +static void* pcap_thread_layer_callback_frag_new(void* conf, u_char* user) +{ + _ctx_t* ctx = calloc(1, sizeof(_ctx_t)); + if (ctx) { + layer_tracef("new ctx %p", ctx); + memcpy(ctx, &_ctx_defaults, sizeof(_ctx_t)); + if (conf) { + memcpy(&(ctx->conf), conf, sizeof(pcap_thread_ext_frag_conf_t)); + } + } + + return ctx; +} + +static void pcap_thread_layer_callback_frag_free(void* _ctx) +{ + _ctx_t* ctx = (_ctx_t*)_ctx; + if (ctx) { + layer_tracef("free ctx %p", ctx); + while (ctx->fragments) { + pcap_thread_ext_frag_fragments_t* frags = ctx->fragments; + ctx->fragments = frags->next; + + while (frags->fragments) { + pcap_thread_ext_frag_fragment_t* frag = frags->fragments; + frags->fragments = frag->next; + + if (frag->payload) { + free(frag->payload); + } + free(frag); + } + + if (frags->payload) { + free(frags->payload); + } + free(frags); + } + } +} + +static pcap_thread_packet_state_t reassemble(_ctx_t* ctx, const pcap_thread_packet_t* packet, pcap_thread_packet_t** whole_packet, const u_char** whole_payload, size_t* whole_length, pcap_thread_ext_frag_fragments_t* frags, pcap_thread_ext_frag_fragment_t* frag) +{ + pcap_thread_ext_frag_fragment_t *f, *f_prev; + int missing_frag = 0; + /* TODO: + int rfc815_seen_no_more_frags = 0; + */ + + if ((frag->offset + frag->length) > frags->length) { + frags->length = frag->offset + frag->length; + } + + layer_tracef("new frag len %lu off %lu mf %d (frags len %lu)", frag->length, frag->offset, frag->flag_more_fragments, frags->length); + + /* Place the fragment in the fragments list */ + switch (ctx->conf.reassemble_mode) { + case PCAP_THREAD_EXT_FRAG_REASSEMBLE_RFC791: + for (f_prev = 0, f = frags->fragments; f; f_prev = f, f = f->next) { + layer_tracef("checking frag %p len %lu off %lu mf %d next %p", f, f->length, f->offset, f->flag_more_fragments, f->next); + + if (f->offset > frag->offset) { + if (f_prev) { + f_prev->next = frag; + } else { + frags->fragments = frag; + } + frag->next = f; + f = frag; + break; + } + if (f_prev && (f_prev->offset + f_prev->length) < f->offset) { + missing_frag = 1; + } + } + if (!f) { + if (f_prev) { + f_prev->next = frag; + if ((f_prev->offset + f_prev->length) < frag->offset) { + missing_frag = 1; + } + } else { + frags->fragments = frag; + } + /* New frag is now last frag */ + f_prev = frag; + } else if (!missing_frag) { + for (; f; f_prev = f, f = f->next) { + layer_tracef("checking frag %p len %lu off %lu mf %d next %p", f, f->length, f->offset, f->flag_more_fragments, f->next); + if (f_prev && (f_prev->offset + f_prev->length) < f->offset) { + missing_frag = 1; + break; + } + } + } + /* + * If first is not offset zero or last have more fragments flag, + * we are missing fragments. + */ + if (!missing_frag && (frags->fragments->offset || (f_prev && f_prev->flag_more_fragments))) { + missing_frag = 1; + } + break; + case PCAP_THREAD_EXT_FRAG_REASSEMBLE_RFC815: + /* TODO: + for (f_prev = 0, f = frags->fragments; f; f_prev = f, f = f->next) { + layer_tracef("checking frag %p len %lu off %lu mf %d next %p", f, f->length, f->offset, f->flag_more_fragments, f->next); + + if (!f->flag_more_fragments) { + rfc815_seen_no_more_frags = 1; + } + } + */ + free(frag->payload); + free(frag); + return PCAP_THREAD_EINVAL; + break; + case PCAP_THREAD_EXT_FRAG_REASSEMBLE_BSD: + for (f_prev = 0, f = frags->fragments; f; f_prev = f, f = f->next) { + layer_tracef("checking frag %p len %lu off %lu mf %d next %p", f, f->length, f->offset, f->flag_more_fragments, f->next); + + if (f->offset > frag->offset) { + if (f_prev) { + f_prev->next = frag; + } else { + frags->fragments = frag; + } + frag->next = f; + f = frag; + break; + } + if (f_prev && (f->offset + f->length) < f_prev->offset) { + missing_frag = 1; + } + } + if (!f) { + if (f_prev) { + f_prev->next = frag; + if ((frag->offset + frag->length) < f_prev->offset) { + missing_frag = 1; + } + } else { + frags->fragments = frag; + } + } else if (!missing_frag) { + for (; f; f_prev = f, f = f->next) { + layer_tracef("checking frag %p len %lu off %lu mf %d next %p", f, f->length, f->offset, f->flag_more_fragments, f->next); + if (f_prev && (f->offset + f->length) < f_prev->offset) { + missing_frag = 1; + break; + } + } + } + /* + * If first (last on list) is not offset zero or last (first on + * list) have more fragments flag, we are missing fragments. + */ + if (!missing_frag && ((f_prev && f_prev->offset) || frags->fragments->flag_more_fragments)) { + missing_frag = 1; + } + break; + } + frags->num_fragments++; + + if (missing_frag) { + layer_trace("need more frags"); + return PCAP_THREAD_PACKET_OK; + } + + if (!frags->length) { + layer_trace("frags complete but no size"); + return PCAP_THREAD_PACKET_INVALID_FRAGMENT; + } + + if (ctx->conf.reject_overlap) { + switch (ctx->conf.reassemble_mode) { + case PCAP_THREAD_EXT_FRAG_REASSEMBLE_RFC791: + for (f_prev = 0, f = frags->fragments; f; f_prev = f, f = f->next) { + layer_tracef("checking frag %p len %lu off %lu mf %d next %p", f, f->length, f->offset, f->flag_more_fragments, f->next); + if (f_prev && (f_prev->offset + f_prev->length) > f->offset) { + layer_trace("overlapping fragment"); + if (ctx->conf.overlap_callback) + ctx->conf.overlap_callback(packet, frag->payload, frag->length, frags); + return PCAP_THREAD_PACKET_INVALID_FRAGMENT; + } + } + break; + case PCAP_THREAD_EXT_FRAG_REASSEMBLE_RFC815: + /* TODO: + */ + break; + case PCAP_THREAD_EXT_FRAG_REASSEMBLE_BSD: + for (f_prev = 0, f = frags->fragments; f; f_prev = f, f = f->next) { + layer_tracef("checking frag %p len %lu off %lu mf %d next %p", f, f->length, f->offset, f->flag_more_fragments, f->next); + if (f_prev && (f->offset + f->length) > f_prev->offset) { + layer_trace("overlapping fragment"); + if (ctx->conf.overlap_callback) + ctx->conf.overlap_callback(packet, frag->payload, frag->length, frags); + return PCAP_THREAD_PACKET_INVALID_FRAGMENT; + } + } + break; + } + } + + /* + * Reassemble packet + */ + if (!(frags->payload = calloc(1, frags->length))) { + layer_trace("nomem frags payload"); + return PCAP_THREAD_PACKET_ENOMEM; + } + for (f = frags->fragments; f; f = f->next) { + memcpy(frags->payload + f->offset, f->payload, f->length); + } + + frags->packet.name = packet->name; + frags->packet.dlt = packet->dlt; + frags->packet.pkthdr = packet->pkthdr; + /* + * We add the total payload length minus current fragment, since it is + * already included, to the pkthdr lengths in order to return correct + * total packet length (header + payload). + */ + frags->packet.pkthdr.len += frags->length - frag->length; + frags->packet.pkthdr.caplen += frags->length - frag->length; + frags->packet.have_pkthdr = packet->have_pkthdr; + + *whole_packet = &(frags->packet); + *whole_payload = frags->payload; + *whole_length = frags->length; + + return PCAP_THREAD_PACKET_OK; +} + +static pcap_thread_packet_state_t reassemble_ipv4(_ctx_t* ctx, const pcap_thread_packet_t* packet, const u_char* payload, size_t length, pcap_thread_packet_t** whole_packet, const u_char** whole_payload, size_t* whole_length) +{ + pcap_thread_ext_frag_fragments_t *frags, *frags_prev; + pcap_thread_ext_frag_fragment_t* frag; + + if (!packet->have_pkthdr) { + layer_trace("no pkthdr"); + return PCAP_THREAD_PACKET_INVALID; + } + + layer_tracef("ipv4 ctx %p", ctx); + + /* Find packet fragments */ + for (frags_prev = 0, frags = ctx->fragments; frags; frags_prev = frags, frags = frags->next) { + if (frags->packet.have_iphdr + && packet->iphdr.ip_id == frags->packet.iphdr.ip_id + && packet->iphdr.ip_p == frags->packet.iphdr.ip_p + && packet->iphdr.ip_src.s_addr == frags->packet.iphdr.ip_src.s_addr + && packet->iphdr.ip_dst.s_addr == frags->packet.iphdr.ip_dst.s_addr) { + + layer_tracef("frags %d found", packet->iphdr.ip_id); + + /* Found it, remove from list */ + if (frags_prev) { + frags_prev->next = frags->next; + } + if (ctx->fragments == frags) { + ctx->fragments = frags->next; + } + frags->next = 0; + break; + } + } + + /* Check if frags is timed out */ + if (ctx->conf.check_timeout && frags) { + struct timeval ts; + + ts = frags->packet.pkthdr.ts; + ts.tv_sec += ctx->conf.timeout.tv_sec; + ts.tv_usec += ctx->conf.timeout.tv_usec; + ts.tv_usec %= 1000000; + if (packet->pkthdr.ts.tv_sec > ts.tv_sec + || (packet->pkthdr.ts.tv_sec == ts.tv_sec + && packet->pkthdr.ts.tv_usec > ts.tv_usec)) { + + pcap_thread_ext_frag_fragment_t* f; + + layer_tracef("frags timed out (last: %lu.%lu, this: %lu.%lu)", + frags->packet.pkthdr.ts.tv_sec, frags->packet.pkthdr.ts.tv_usec, + packet->pkthdr.ts.tv_sec, packet->pkthdr.ts.tv_usec); + + if (ctx->conf.timeout_callback) + ctx->conf.timeout_callback(packet, payload, length, frags); + + for (f = frags->fragments; f;) { + frag = f; + f = f->next; + if (frag->payload) { + free(frag->payload); + } + free(frag); + } + + if (frags->payload) { + free(frags->payload); + } + free(frags); + frags = 0; + } else { + frags->packet.pkthdr.ts = packet->pkthdr.ts; + } + } + + /* No fragments found, create new */ + if (!frags) { + if (ctx->num_fragments >= ctx->conf.fragments) { + layer_trace("too many frags"); + return PCAP_THREAD_PACKET_INVALID_FRAGMENT; + } + + if (!(frags = calloc(1, sizeof(pcap_thread_ext_frag_fragments_t)))) { + layer_trace("nomem frags"); + return PCAP_THREAD_PACKET_ENOMEM; + } + + layer_tracef("new frags %d", packet->iphdr.ip_id); + + // TODO: How to handle prevpkt + memcpy(&(frags->packet.iphdr), &(packet->iphdr), sizeof(struct ip)); + frags->packet.have_iphdr = 1; + frags->packet.pkthdr.ts = packet->pkthdr.ts; + + ctx->num_fragments++; + } + /* Put the fragments first on the list */ + frags->next = ctx->fragments; + ctx->fragments = frags; + + if (frags->payload) { + layer_trace("already reassembled"); + return PCAP_THREAD_PACKET_INVALID_FRAGMENT; + } + + if (frags->num_fragments >= ctx->conf.per_packet) { + layer_trace("too many frags frag"); + return PCAP_THREAD_PACKET_INVALID_FRAGMENT; + } + + /* Allocate for the new fragment */ + if (!(frag = calloc(1, sizeof(pcap_thread_ext_frag_fragment_t)))) { + layer_trace("nomem frag"); + return PCAP_THREAD_PACKET_ENOMEM; + } + if (!(frag->payload = calloc(1, length))) { + free(frag); + layer_trace("nomem frag"); + return PCAP_THREAD_PACKET_ENOMEM; + } + memcpy(frag->payload, payload, length); + frag->length = length; + frag->offset = (packet->iphdr.ip_off & 0x1fff) * 8; + frag->flag_more_fragments = packet->iphdr.ip_off & 0x2000 ? 1 : 0; + + return reassemble(ctx, packet, whole_packet, whole_payload, whole_length, frags, frag); +} + +static pcap_thread_packet_state_t reassemble_ipv6(_ctx_t* ctx, const pcap_thread_packet_t* packet, const u_char* payload, size_t length, pcap_thread_packet_t** whole_packet, const u_char** whole_payload, size_t* whole_length) +{ + pcap_thread_ext_frag_fragments_t *frags, *frags_prev; + pcap_thread_ext_frag_fragment_t* frag; + + layer_tracef("ipv6 ctx %p", ctx); + + /* Find packet fragments */ + for (frags_prev = 0, frags = ctx->fragments; frags; frags_prev = frags, frags = frags->next) { + if (frags->packet.have_ip6hdr + && packet->ip6frag.ip6f_ident == frags->packet.ip6frag.ip6f_ident + && !memcmp(&(packet->ip6hdr.ip6_src), &(frags->packet.ip6hdr.ip6_src), sizeof(struct in6_addr)) + && ((!packet->have_ip6rtdst && !memcmp(&(packet->ip6hdr.ip6_dst), &(frags->packet.ip6hdr.ip6_dst), sizeof(struct in6_addr))) + || (packet->have_ip6rtdst && !memcmp(&(packet->ip6rtdst), &(frags->packet.ip6hdr.ip6_dst), sizeof(struct in6_addr))))) { + + layer_tracef("frags %x found", packet->ip6frag.ip6f_ident); + + /* Found it, remove from list */ + if (frags_prev) { + frags_prev->next = frags->next; + } + if (ctx->fragments == frags) { + ctx->fragments = frags->next; + } + frags->next = 0; + break; + } + } + + /* Check if frags is timed out */ + if (ctx->conf.check_timeout && frags) { + struct timeval ts; + + ts = frags->packet.pkthdr.ts; + ts.tv_sec += ctx->conf.timeout.tv_sec; + ts.tv_usec += ctx->conf.timeout.tv_usec; + ts.tv_usec %= 1000000; + if (packet->pkthdr.ts.tv_sec > ts.tv_sec + || (packet->pkthdr.ts.tv_sec == ts.tv_sec + && packet->pkthdr.ts.tv_usec > ts.tv_usec)) { + + pcap_thread_ext_frag_fragment_t* f; + + layer_tracef("frags timed out (last: %lu.%lu, this: %lu.%lu)", + frags->packet.pkthdr.ts.tv_sec, frags->packet.pkthdr.ts.tv_usec, + packet->pkthdr.ts.tv_sec, packet->pkthdr.ts.tv_usec); + + if (ctx->conf.timeout_callback) + ctx->conf.timeout_callback(packet, payload, length, frags); + + for (f = frags->fragments; f;) { + frag = f; + f = f->next; + if (frag->payload) { + free(frag->payload); + } + free(frag); + } + + if (frags->payload) { + free(frags->payload); + } + free(frags); + frags = 0; + } else { + frags->packet.pkthdr.ts = packet->pkthdr.ts; + } + } + + /* No fragments found, create new */ + if (!frags) { + if (ctx->num_fragments >= ctx->conf.fragments) { + layer_trace("too many frags"); + return PCAP_THREAD_PACKET_INVALID_FRAGMENT; + } + + if (!(frags = calloc(1, sizeof(pcap_thread_ext_frag_fragments_t)))) { + layer_trace("nomem frags"); + return PCAP_THREAD_PACKET_ENOMEM; + } + + layer_tracef("new frags %x", packet->ip6frag.ip6f_ident); + + // TODO: How to handle prevpkt + memcpy(&(frags->packet.ip6hdr), &(packet->ip6hdr), sizeof(struct ip6_hdr)); + frags->packet.have_ip6hdr = 1; + memcpy(&(frags->packet.ip6frag), &(packet->ip6frag), sizeof(struct ip6_frag)); + frags->packet.have_ip6frag = 1; + frags->packet.ip6frag_payload = packet->ip6frag_payload; + if (packet->have_ip6rtdst) { + frags->packet.ip6hdr.ip6_dst = packet->ip6rtdst; + } + frags->packet.pkthdr.ts = packet->pkthdr.ts; + + ctx->num_fragments++; + } else { + if (frags->packet.ip6frag_payload != packet->ip6frag_payload) { + layer_trace("wrong payload"); + return PCAP_THREAD_PACKET_INVALID_FRAGMENT; + } + } + /* Put the fragments first on the list */ + frags->next = ctx->fragments; + ctx->fragments = frags; + + if (frags->payload) { + layer_trace("already reassembled"); + return PCAP_THREAD_PACKET_INVALID_FRAGMENT; + } + + if (frags->num_fragments >= ctx->conf.per_packet) { + layer_trace("too many frags frag"); + return PCAP_THREAD_PACKET_INVALID_FRAGMENT; + } + + /* Allocate for the new fragment */ + if (!(frag = calloc(1, sizeof(pcap_thread_ext_frag_fragment_t)))) { + layer_trace("nomem frag"); + return PCAP_THREAD_PACKET_ENOMEM; + } + if (!(frag->payload = calloc(1, length))) { + free(frag); + layer_trace("nomem frag"); + return PCAP_THREAD_PACKET_ENOMEM; + } + memcpy(frag->payload, payload, length); + frag->length = length; + frag->offset = ((packet->ip6frag.ip6f_offlg & 0xfff8) >> 3) * 8; + frag->flag_more_fragments = packet->ip6frag.ip6f_offlg & 0x1 ? 1 : 0; + + return reassemble(ctx, packet, whole_packet, whole_payload, whole_length, frags, frag); +} + +#ifdef HAVE_PTHREAD /* _release() is only used when mutex functions fails */ +static void _release(_ctx_t* ctx, const pcap_thread_packet_t* packet) +{ + pcap_thread_ext_frag_fragments_t *frags, *frags_prev; + + layer_tracef("release ctx %p", ctx); + + /* Find packet fragments */ + for (frags_prev = 0, frags = ctx->fragments; frags; frags_prev = frags, frags = frags->next) { + if (frags->packet.have_iphdr + && packet->iphdr.ip_id == frags->packet.iphdr.ip_id + && packet->iphdr.ip_p == frags->packet.iphdr.ip_p + && packet->iphdr.ip_src.s_addr == frags->packet.iphdr.ip_src.s_addr + && packet->iphdr.ip_dst.s_addr == frags->packet.iphdr.ip_dst.s_addr) { + + layer_tracef("release frags %d", packet->iphdr.ip_id); + break; + } else if (frags->packet.have_ip6hdr + && packet->ip6frag.ip6f_ident == frags->packet.ip6frag.ip6f_ident + && !memcmp(&(packet->ip6hdr.ip6_src), &(frags->packet.ip6hdr.ip6_src), sizeof(struct in6_addr)) + && ((!packet->have_ip6rtdst && !memcmp(&(packet->ip6hdr.ip6_dst), &(frags->packet.ip6hdr.ip6_dst), sizeof(struct in6_addr))) + || (packet->have_ip6rtdst && !memcmp(&(packet->ip6rtdst), &(frags->packet.ip6hdr.ip6_dst), sizeof(struct in6_addr))))) { + + layer_tracef("release frags %x", packet->ip6frag.ip6f_ident); + break; + } + } + + if (frags) { + pcap_thread_ext_frag_fragment_t *frag, *f; + + /* Found it, remove from list */ + if (frags_prev) { + frags_prev->next = frags->next; + } + if (ctx->fragments == frags) { + ctx->fragments = frags->next; + } + frags->next = 0; + ctx->num_fragments--; + + for (f = frags->fragments; f;) { + frag = f; + f = f->next; + if (frag->payload) { + free(frag->payload); + } + free(frag); + } + + if (frags->payload) { + free(frags->payload); + } + free(frags); + } +} +#endif + +static pcap_thread_packet_state_t pcap_thread_layer_callback_frag_reassemble(void* _ctx, const pcap_thread_packet_t* packet, const u_char* payload, size_t length, pcap_thread_packet_t** whole_packet, const u_char** whole_payload, size_t* whole_length) +{ + _ctx_t* ctx = (_ctx_t*)_ctx; + pcap_thread_packet_state_t state = PCAP_THREAD_PACKET_INVALID; + + if (!ctx) { + return PCAP_THREAD_PACKET_INVALID; + } + if (!packet) { + return PCAP_THREAD_PACKET_INVALID; + } + if (!payload) { + return PCAP_THREAD_PACKET_INVALID; + } + if (!length) { + return PCAP_THREAD_PACKET_INVALID; + } + if (!whole_packet) { + return PCAP_THREAD_PACKET_INVALID; + } + if (!whole_payload) { + return PCAP_THREAD_PACKET_INVALID; + } + if (!whole_length) { + return PCAP_THREAD_PACKET_INVALID; + } + + if (ctx && packet && payload && length + && whole_packet && whole_payload && whole_length) { + if (packet->have_iphdr) { +#ifdef HAVE_PTHREAD + if (pthread_mutex_lock(&(ctx->mutex))) { + return PCAP_THREAD_PACKET_EMUTEX; + } +#endif + state = reassemble_ipv4(ctx, packet, payload, length, whole_packet, whole_payload, whole_length); +#ifdef HAVE_PTHREAD + if (pthread_mutex_unlock(&(ctx->mutex))) { + if (state == PCAP_THREAD_PACKET_OK && *whole_packet && *whole_payload && *whole_length) { + _release(ctx, *whole_packet); + } + return PCAP_THREAD_PACKET_EMUTEX; + } +#endif + } else if (packet->have_ip6hdr && packet->have_ip6frag) { +#ifdef HAVE_PTHREAD + if (pthread_mutex_lock(&(ctx->mutex))) { + return PCAP_THREAD_PACKET_EMUTEX; + } +#endif + state = reassemble_ipv6(ctx, packet, payload, length, whole_packet, whole_payload, whole_length); +#ifdef HAVE_PTHREAD + if (pthread_mutex_unlock(&(ctx->mutex))) { + if (state == PCAP_THREAD_PACKET_OK && *whole_packet && *whole_payload && *whole_length) { + _release(ctx, *whole_packet); + } + return PCAP_THREAD_PACKET_EMUTEX; + } +#endif + } + } + + return state; +} + +static void pcap_thread_layer_callback_frag_release(void* _ctx, const pcap_thread_packet_t* packet, const u_char* payload, size_t length) +{ + _ctx_t* ctx = (_ctx_t*)_ctx; + pcap_thread_ext_frag_fragments_t *frags, *frags_prev; + + if (!ctx) { + return; + } + if (!packet) { + return; + } + if (packet->have_ip6hdr) { + if (!packet->have_ip6frag) { + return; + } + } else if (!packet->have_iphdr) { + return; + } + +#ifdef HAVE_PTHREAD + if (pthread_mutex_lock(&(ctx->mutex))) { + return; + } +#endif + + /* Find packet fragments */ + for (frags_prev = 0, frags = ctx->fragments; frags; frags_prev = frags, frags = frags->next) { + if ((frags->packet.have_iphdr + && packet->iphdr.ip_id == frags->packet.iphdr.ip_id + && packet->iphdr.ip_p == frags->packet.iphdr.ip_p + && packet->iphdr.ip_src.s_addr == frags->packet.iphdr.ip_src.s_addr + && packet->iphdr.ip_dst.s_addr == frags->packet.iphdr.ip_dst.s_addr) + || (frags->packet.have_ip6hdr + && packet->ip6frag.ip6f_ident == frags->packet.ip6frag.ip6f_ident + && !memcmp(&(packet->ip6hdr.ip6_src), &(frags->packet.ip6hdr.ip6_src), sizeof(struct in6_addr)) + && ((!packet->have_ip6rtdst && !memcmp(&(packet->ip6hdr.ip6_dst), &(frags->packet.ip6hdr.ip6_dst), sizeof(struct in6_addr))) + || (packet->have_ip6rtdst && !memcmp(&(packet->ip6rtdst), &(frags->packet.ip6hdr.ip6_dst), sizeof(struct in6_addr)))))) { + + /* Found it, remove from list */ + if (frags_prev) { + frags_prev->next = frags->next; + } + if (ctx->fragments == frags) { + ctx->fragments = frags->next; + } + frags->next = 0; + ctx->num_fragments--; + break; + } + } + +#ifdef HAVE_PTHREAD + pthread_mutex_unlock(&(ctx->mutex)); +#endif + + if (frags) { + pcap_thread_ext_frag_fragment_t *frag, *f; + + for (f = frags->fragments; f;) { + frag = f; + f = f->next; + if (frag->payload) { + free(frag->payload); + } + free(frag); + } + + if (frags->payload) { + free(frags->payload); + } + free(frags); + } +} diff --git a/src/pcap-thread/pcap_thread_ext_frag.h b/src/pcap-thread/pcap_thread_ext_frag.h new file mode 100644 index 0000000..0478ee0 --- /dev/null +++ b/src/pcap-thread/pcap_thread_ext_frag.h @@ -0,0 +1,131 @@ +/* + * Author Jerry Lundström <jerry@dns-oarc.net> + * Copyright (c) 2016-2023, OARC, Inc. + * All rights reserved. + * + * 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. Neither the name of the copyright holder 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "pcap_thread.h" + +#ifndef __pcap_thread_ext_frag_h +#define __pcap_thread_ext_frag_h + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * RFC791 - Handle fragments in an offset ascending order, allow fragments to overlap + * RFC815 - Handle fragments in a receiving order, allow fragments to overlap + * BSD - Handle fragments in an offset descending order, allow fragments to overlap + */ +typedef enum pcap_thread_ext_frag_reassemble_mode pcap_thread_ext_frag_reassemble_mode_t; +enum pcap_thread_ext_frag_reassemble_mode { + PCAP_THREAD_EXT_FRAG_REASSEMBLE_RFC791 = 0, + PCAP_THREAD_EXT_FRAG_REASSEMBLE_RFC815, + PCAP_THREAD_EXT_FRAG_REASSEMBLE_BSD +}; + +typedef struct pcap_thread_ext_frag_fragment pcap_thread_ext_frag_fragment_t; +struct pcap_thread_ext_frag_fragment { + pcap_thread_ext_frag_fragment_t* next; + + unsigned short flag_more_fragments : 1; + + u_char* payload; + size_t length; + size_t offset; +}; + +typedef struct pcap_thread_ext_frag_fragments pcap_thread_ext_frag_fragments_t; +struct pcap_thread_ext_frag_fragments { + pcap_thread_ext_frag_fragments_t* next; + + pcap_thread_packet_t packet; + pcap_thread_ext_frag_fragment_t* fragments; + size_t num_fragments; + u_char* payload; + size_t length; +}; + +typedef void (*pcap_thread_ext_frag_callback_t)(const pcap_thread_packet_t* packet, const u_char* payload, size_t length, const pcap_thread_ext_frag_fragments_t* fragments); + +/* clang-format off */ +#define PCAP_THREAD_EXT_FRAG_CONF_T_INIT { \ + 0, 0, \ + PCAP_THREAD_EXT_FRAG_REASSEMBLE_RFC791, \ + 100, 10, { 30, 0 }, \ + 0, 0 \ +} +/* clang-format on */ + +typedef struct pcap_thread_ext_frag_conf pcap_thread_ext_frag_conf_t; +struct pcap_thread_ext_frag_conf { + unsigned short reject_overlap : 1; + unsigned short check_timeout : 1; + + pcap_thread_ext_frag_reassemble_mode_t reassemble_mode; + + size_t fragments; + size_t per_packet; + struct timeval timeout; + + pcap_thread_ext_frag_callback_t overlap_callback; + pcap_thread_ext_frag_callback_t timeout_callback; +}; + +pcap_thread_ext_frag_conf_t* pcap_thread_ext_frag_conf_new(void); +void pcap_thread_ext_frag_conf_free(pcap_thread_ext_frag_conf_t* conf); + +int pcap_thread_ext_frag_conf_reject_overlap(const pcap_thread_ext_frag_conf_t* conf); +int pcap_thread_ext_frag_conf_set_reject_overlap(pcap_thread_ext_frag_conf_t* conf, const int reject_overlap); +int pcap_thread_ext_frag_conf_check_timeout(const pcap_thread_ext_frag_conf_t* conf); +int pcap_thread_ext_frag_conf_set_check_timeout(pcap_thread_ext_frag_conf_t* conf, const int check_timeout); +pcap_thread_ext_frag_reassemble_mode_t pcap_thread_ext_frag_conf_reassemble_mode(const pcap_thread_ext_frag_conf_t* conf); +int pcap_thread_ext_frag_conf_set_reassemble_mode(pcap_thread_ext_frag_conf_t* conf, const pcap_thread_ext_frag_reassemble_mode_t reassemble_mode); +size_t pcap_thread_ext_frag_conf_fragments(const pcap_thread_ext_frag_conf_t* conf); +int pcap_thread_ext_frag_conf_set_fragments(pcap_thread_ext_frag_conf_t* conf, const size_t fragments); +size_t pcap_thread_ext_frag_conf_per_packet(const pcap_thread_ext_frag_conf_t* conf); +int pcap_thread_ext_frag_conf_set_per_packet(pcap_thread_ext_frag_conf_t* conf, const size_t per_packet); +struct timeval pcap_thread_ext_frag_conf_timeout(const pcap_thread_ext_frag_conf_t* conf); +int pcap_thread_ext_frag_conf_set_timeout(pcap_thread_ext_frag_conf_t* conf, const struct timeval timeout); +pcap_thread_ext_frag_callback_t pcap_thread_ext_frag_conf_overlap_callback(const pcap_thread_ext_frag_conf_t* conf); +int pcap_thread_ext_frag_conf_set_overlap_callback(pcap_thread_ext_frag_conf_t* conf, pcap_thread_ext_frag_callback_t overlap_callback); +pcap_thread_ext_frag_callback_t pcap_thread_ext_frag_conf_timeout_callback(const pcap_thread_ext_frag_conf_t* conf); +int pcap_thread_ext_frag_conf_set_timeout_callback(pcap_thread_ext_frag_conf_t* conf, pcap_thread_ext_frag_callback_t timeout_callback); + +pcap_thread_layer_callback_frag_t pcap_thread_ext_frag_layer_callback(pcap_thread_ext_frag_conf_t* conf); + +#ifdef __cplusplus +} +#endif + +#endif /* __pcap_thread_ext_frag_h */ |