mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.3 KiB
98 lines
2.3 KiB
#!/bin/bash |
|
# SPDX-License-Identifier: GPL-2.0 |
|
# |
|
# Run a series of packet socket send regression tests |
|
|
|
set -e |
|
|
|
readonly mtu=1500 |
|
readonly iphlen=20 |
|
readonly udphlen=8 |
|
|
|
readonly vnet_hlen=10 |
|
readonly eth_hlen=14 |
|
|
|
readonly mss="$((${mtu} - ${iphlen} - ${udphlen}))" |
|
readonly mss_exceeds="$((${mss} + 1))" |
|
|
|
readonly max_mtu=65535 |
|
readonly max_mss="$((${max_mtu} - ${iphlen} - ${udphlen}))" |
|
readonly max_mss_exceeds="$((${max_mss} + 1))" |
|
|
|
# functional checks (not a full cross-product) |
|
|
|
echo "dgram" |
|
./in_netns.sh ./psock_snd -d |
|
|
|
echo "dgram bind" |
|
./in_netns.sh ./psock_snd -d -b |
|
|
|
echo "raw" |
|
./in_netns.sh ./psock_snd |
|
|
|
echo "raw bind" |
|
./in_netns.sh ./psock_snd -b |
|
|
|
echo "raw qdisc bypass" |
|
./in_netns.sh ./psock_snd -q |
|
|
|
echo "raw vlan" |
|
./in_netns.sh ./psock_snd -V |
|
|
|
echo "raw vnet hdr" |
|
./in_netns.sh ./psock_snd -v |
|
|
|
echo "raw csum_off" |
|
./in_netns.sh ./psock_snd -v -c |
|
|
|
echo "raw csum_off with bad offset (expected to fail)" |
|
(! ./in_netns.sh ./psock_snd -v -c -C) |
|
|
|
|
|
# bounds check: send {max, max + 1, min, min - 1} lengths |
|
|
|
echo "raw min size" |
|
./in_netns.sh ./psock_snd -l 0 |
|
|
|
echo "raw mtu size" |
|
./in_netns.sh ./psock_snd -l "${mss}" |
|
|
|
echo "raw mtu size + 1 (expected to fail)" |
|
(! ./in_netns.sh ./psock_snd -l "${mss_exceeds}") |
|
|
|
# fails due to ARPHRD_ETHER check in packet_extra_vlan_len_allowed |
|
# |
|
# echo "raw vlan mtu size" |
|
# ./in_netns.sh ./psock_snd -V -l "${mss}" |
|
|
|
echo "raw vlan mtu size + 1 (expected to fail)" |
|
(! ./in_netns.sh ./psock_snd -V -l "${mss_exceeds}") |
|
|
|
echo "dgram mtu size" |
|
./in_netns.sh ./psock_snd -d -l "${mss}" |
|
|
|
echo "dgram mtu size + 1 (expected to fail)" |
|
(! ./in_netns.sh ./psock_snd -d -l "${mss_exceeds}") |
|
|
|
echo "raw truncate hlen (expected to fail: does not arrive)" |
|
(! ./in_netns.sh ./psock_snd -t "$((${vnet_hlen} + ${eth_hlen}))") |
|
|
|
echo "raw truncate hlen - 1 (expected to fail: EINVAL)" |
|
(! ./in_netns.sh ./psock_snd -t "$((${vnet_hlen} + ${eth_hlen} - 1))") |
|
|
|
|
|
# gso checks: implies -l, because with gso len must exceed gso_size |
|
|
|
echo "raw gso min size" |
|
./in_netns.sh ./psock_snd -v -c -g -l "${mss_exceeds}" |
|
|
|
echo "raw gso min size - 1 (expected to fail)" |
|
(! ./in_netns.sh ./psock_snd -v -c -g -l "${mss}") |
|
|
|
echo "raw gso max size" |
|
./in_netns.sh ./psock_snd -v -c -g -l "${max_mss}" |
|
|
|
echo "raw gso max size + 1 (expected to fail)" |
|
(! ./in_netns.sh ./psock_snd -v -c -g -l "${max_mss_exceeds}") |
|
|
|
echo "OK. All tests passed"
|
|
|