2320ac3349
ip(8)'s ability to take abbreviated arguments (e.g. "li sh" instead of "link show") is very handy when using it interactively, but it doesn't make for very readable scripts and examples when shown that way. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
54 lines
2 KiB
Text
54 lines
2 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/passt - Check UDP functionality in passt mode
|
|
#
|
|
# Copyright (c) 2021 Red Hat GmbH
|
|
# Author: Stefano Brivio <sbrivio@redhat.com>
|
|
|
|
onlyfor passt
|
|
gtools nc tee grep cat ip jq md5sum cut
|
|
htools printf dd nc tee grep cat ip jq md5sum cut
|
|
|
|
test UDP/IPv4: host to guest
|
|
temp TEMP
|
|
temp NC_PID
|
|
guestb (nc -u -q1 -4 -l 10001 & echo $! > __NC_PID__) | tee test.bin | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__))
|
|
host dd if=/dev/urandom bs=1k count=5 > __TEMP_BIG__ && printf "\nEND_OF_TEST\n" >> __TEMP__
|
|
host cat __TEMP__ | nc -u -q1 -N 127.0.0.1 10001
|
|
guestw
|
|
hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
|
|
gout GUEST_MD5 md5sum test.bin | cut -d' ' -f1
|
|
check [ "__GUEST_MD5__" = "__HOST_MD5__" ]
|
|
|
|
test UDP/IPv4: guest to host
|
|
host :> __TEMP__
|
|
hostb (nc -u -q1 -4 -l 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__))
|
|
gout GW ip -j -4 route show|jq -rM '.[] | select(.dst == "default").gateway'
|
|
guest cat test.bin | nc -u -q1 -N __GW__ 10003
|
|
hostw
|
|
hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
|
|
check [ "__GUEST_MD5__" = "__HOST_MD5__" ]
|
|
|
|
test UDP/IPv6: host to guest
|
|
guestb (nc -u -q1 -6 -l 10001 & echo $! > nc.pid) | tee test.bin | (grep -qm1 "END_OF_TEST" && kill $(cat nc.pid))
|
|
sleep 1
|
|
host cat __TEMP__ | nc -u -q1 -N ::1 10001
|
|
guestw
|
|
gout GUEST_MD5 md5sum test.bin | cut -d' ' -f1
|
|
check [ "__GUEST_MD5__" = "__HOST_MD5__" ]
|
|
|
|
test UDP/IPv6: guest to host
|
|
host :> __TEMP__
|
|
hostb (nc -u -q1 -6 -l 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__))
|
|
gout GW6 ip -j -6 route show|jq -rM '.[] | select(.dst == "default").gateway'
|
|
gout IFNAME ip -j link show | jq -rM '.[] | select(.link_type == "ether").ifname'
|
|
guest cat test.bin | nc -u -q1 -N __GW6__%__IFNAME__ 10003
|
|
hostw
|
|
hout HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
|
|
check [ "__GUEST_MD5__" = "__HOST_MD5__" ]
|