d45f5fa8b4
udpgso regression test configures routing and device MTU directly through uAPI (Netlink, ioctl) to do its job. While there is nothing wrong with it, it takes more effort than doing it from shell. Looking forward, we would like to extend the udpgso regression tests to cover the EIO corner case [1], once it gets addressed. That will require a dummy device and device feature manipulation to set it up. Which means more Netlink code. So, in preparation, pull out network configuration into the shell script part of the test, so it is easily extendable in the future. Also, because it now easy to setup routing, add a second local IPv6 address. Because the second address is not managed by the kernel, we can "replace" the corresponding local route with a reduced-MTU one. This unblocks the disabled "ipv6 connected" test case. Add a similar setup for IPv4 for symmetry. [1] https://lore.kernel.org/netdev/87jzqsld6q.fsf@cloudflare.com/ Reviewed-by: Willem de Bruijn <willemb@google.com> Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com> Link: https://lore.kernel.org/r/20240207-jakub-krn-635-v3-1-3dfa3da8a7d3@cloudflare.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
59 lines
1.3 KiB
Bash
Executable File
59 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Run a series of udpgso regression tests
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
|
|
setup_loopback() {
|
|
ip addr add dev lo 10.0.0.1/32
|
|
ip addr add dev lo fd00::1/128 nodad noprefixroute
|
|
}
|
|
|
|
test_dev_mtu() {
|
|
setup_loopback
|
|
# Reduce loopback MTU
|
|
ip link set dev lo mtu 1500
|
|
}
|
|
|
|
test_route_mtu() {
|
|
setup_loopback
|
|
# Remove default local routes
|
|
ip route del local 10.0.0.1/32 table local dev lo
|
|
ip route del local fd00::1/128 table local dev lo
|
|
# Install local routes with reduced MTU
|
|
ip route add local 10.0.0.1/32 table local dev lo mtu 1500
|
|
ip route add local fd00::1/128 table local dev lo mtu 1500
|
|
}
|
|
|
|
if [ "$#" -gt 0 ]; then
|
|
"$1"
|
|
shift 2 # pop "test_*" arg and "--" delimiter
|
|
exec "$@"
|
|
fi
|
|
|
|
echo "ipv4 cmsg"
|
|
./in_netns.sh "$0" test_dev_mtu -- ./udpgso -4 -C
|
|
|
|
echo "ipv4 setsockopt"
|
|
./in_netns.sh "$0" test_dev_mtu -- ./udpgso -4 -C -s
|
|
|
|
echo "ipv6 cmsg"
|
|
./in_netns.sh "$0" test_dev_mtu -- ./udpgso -6 -C
|
|
|
|
echo "ipv6 setsockopt"
|
|
./in_netns.sh "$0" test_dev_mtu -- ./udpgso -6 -C -s
|
|
|
|
echo "ipv4 connected"
|
|
./in_netns.sh "$0" test_route_mtu -- ./udpgso -4 -c
|
|
|
|
echo "ipv6 connected"
|
|
./in_netns.sh "$0" test_route_mtu -- ./udpgso -6 -c
|
|
|
|
echo "ipv4 msg_more"
|
|
./in_netns.sh "$0" test_dev_mtu -- ./udpgso -4 -C -m
|
|
|
|
echo "ipv6 msg_more"
|
|
./in_netns.sh "$0" test_dev_mtu -- ./udpgso -6 -C -m
|