public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
blob 71bda046f9a268184b6a647ad56506fc7ecd77d0 6214 bytes (raw)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
 
# 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_in_ns - Check UDP functionality for passt in ns and pasta
#
# Copyright (c) 2021 Red Hat GmbH
# Author: Stefano Brivio <sbrivio@redhat.com>

onlyfor	passt_in_ns
gtools	nc tee grep cat ip jq md5sum cut
nstools	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.pic) | tee test.bin | (grep -qm1 "END_OF_TEST" && kill $(cat nc.pic))
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 10001
guestw
hout	MD5 md5sum __TEMP__ | cut -d' ' -f1
gout	GUEST_MD5 md5sum test.bin | cut -d' ' -f1
check	[ "__GUEST_MD5__" = "__MD5__" ]

test	UDP/IPv4: host to ns
temp	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__))
host	cat __TEMP__ | nc -u -q1 -N 127.0.0.1 10002
nsw
nsout	NS_MD5 md5sum __TEMP_NS__ | cut -d' ' -f1
check	[ "__NS_MD5__" = "__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	[ "__HOST_MD5__" = "__MD5__" ]

test	UDP/IPv4: guest to 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__))
guest	cat test.bin | nc -u -q1 -N __GW__ 10002
hostw
hout	HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
check	[ "__HOST_MD5__" = "__MD5__" ]

test	UDP/IPv4: ns to host (recvmmsg/sendmmsg)
sleep	1
host	:> __TEMP__
hostb	(nc -u -q1 -4 -l 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__))
ns	cat __TEMP_NS__ | nc -u -q1 -N 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	(nc -u -q1 -4 -l 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__))
ns	cat __TEMP_NS__ | nc -u -q1 -N __GW__ 10003
hostw
hout	HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
check	[ "__HOST_MD5__" = "__MD5__" ]

test	UDP/IPv4: ns to guest (using loopback address)
guestb	(nc -u -q1 -4 -l 10001 & echo $! > nc.pid) | tee test.bin | (grep -qm1 "END_OF_TEST" && kill $(cat nc.pid))
ns	cat __TEMP_NS__ | nc -u -q1 -N 127.0.0.1 10001
guestw
gout	GUEST_MD5 md5sum test.bin | cut -d' ' -f1
check	[ "__GUEST_MD5__" = "__MD5__" ]

test	UDP/IPv4: ns to guest (using namespace address)
guestb	(nc -u -q1 -4 -l 10001 & echo $! > nc.pid) | tee test.bin | (grep -qm1 "END_OF_TEST" && kill $(cat nc.pid))
nsout	IFNAME ip -j link show | jq -rM '.[] | select(.link_type == "ether").ifname'
nsout	ADDR ip -j -4 addr show|jq -rM '.[] | select(.ifname == "__IFNAME__").addr_info[0].local'
ns	cat __TEMP_NS__ | nc -u -q1 -N __ADDR__ 10001
guestw
gout	GUEST_MD5 md5sum test.bin | cut -d' ' -f1
check	[ "__GUEST_MD5__" = "__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))
host	cat __TEMP__ | nc -u -q1 -N ::1 10001
guestw
gout	GUEST_MD5 md5sum test.bin | cut -d' ' -f1
check	[ "__GUEST_MD5__" = "__MD5__" ]

test	UDP/IPv6: host to 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__))
host	cat __TEMP__ | nc -u -q1 -N ::1 10002
nsw
nsout	NS_MD5 md5sum __TEMP_NS__ | cut -d' ' -f1
check	[ "__NS_MD5__" = "__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	[ "__HOST_MD5__" = "__MD5__" ]

test	UDP/IPv6: guest to 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__))
guest	cat test.bin | nc -u -q1 -N __GW6__%__IFNAME__ 10002
hostw
hout	HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
check	[ "__HOST_MD5__" = "__MD5__" ]

test	UDP/IPv6: ns to host (recvmmsg/sendmmsg)
host	:> __TEMP__
hostb	(nc -u -q1 -6 -l 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__))
ns	cat __TEMP_NS__ | nc -u -q1 -N ::1 10003
hostw
hout	HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
check	[ "__HOST_MD5__" = "__MD5__" ]

test	UDP/IPv6: ns to host (via tap)
host	:> __TEMP__
hostb	(nc -u -q1 -6 -l 10003 & echo $! > __NC_PID__) | tee __TEMP__ | (grep -qm1 "END_OF_TEST" && kill $(cat __NC_PID__))
nsout	IFNAME ip -j link show | jq -rM '.[] | select(.link_type == "ether").ifname'
ns	cat __TEMP_NS__ | nc -u -q1 -N __GW6__%__IFNAME__ 10003
hostw
hout	HOST_MD5 md5sum __TEMP__ | cut -d' ' -f1
check	[ "__HOST_MD5__" = "__MD5__" ]

test	UDP/IPv6: ns to guest (using loopback address)
guestb	(nc -u -q1 -6 -l 10001 & echo $! > nc.pid) | tee test.bin | (grep -qm1 "END_OF_TEST" && kill $(cat nc.pid))
ns	cat __TEMP_NS__ | nc -u -q1 -N ::1 10001
guestw
gout	GUEST_MD5 md5sum test.bin | cut -d' ' -f1
check	[ "__GUEST_MD5__" = "__MD5__" ]

test	UDP/IPv6: ns to guest (using namespace address)
guestb	(nc -u -q1 -6 -l 10001 & echo $! > nc.pid) | tee test.bin | (grep -qm1 "END_OF_TEST" && kill $(cat nc.pid))
nsout	ADDR6 ip -j -6 addr show|jq -rM '.[] | select(.ifname == "__IFNAME__").addr_info[0].local'
ns	cat __TEMP_NS__ | nc -u -q1 -N __ADDR6__ 10001
guestw
gout	GUEST_MD5 md5sum test.bin | cut -d' ' -f1
check	[ "__GUEST_MD5__" = "__MD5__" ]

debug log:

solving 71bda04 ...
found 71bda04 in https://passt.top/passt

Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).