From ae744d70e7e8aedff327c296f495b3034d81e9b0 Mon Sep 17 00:00:00 2001 From: Damir Zainullin Date: Sun, 28 Jul 2024 20:28:57 +0200 Subject: [PATCH] Add tests for pcap reader --- pcaps/invalid_ipv6_ext_len.pcap | Bin 0 -> 65808 bytes tests/functional/Makefile.am | 7 ++- tests/functional/invalid_ipv6_ext_len.sh | 8 +++ tests/functional/pcapreader.sh | 54 ++++++++++++++++++ .../functional/reference/invalid_ipv6_ext_len | 2 + 5 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 pcaps/invalid_ipv6_ext_len.pcap create mode 100755 tests/functional/invalid_ipv6_ext_len.sh create mode 100755 tests/functional/pcapreader.sh create mode 100644 tests/functional/reference/invalid_ipv6_ext_len diff --git a/pcaps/invalid_ipv6_ext_len.pcap b/pcaps/invalid_ipv6_ext_len.pcap new file mode 100644 index 0000000000000000000000000000000000000000..d422033d8d55c3174f2802d9a4aa636a2bab1852 GIT binary patch literal 65808 zcmeI5yK59d9LML9fMOLZMHH?{E7(|xq_MH~4^UJtK2V7YK9D<$C~D&aF(y%RA);7X zSq3bEy^Wn%#ec!Vb5Gpl9{ZTxo!NPPwz=Jz-+br$`^??uvO7EX?aQa`gqRZXc3Oyu z^U=ZQBd1Tj+bzV&X#b>`Z=V&7yFxU691z{@ZMoas*IM{G*>Af#(b?ZT95tR2$5xK- z>lZcqEkwV?$8Pt8*y@-4-)7^Tgx5wwSzPp^_p=x8C%^6)E8Z2AEDx1V4;{q^f0C3B z#kDD~d3I8or5FE7sCsDcc16v+wlYC8yoXn|~%BDj#`WJ~S(GF{^UB?#A{WJ3$lZc$?};;G)y+F%JO%bQ9nMtD7+T z3JJVYs1>@@d^Uj83oqHtsD*$D0x8p9OjvQY&rbB2H(~y^l1|sEtGpkU7&#oSf!^SO>3t3FommZWUWluHoUmDOf%R;8voWB;CSXi7*z*5K*wri8uG5H$}+ zj;dOAESNlQ*@&duG5GmOH${zu1fsj)EdA)jxUsrI{xCht4>1xE#1{y4WL4wh#<04v zsi?G^)1EJ(Ie@5!00fi~=qOV{2m%p-?@;(h;I$qOM!p|h(31>E)dYcc6P?m01l%KFY~r?isBjDcc>*aj9k0qO5a|PfDbU z^5yS`Lq`sWD>;IIaRNqG{xF_31|Z-C0S%Kkf7iNsF$yFB0Z$3c)tDFGMQVgiR}g?e z5Cjq~1Gf2rf*^)IPLjpVViLSUzykue^yP3(pR~)$lUpvk56}CG%9NQlAVu?_g`1eR z(3CZnq=q%LAd9DRNB_6kx}sm{6Ygq>_t%3GZD?XQfd#wm;SK^C3Gj1z5^#fh;zoi8 wA+iKC%#@Jrnz$SSGi-wddV>e1_j87hY6w_BV5wdYv-NgIZxDb01biUy7rvxaH2?qr literal 0 HcmV?d00001 diff --git a/tests/functional/Makefile.am b/tests/functional/Makefile.am index 5d2ac57a..ae6c58a6 100644 --- a/tests/functional/Makefile.am +++ b/tests/functional/Makefile.am @@ -20,7 +20,8 @@ TESTS=basic.sh \ ssadetector.sh \ vlan.sh \ nettisa.sh \ - mqtt.sh + mqtt.sh \ + invalid_ipv6_ext_len.sh if WITH_QUIC TESTS+=\ @@ -52,6 +53,7 @@ EXTRA_DIST=common.sh \ ssadetector.sh \ vlan.sh \ mqtt.sh \ + invalid_ipv6_ext_len.sh \ reference/basic \ reference/basicplus \ reference/pstats \ @@ -75,7 +77,8 @@ EXTRA_DIST=common.sh \ reference/ssadetector \ reference/vlan \ reference/nettisa \ - reference/mqtt + reference/mqtt \ + reference/invalid_ipv6_ext_len clean-local: rm -rf output diff --git a/tests/functional/invalid_ipv6_ext_len.sh b/tests/functional/invalid_ipv6_ext_len.sh new file mode 100755 index 00000000..be2d3214 --- /dev/null +++ b/tests/functional/invalid_ipv6_ext_len.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +test -z "$srcdir" && export srcdir=. + +. $srcdir/pcapreader.sh + +run_pcap_reader_test "$pcap_dir/invalid_ipv6_ext_len.pcap" invalid_ipv6_ext_len + diff --git a/tests/functional/pcapreader.sh b/tests/functional/pcapreader.sh new file mode 100755 index 00000000..2c9fdcc0 --- /dev/null +++ b/tests/functional/pcapreader.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +export LC_ALL=C +export LANG=C + +test -z "$srcdir" && export srcdir=. + +ipfixprobe_bin=../../ipfixprobe +if [ -x ../../../logger/logger ]; then + logger_bin=../../../logger/logger +elif [ -x /usr/local/bin/logger ]; then + logger_bin=/usr/local/bin/logger +else + logger_bin=/usr/bin/nemea/logger +fi + +pcap_dir=$srcdir/../../pcaps +ref_dir=$srcdir/reference +output_dir=./output +file_out="$$.data" + +# Usage: run_pcap_reader_test +run_pcap_reader_test() { + if ! [ -f "$ipfixprobe_bin" ]; then + echo "ipfixprobe not compiled" + return 77 + fi + + if ! `"$ipfixprobe_bin" -h unirec |head -1 | grep -q '^unirec'`; then + echo "compiled without NEMEA" + return 77 + fi + + if ! [ -f "$logger_bin" ]; then + echo "logger not compiled" + return 77 + fi + + if ! [ -d "$output_dir" ]; then + mkdir "$output_dir" + fi + + "$ipfixprobe_bin" -i "pcap;file=$1" -o "unirec;ifc=f:${output_dir}/${file_out}:buffer=off:timeout=WAIT;id=0" >/dev/null + "$logger_bin" -i f:"$output_dir/$file_out" -t | sort > "$output_dir/$2" + rm "$output_dir/$file_out" + + if sort "$ref_dir/$2" | diff -u "$output_dir/$2" -s - ; then + echo "$2 pcap reader test OK" + else + echo "$2 pcap reader test FAILED" + return 1 + fi +} + diff --git a/tests/functional/reference/invalid_ipv6_ext_len b/tests/functional/reference/invalid_ipv6_ext_len new file mode 100644 index 00000000..29199cd3 --- /dev/null +++ b/tests/functional/reference/invalid_ipv6_ext_len @@ -0,0 +1,2 @@ +6785:c903::a002:8018:202e:0,1a00:a1a1:a1a1:a1a1:a1a1:a1a1:9ba1:a117,40,0,0,2014-11-10T03:32:08.002213,2014-11-10T03:32:08.002213,00:00:00:00:00:00,00:00:00:00:00:00,1,0,0,0,0,1,0,0 +ipaddr DST_IP,ipaddr SRC_IP,uint64 BYTES,uint64 BYTES_REV,uint64 LINK_BIT_FIELD,time TIME_FIRST,time TIME_LAST,macaddr DST_MAC,macaddr SRC_MAC,uint32 PACKETS,uint32 PACKETS_REV,uint16 DST_PORT,uint16 SRC_PORT,uint8 DIR_BIT_FIELD,uint8 PROTOCOL,uint8 TCP_FLAGS,uint8 TCP_FLAGS_REV