41c02e10db
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>
77 lines
2.7 KiB
Text
77 lines
2.7 KiB
Text
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
#
|
|
# PASST - Plug A Simple Socket Transport
|
|
# for qemu/UNIX domain socket mode
|
|
#
|
|
# PASTA - Pack A Subtle Tap Abstraction
|
|
# for network namespace/tap device mode
|
|
#
|
|
# test/udp/pasta - Check UDP functionality for pasta
|
|
#
|
|
# Copyright (c) 2021 Red Hat GmbH
|
|
# Author: Stefano Brivio <sbrivio@redhat.com>
|
|
|
|
onlyfor pasta
|
|
nstools ncat tee grep cat ip jq md5sum cut
|
|
htools printf dd ncat tee grep cat ip jq md5sum cut
|
|
|
|
test UDP/IPv4: host to ns
|
|
temp TEMP
|
|
temp TEMP_NS
|
|
temp NC_PID
|
|
ns :> __TEMP_NS__
|
|
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 cat __TEMP__ | ncat -u 127.0.0.1 10002
|
|
nsw
|
|
hout MD5 md5sum __TEMP__ | cut -d' ' -f1
|
|
nsout NS_MD5 md5sum __TEMP_NS__ | cut -d' ' -f1
|
|
check [ "__NS_MD5__" = "__MD5__" ]
|
|
|
|
test UDP/IPv4: ns to host (recvmmsg/sendmmsg)
|
|
host :> __TEMP__
|
|
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
|
|
ns cat __TEMP_NS__ | ncat -u 127.0.0.1 10003
|
|
hostw
|
|
hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
|
|
check [ "__HOST_MD5__" = "__MD5__" ]
|
|
|
|
test UDP/IPv4: ns to host (via tap)
|
|
host :> __TEMP__
|
|
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'
|
|
ns cat __TEMP_NS__ | ncat -u __GW__ 10003
|
|
hostw
|
|
hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
|
|
check [ "__HOST_MD5__" = "__MD5__" ]
|
|
|
|
test UDP/IPv6: host to ns
|
|
ns :> __TEMP_NS__
|
|
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__ | ncat -u ::1 10002
|
|
nsw
|
|
hout MD5 md5sum __TEMP__ | cut -d' ' -f1
|
|
nsout NS_MD5 md5sum __TEMP_NS__ | cut -d' ' -f1
|
|
check [ "__NS_MD5__" = "__MD5__" ]
|
|
|
|
test UDP/IPv6: ns to host (recvmmsg/sendmmsg)
|
|
host :> __TEMP__
|
|
hostb (ncat -u -6 -l ::1 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__))
|
|
sleep 1
|
|
ns cat __TEMP_NS__ | ncat -u ::1 10003
|
|
hostw
|
|
hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
|
|
check [ "__HOST_MD5__" = "__MD5__" ]
|
|
nsw
|
|
|
|
test UDP/IPv6: ns to host (via tap)
|
|
host :> __TEMP__
|
|
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 IFNAME ip -j link show | jq -rM '.[] | select(.link_type == "ether").ifname'
|
|
ns cat __TEMP_NS__ | ncat -u __GW6__%__IFNAME__ 10003
|
|
hostw
|
|
hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
|
|
check [ "__HOST_MD5__" = "__MD5__" ]
|