tests: Use nmap-ncat instead of openbsd netcat for pasta tests

A number of the testcases use options specific the OpenBSD version of
netcat.  That's available in Debian, but not easily available in Fedora.
Switch the pasta tests to using the nmap version of netcat (a.k.a. ncat).
This is easily available in both Debian and Fedora, and appears to be a
bit more modern and maintained as well.

ncat generally requires explicit listen addresses (which is good for
clarity anywhere).  Its default options appear to remove the need for the
-N and -q options.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
[sbrivio: changed one ncat listening address to IPv6 loopback]
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
David Gibson 2022-06-10 12:32:45 +10:00 committed by Stefano Brivio
parent e48373382f
commit 41c02e10db
4 changed files with 48 additions and 47 deletions

View file

@ -29,7 +29,7 @@ on a system, i.e. common utilities such as a shell are not included here.
Example for Debian, and possibly most Debian-based distributions: Example for Debian, and possibly most Debian-based distributions:
build-essential git jq strace iperf3 qemu-system-x86 tmux sipcalc bc build-essential git jq strace iperf3 qemu-system-x86 tmux sipcalc bc
clang-tidy cppcheck isc-dhcp-common psmisc linux-cpupower clang-tidy cppcheck isc-dhcp-common psmisc linux-cpupower ncat
netcat-openbsd fakeroot lz4 lm-sensors qemu-system-arm qemu-system-ppc netcat-openbsd fakeroot lz4 lm-sensors qemu-system-arm qemu-system-ppc
qemu-system-misc qemu-system-x86 valgrind qemu-system-misc qemu-system-x86 valgrind

View file

@ -100,9 +100,9 @@ nl
say pasta detects bound ports and forwards them. say pasta detects bound ports and forwards them.
sleep 3 sleep 3
nsb nc -6 -l -p 31337 nsb ncat -6 -l ::1 31337
sleep 2 sleep 2
host echo "Hello from the host" | nc -N ::1 31337 host echo "Hello from the host" | ncat ::1 31337
sleep 5 sleep 5
nl nl
@ -111,9 +111,9 @@ say Now the other way around...
nl nl
say we can use a loopback address say we can use a loopback address
sleep 2 sleep 2
hostb nc -l -p 31337 hostb ncat -l ::1 31337
sleep 2 sleep 2
ns echo "Hello from the namespace" | nc -N 127.0.0.1 31337 ns echo "Hello from the namespace" | ncat ::1 31337
sleep 5 sleep 5
nl nl
@ -121,9 +121,9 @@ say or the address of the default gateway.
sleep 2 sleep 2
nsout GW ip -j -4 route show|jq -rM '.[] | select(.dst == "default").gateway' nsout GW ip -j -4 route show|jq -rM '.[] | select(.dst == "default").gateway'
sleep 5 sleep 5
hostb nc -l -p 31337 hostb ncat -l 0.0.0.0 31337
sleep 2 sleep 2
ns echo "Hello from the namespace" | nc -N __GW__ 31337 ns echo "Hello from the namespace" | ncat __GW__ 31337
sleep 3 sleep 3
nl nl

View file

@ -12,31 +12,31 @@
# Author: Stefano Brivio <sbrivio@redhat.com> # Author: Stefano Brivio <sbrivio@redhat.com>
onlyfor pasta onlyfor pasta
htools dd nc ip jq cat md5sum cut htools dd ncat ip jq cat md5sum cut
nstools nc ip jq cat md5sum cut nstools ncat ip jq cat md5sum cut
test TCP/IPv4: host to ns: big transfer test TCP/IPv4: host to ns: big transfer
temp TEMP_BIG temp TEMP_BIG
temp TEMP_NS_BIG temp TEMP_NS_BIG
nsb nc -4 -l 10002 > __TEMP_NS_BIG__ nsb ncat -4 -l 127.0.0.1 10002 > __TEMP_NS_BIG__
host dd if=/dev/urandom bs=1M count=10 > __TEMP_BIG__ host dd if=/dev/urandom bs=1M count=10 > __TEMP_BIG__
host cat __TEMP_BIG__ | nc -N 127.0.0.1 10002 host cat __TEMP_BIG__ | ncat 127.0.0.1 10002
nsw nsw
hout MD5_BIG md5sum __TEMP_BIG__ | cut -d' ' -f1 hout MD5_BIG md5sum __TEMP_BIG__ | cut -d' ' -f1
nsout NS_MD5_BIG md5sum __TEMP_NS_BIG__ | cut -d' ' -f1 nsout NS_MD5_BIG md5sum __TEMP_NS_BIG__ | cut -d' ' -f1
check [ "__NS_MD5_BIG__" = "__MD5_BIG__" ] check [ "__NS_MD5_BIG__" = "__MD5_BIG__" ]
test TCP/IPv4: ns to host (spliced): big transfer test TCP/IPv4: ns to host (spliced): big transfer
hostb nc -4 -l 10003 > __TEMP_BIG__ hostb ncat -4 -l 127.0.0.1 10003 > __TEMP_BIG__
ns cat __TEMP_NS_BIG__ | nc -N 127.0.0.1 10003 ns cat __TEMP_NS_BIG__ | ncat 127.0.0.1 10003
hostw hostw
hout HOST_MD5_BIG md5sum __TEMP_BIG__ | cut -d' ' -f1 hout HOST_MD5_BIG md5sum __TEMP_BIG__ | cut -d' ' -f1
check [ "__HOST_MD5_BIG__" = "__MD5_BIG__" ] check [ "__HOST_MD5_BIG__" = "__MD5_BIG__" ]
test TCP/IPv4: ns to host (via tap): big transfer test TCP/IPv4: ns to host (via tap): big transfer
hostb nc -4 -l 10003 > __TEMP_BIG__ hostb ncat -4 -l 0.0.0.0 10003 > __TEMP_BIG__
nsout GW ip -j -4 route show|jq -rM '.[] | select(.dst == "default").gateway' nsout GW ip -j -4 route show|jq -rM '.[] | select(.dst == "default").gateway'
ns cat __TEMP_NS_BIG__ | nc -N __GW__ 10003 ns cat __TEMP_NS_BIG__ | ncat __GW__ 10003
hostw hostw
hout HOST_MD5_BIG md5sum __TEMP_BIG__ | cut -d' ' -f1 hout HOST_MD5_BIG md5sum __TEMP_BIG__ | cut -d' ' -f1
check [ "__HOST_MD5_BIG__" = "__MD5_BIG__" ] check [ "__HOST_MD5_BIG__" = "__MD5_BIG__" ]
@ -44,50 +44,50 @@ check [ "__HOST_MD5_BIG__" = "__MD5_BIG__" ]
test TCP/IPv4: host to ns: small transfer test TCP/IPv4: host to ns: small transfer
temp TEMP_SMALL temp TEMP_SMALL
temp TEMP_NS_SMALL temp TEMP_NS_SMALL
nsb nc -4 -l 10002 > __TEMP_NS_SMALL__ nsb ncat -4 -l 127.0.0.1 10002 > __TEMP_NS_SMALL__
host dd if=/dev/urandom bs=2k count=1 > __TEMP_SMALL__ host dd if=/dev/urandom bs=2k count=1 > __TEMP_SMALL__
host cat __TEMP_SMALL__ | nc -N 127.0.0.1 10002 host cat __TEMP_SMALL__ | ncat 127.0.0.1 10002
nsw nsw
hout MD5_SMALL md5sum __TEMP_SMALL__ | cut -d' ' -f1 hout MD5_SMALL md5sum __TEMP_SMALL__ | cut -d' ' -f1
nsout NS_MD5_SMALL md5sum __TEMP_NS_SMALL__ | cut -d' ' -f1 nsout NS_MD5_SMALL md5sum __TEMP_NS_SMALL__ | cut -d' ' -f1
check [ "__NS_MD5_SMALL__" = "__MD5_SMALL__" ] check [ "__NS_MD5_SMALL__" = "__MD5_SMALL__" ]
test TCP/IPv4: ns to host (spliced): small transfer test TCP/IPv4: ns to host (spliced): small transfer
hostb nc -4 -l 10003 > __TEMP_SMALL__ hostb ncat -4 -l 127.0.0.1 10003 > __TEMP_SMALL__
ns cat __TEMP_NS_SMALL__ | nc -N 127.0.0.1 10003 ns cat __TEMP_NS_SMALL__ | ncat 127.0.0.1 10003
hostw hostw
hout HOST_MD5_SMALL md5sum __TEMP_SMALL__ | cut -d' ' -f1 hout HOST_MD5_SMALL md5sum __TEMP_SMALL__ | cut -d' ' -f1
check [ "__HOST_MD5_SMALL__" = "__MD5_SMALL__" ] check [ "__HOST_MD5_SMALL__" = "__MD5_SMALL__" ]
test TCP/IPv4: ns to host (via tap): small transfer test TCP/IPv4: ns to host (via tap): small transfer
hostb nc -4 -l 10003 > __TEMP_SMALL__ hostb ncat -4 -l 0.0.0.0 10003 > __TEMP_SMALL__
nsout GW ip -j -4 route show|jq -rM '.[] | select(.dst == "default").gateway' nsout GW ip -j -4 route show|jq -rM '.[] | select(.dst == "default").gateway'
ns cat __TEMP_NS_SMALL__ | nc -N __GW__ 10003 ns cat __TEMP_NS_SMALL__ | ncat __GW__ 10003
hostw hostw
hout HOST_MD5_SMALL md5sum __TEMP_SMALL__ | cut -d' ' -f1 hout HOST_MD5_SMALL md5sum __TEMP_SMALL__ | cut -d' ' -f1
check [ "__HOST_MD5_SMALL__" = "__MD5_SMALL__" ] check [ "__HOST_MD5_SMALL__" = "__MD5_SMALL__" ]
test TCP/IPv6: host to ns: big transfer test TCP/IPv6: host to ns: big transfer
nsb nc -6 -l 10002 > __TEMP_NS_BIG__ nsb ncat -6 -l ::1 10002 > __TEMP_NS_BIG__
host cat __TEMP_BIG__ | nc -N ::1 10002 host cat __TEMP_BIG__ | ncat ::1 10002
nsw nsw
hout MD5_BIG md5sum __TEMP_BIG__ | cut -d' ' -f1 hout MD5_BIG md5sum __TEMP_BIG__ | cut -d' ' -f1
nsout NS_MD5_BIG md5sum __TEMP_NS_BIG__ | cut -d' ' -f1 nsout NS_MD5_BIG md5sum __TEMP_NS_BIG__ | cut -d' ' -f1
check [ "__NS_MD5_BIG__" = "__MD5_BIG__" ] check [ "__NS_MD5_BIG__" = "__MD5_BIG__" ]
test TCP/IPv6: ns to host (spliced): big transfer test TCP/IPv6: ns to host (spliced): big transfer
hostb nc -6 -l 10003 > __TEMP_BIG__ hostb ncat -6 -l ::1 10003 > __TEMP_BIG__
ns cat __TEMP_NS_BIG__ | nc -N ::1 10003 ns cat __TEMP_NS_BIG__ | ncat ::1 10003
hostw hostw
hout HOST_MD5_BIG md5sum __TEMP_BIG__ | cut -d' ' -f1 hout HOST_MD5_BIG md5sum __TEMP_BIG__ | cut -d' ' -f1
check [ "__HOST_MD5_BIG__" = "__MD5_BIG__" ] check [ "__HOST_MD5_BIG__" = "__MD5_BIG__" ]
nsw nsw
test TCP/IPv6: ns to host (via tap): big transfer test TCP/IPv6: ns to host (via tap): big transfer
hostb nc -6 -l 10003 > __TEMP_BIG__ hostb ncat -6 -l :: 10003 > __TEMP_BIG__
nsout GW6 ip -j -6 route show|jq -rM '.[] | select(.dst == "default").gateway' nsout GW6 ip -j -6 route show|jq -rM '.[] | select(.dst == "default").gateway'
nsout IFNAME ip -j link show | jq -rM '.[] | select(.link_type == "ether").ifname' nsout IFNAME ip -j link show | jq -rM '.[] | select(.link_type == "ether").ifname'
ns cat __TEMP_NS_BIG__ | nc -N __GW6__%__IFNAME__ 10003 ns cat __TEMP_NS_BIG__ | ncat __GW6__%__IFNAME__ 10003
hostw hostw
hout HOST_MD5_BIG md5sum __TEMP_BIG__ | cut -d' ' -f1 hout HOST_MD5_BIG md5sum __TEMP_BIG__ | cut -d' ' -f1
check [ "__HOST_MD5_BIG__" = "__MD5_BIG__" ] check [ "__HOST_MD5_BIG__" = "__MD5_BIG__" ]
@ -95,24 +95,24 @@ check [ "__HOST_MD5_BIG__" = "__MD5_BIG__" ]
test TCP/IPv6: host to ns: small transfer test TCP/IPv6: host to ns: small transfer
temp TEMP_SMALL temp TEMP_SMALL
temp TEMP_NS_SMALL temp TEMP_NS_SMALL
nsb nc -6 -l 10002 > __TEMP_NS_SMALL__ nsb ncat -6 -l ::1 10002 > __TEMP_NS_SMALL__
host dd if=/dev/urandom bs=2k count=1 > __TEMP_SMALL__ host dd if=/dev/urandom bs=2k count=1 > __TEMP_SMALL__
host cat __TEMP_SMALL__ | nc -N ::1 10002 host cat __TEMP_SMALL__ | ncat ::1 10002
nsw nsw
hout MD5_SMALL md5sum __TEMP_SMALL__ | cut -d' ' -f1 hout MD5_SMALL md5sum __TEMP_SMALL__ | cut -d' ' -f1
nsout NS_MD5_SMALL md5sum __TEMP_NS_SMALL__ | cut -d' ' -f1 nsout NS_MD5_SMALL md5sum __TEMP_NS_SMALL__ | cut -d' ' -f1
check [ "__NS_MD5_SMALL__" = "__MD5_SMALL__" ] check [ "__NS_MD5_SMALL__" = "__MD5_SMALL__" ]
test TCP/IPv6: ns to host (spliced): small transfer test TCP/IPv6: ns to host (spliced): small transfer
hostb nc -6 -l 10003 > __TEMP_SMALL__ hostb ncat -6 -l ::1 10003 > __TEMP_SMALL__
ns cat __TEMP_NS_SMALL__ | nc -N ::1 10003 ns cat __TEMP_NS_SMALL__ | ncat ::1 10003
hostw hostw
hout HOST_MD5_SMALL md5sum __TEMP_SMALL__ | cut -d' ' -f1 hout HOST_MD5_SMALL md5sum __TEMP_SMALL__ | cut -d' ' -f1
check [ "__HOST_MD5_SMALL__" = "__MD5_SMALL__" ] check [ "__HOST_MD5_SMALL__" = "__MD5_SMALL__" ]
test TCP/IPv6: ns to host (via tap): small transfer test TCP/IPv6: ns to host (via tap): small transfer
hostb nc -6 -l 10003 > __TEMP_SMALL__ hostb ncat -6 -l :: 10003 > __TEMP_SMALL__
ns cat __TEMP_NS_SMALL__ | nc -N __GW6__%__IFNAME__ 10003 ns cat __TEMP_NS_SMALL__ | ncat __GW6__%__IFNAME__ 10003
hostw hostw
hout HOST_MD5_SMALL md5sum __TEMP_SMALL__ | cut -d' ' -f1 hout HOST_MD5_SMALL md5sum __TEMP_SMALL__ | cut -d' ' -f1
check [ "__HOST_MD5_SMALL__" = "__MD5_SMALL__" ] check [ "__HOST_MD5_SMALL__" = "__MD5_SMALL__" ]

View file

@ -12,17 +12,18 @@
# Author: Stefano Brivio <sbrivio@redhat.com> # Author: Stefano Brivio <sbrivio@redhat.com>
onlyfor pasta onlyfor pasta
nstools nc tee grep cat ip jq md5sum cut nstools ncat tee grep cat ip jq md5sum cut
htools printf dd nc tee grep cat ip jq md5sum cut htools printf dd ncat tee grep cat ip jq md5sum cut
test UDP/IPv4: host to ns test UDP/IPv4: host to ns
temp TEMP temp TEMP
temp TEMP_NS temp TEMP_NS
temp NC_PID temp NC_PID
ns :> __TEMP_NS__ ns :> __TEMP_NS__
nsb (nc -u -q1 -4 -l 10002 & echo $! > __NC_PID__) | tee __TEMP_NS__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__)) nsb (ncat -u -4 -l 127.0.0.1 10002 & echo $! > __NC_PID__) | tee __TEMP_NS__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__))
host dd if=/dev/urandom bs=1k count=5 > __TEMP__ && printf "\nEND_OF_TEST\n" >> __TEMP__ host dd if=/dev/urandom bs=1k count=5 > __TEMP__ && printf "\nEND_OF_TEST\n" >> __TEMP__
host cat __TEMP__ | nc -u -q1 -N 127.0.0.1 10002
host cat __TEMP__ | ncat -u 127.0.0.1 10002
nsw nsw
hout MD5 md5sum __TEMP__ | cut -d' ' -f1 hout MD5 md5sum __TEMP__ | cut -d' ' -f1
nsout NS_MD5 md5sum __TEMP_NS__ | cut -d' ' -f1 nsout NS_MD5 md5sum __TEMP_NS__ | cut -d' ' -f1
@ -30,26 +31,26 @@ check [ "__NS_MD5__" = "__MD5__" ]
test UDP/IPv4: ns to host (recvmmsg/sendmmsg) test UDP/IPv4: ns to host (recvmmsg/sendmmsg)
host :> __TEMP__ host :> __TEMP__
hostb (nc -u -q1 -4 -l 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__)) hostb (ncat -u -4 -l 127.0.0.1 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__))
sleep 1 sleep 1
ns cat __TEMP_NS__ | nc -u -q1 -N 127.0.0.1 10003 ns cat __TEMP_NS__ | ncat -u 127.0.0.1 10003
hostw hostw
hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1 hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
check [ "__HOST_MD5__" = "__MD5__" ] check [ "__HOST_MD5__" = "__MD5__" ]
test UDP/IPv4: ns to host (via tap) test UDP/IPv4: ns to host (via tap)
host :> __TEMP__ host :> __TEMP__
hostb (nc -u -q1 -4 -l 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__)) hostb (ncat -u -4 -l 0.0.0.0 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__))
nsout GW ip -j -4 route show|jq -rM '.[] | select(.dst == "default").gateway' nsout GW ip -j -4 route show|jq -rM '.[] | select(.dst == "default").gateway'
ns cat __TEMP_NS__ | nc -u -q1 -N __GW__ 10003 ns cat __TEMP_NS__ | ncat -u __GW__ 10003
hostw hostw
hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1 hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
check [ "__HOST_MD5__" = "__MD5__" ] check [ "__HOST_MD5__" = "__MD5__" ]
test UDP/IPv6: host to ns test UDP/IPv6: host to ns
ns :> __TEMP_NS__ ns :> __TEMP_NS__
nsb (nc -u -q1 -6 -l 10002 & echo $! > __NC_PID__) | tee __TEMP_NS__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__)) nsb (ncat -u -6 -l ::1 10002 & echo $! > __NC_PID__) | tee __TEMP_NS__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__))
host cat __TEMP__ | nc -u -q1 -N ::1 10002 host cat __TEMP__ | ncat -u ::1 10002
nsw nsw
hout MD5 md5sum __TEMP__ | cut -d' ' -f1 hout MD5 md5sum __TEMP__ | cut -d' ' -f1
nsout NS_MD5 md5sum __TEMP_NS__ | cut -d' ' -f1 nsout NS_MD5 md5sum __TEMP_NS__ | cut -d' ' -f1
@ -57,9 +58,9 @@ check [ "__NS_MD5__" = "__MD5__" ]
test UDP/IPv6: ns to host (recvmmsg/sendmmsg) test UDP/IPv6: ns to host (recvmmsg/sendmmsg)
host :> __TEMP__ host :> __TEMP__
hostb (nc -u -q1 -6 -l 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__)) hostb (ncat -u -6 -l ::1 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__))
sleep 1 sleep 1
ns cat __TEMP_NS__ | nc -u -q1 -N ::1 10003 ns cat __TEMP_NS__ | ncat -u ::1 10003
hostw hostw
hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1 hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
check [ "__HOST_MD5__" = "__MD5__" ] check [ "__HOST_MD5__" = "__MD5__" ]
@ -67,10 +68,10 @@ nsw
test UDP/IPv6: ns to host (via tap) test UDP/IPv6: ns to host (via tap)
host :> __TEMP__ host :> __TEMP__
hostb (nc -u -q1 -6 -l 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__)) hostb (ncat -u -6 -l :: 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__))
nsout GW6 ip -j -6 route show|jq -rM '.[] | select(.dst == "default").gateway' nsout GW6 ip -j -6 route show|jq -rM '.[] | select(.dst == "default").gateway'
nsout IFNAME ip -j link show | jq -rM '.[] | select(.link_type == "ether").ifname' nsout IFNAME ip -j link show | jq -rM '.[] | select(.link_type == "ether").ifname'
ns cat __TEMP_NS__ | nc -u -q1 -N __GW6__%__IFNAME__ 10003 ns cat __TEMP_NS__ | ncat -u __GW6__%__IFNAME__ 10003
hostw hostw
hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1 hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
check [ "__HOST_MD5__" = "__MD5__" ] check [ "__HOST_MD5__" = "__MD5__" ]