175f0139fSWillem de Bruijn#!/bin/bash 275f0139fSWillem de Bruijn# SPDX-License-Identifier: GPL-2.0 375f0139fSWillem de Bruijn# 475f0139fSWillem de Bruijn# Run a series of packet socket send regression tests 575f0139fSWillem de Bruijn 675f0139fSWillem de Bruijnset -e 775f0139fSWillem de Bruijn 875f0139fSWillem de Bruijnreadonly mtu=1500 975f0139fSWillem de Bruijnreadonly iphlen=20 1075f0139fSWillem de Bruijnreadonly udphlen=8 1175f0139fSWillem de Bruijn 1275f0139fSWillem de Bruijnreadonly vnet_hlen=10 1375f0139fSWillem de Bruijnreadonly eth_hlen=14 1475f0139fSWillem de Bruijn 1575f0139fSWillem de Bruijnreadonly mss="$((${mtu} - ${iphlen} - ${udphlen}))" 1675f0139fSWillem de Bruijnreadonly mss_exceeds="$((${mss} + 1))" 1775f0139fSWillem de Bruijn 1875f0139fSWillem de Bruijnreadonly max_mtu=65535 1975f0139fSWillem de Bruijnreadonly max_mss="$((${max_mtu} - ${iphlen} - ${udphlen}))" 2075f0139fSWillem de Bruijnreadonly max_mss_exceeds="$((${max_mss} + 1))" 2175f0139fSWillem de Bruijn 2275f0139fSWillem de Bruijn# functional checks (not a full cross-product) 2375f0139fSWillem de Bruijn 2475f0139fSWillem de Bruijnecho "dgram" 2575f0139fSWillem de Bruijn./in_netns.sh ./psock_snd -d 2675f0139fSWillem de Bruijn 2775f0139fSWillem de Bruijnecho "dgram bind" 2875f0139fSWillem de Bruijn./in_netns.sh ./psock_snd -d -b 2975f0139fSWillem de Bruijn 3075f0139fSWillem de Bruijnecho "raw" 3175f0139fSWillem de Bruijn./in_netns.sh ./psock_snd 3275f0139fSWillem de Bruijn 3375f0139fSWillem de Bruijnecho "raw bind" 3475f0139fSWillem de Bruijn./in_netns.sh ./psock_snd -b 3575f0139fSWillem de Bruijn 3675f0139fSWillem de Bruijnecho "raw qdisc bypass" 3775f0139fSWillem de Bruijn./in_netns.sh ./psock_snd -q 3875f0139fSWillem de Bruijn 3975f0139fSWillem de Bruijnecho "raw vlan" 4075f0139fSWillem de Bruijn./in_netns.sh ./psock_snd -V 4175f0139fSWillem de Bruijn 4275f0139fSWillem de Bruijnecho "raw vnet hdr" 4375f0139fSWillem de Bruijn./in_netns.sh ./psock_snd -v 4475f0139fSWillem de Bruijn 4575f0139fSWillem de Bruijnecho "raw csum_off" 4675f0139fSWillem de Bruijn./in_netns.sh ./psock_snd -v -c 4775f0139fSWillem de Bruijn 4830ae8017SPo-Hsu Linecho "raw csum_off with bad offset (expected to fail)" 4975f0139fSWillem de Bruijn(! ./in_netns.sh ./psock_snd -v -c -C) 5075f0139fSWillem de Bruijn 5175f0139fSWillem de Bruijn 5275f0139fSWillem de Bruijn# bounds check: send {max, max + 1, min, min - 1} lengths 5375f0139fSWillem de Bruijn 5475f0139fSWillem de Bruijnecho "raw min size" 5575f0139fSWillem de Bruijn./in_netns.sh ./psock_snd -l 0 5675f0139fSWillem de Bruijn 5775f0139fSWillem de Bruijnecho "raw mtu size" 5875f0139fSWillem de Bruijn./in_netns.sh ./psock_snd -l "${mss}" 5975f0139fSWillem de Bruijn 6030ae8017SPo-Hsu Linecho "raw mtu size + 1 (expected to fail)" 6175f0139fSWillem de Bruijn(! ./in_netns.sh ./psock_snd -l "${mss_exceeds}") 6275f0139fSWillem de Bruijn 6375f0139fSWillem de Bruijn# fails due to ARPHRD_ETHER check in packet_extra_vlan_len_allowed 6475f0139fSWillem de Bruijn# 6575f0139fSWillem de Bruijn# echo "raw vlan mtu size" 6675f0139fSWillem de Bruijn# ./in_netns.sh ./psock_snd -V -l "${mss}" 6775f0139fSWillem de Bruijn 6830ae8017SPo-Hsu Linecho "raw vlan mtu size + 1 (expected to fail)" 6975f0139fSWillem de Bruijn(! ./in_netns.sh ./psock_snd -V -l "${mss_exceeds}") 7075f0139fSWillem de Bruijn 7175f0139fSWillem de Bruijnecho "dgram mtu size" 7275f0139fSWillem de Bruijn./in_netns.sh ./psock_snd -d -l "${mss}" 7375f0139fSWillem de Bruijn 7430ae8017SPo-Hsu Linecho "dgram mtu size + 1 (expected to fail)" 7575f0139fSWillem de Bruijn(! ./in_netns.sh ./psock_snd -d -l "${mss_exceeds}") 7675f0139fSWillem de Bruijn 7730ae8017SPo-Hsu Linecho "raw truncate hlen (expected to fail: does not arrive)" 7875f0139fSWillem de Bruijn(! ./in_netns.sh ./psock_snd -t "$((${vnet_hlen} + ${eth_hlen}))") 7975f0139fSWillem de Bruijn 8030ae8017SPo-Hsu Linecho "raw truncate hlen - 1 (expected to fail: EINVAL)" 8175f0139fSWillem de Bruijn(! ./in_netns.sh ./psock_snd -t "$((${vnet_hlen} + ${eth_hlen} - 1))") 8275f0139fSWillem de Bruijn 8375f0139fSWillem de Bruijn 8475f0139fSWillem de Bruijn# gso checks: implies -l, because with gso len must exceed gso_size 8575f0139fSWillem de Bruijn 8675f0139fSWillem de Bruijnecho "raw gso min size" 8775f0139fSWillem de Bruijn./in_netns.sh ./psock_snd -v -c -g -l "${mss_exceeds}" 8875f0139fSWillem de Bruijn 8975f0139fSWillem de Bruijnecho "raw gso max size" 9075f0139fSWillem de Bruijn./in_netns.sh ./psock_snd -v -c -g -l "${max_mss}" 9175f0139fSWillem de Bruijn 9230ae8017SPo-Hsu Linecho "raw gso max size + 1 (expected to fail)" 9375f0139fSWillem de Bruijn(! ./in_netns.sh ./psock_snd -v -c -g -l "${max_mss_exceeds}") 9475f0139fSWillem de Bruijn 9575f0139fSWillem de Bruijnecho "OK. All tests passed" 96