96 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03#4# Run a series of packet socket send regression tests5 6set -e7 8readonly mtu=15009readonly iphlen=2010readonly udphlen=811 12readonly vnet_hlen=1013readonly eth_hlen=1414 15readonly mss="$((${mtu} - ${iphlen} - ${udphlen}))"16readonly mss_exceeds="$((${mss} + 1))"17 18readonly max_mtu=6553519readonly max_mss="$((${max_mtu} - ${iphlen} - ${udphlen}))"20readonly max_mss_exceeds="$((${max_mss} + 1))"21 22# functional checks (not a full cross-product)23 24echo "dgram"25./in_netns.sh ./psock_snd -d26 27echo "dgram bind"28./in_netns.sh ./psock_snd -d -b29 30echo "raw"31./in_netns.sh ./psock_snd32 33echo "raw bind"34./in_netns.sh ./psock_snd -b35 36echo "raw qdisc bypass"37./in_netns.sh ./psock_snd -q38 39echo "raw vlan"40./in_netns.sh ./psock_snd -V41 42echo "raw vnet hdr"43./in_netns.sh ./psock_snd -v44 45echo "raw csum_off"46./in_netns.sh ./psock_snd -v -c47 48echo "raw csum_off with bad offset (expected to fail)"49(! ./in_netns.sh ./psock_snd -v -c -C)50 51 52# bounds check: send {max, max + 1, min, min - 1} lengths53 54echo "raw min size"55./in_netns.sh ./psock_snd -l 056 57echo "raw mtu size"58./in_netns.sh ./psock_snd -l "${mss}"59 60echo "raw mtu size + 1 (expected to fail)"61(! ./in_netns.sh ./psock_snd -l "${mss_exceeds}")62 63# fails due to ARPHRD_ETHER check in packet_extra_vlan_len_allowed64#65# echo "raw vlan mtu size"66# ./in_netns.sh ./psock_snd -V -l "${mss}"67 68echo "raw vlan mtu size + 1 (expected to fail)"69(! ./in_netns.sh ./psock_snd -V -l "${mss_exceeds}")70 71echo "dgram mtu size"72./in_netns.sh ./psock_snd -d -l "${mss}"73 74echo "dgram mtu size + 1 (expected to fail)"75(! ./in_netns.sh ./psock_snd -d -l "${mss_exceeds}")76 77echo "raw truncate hlen (expected to fail: does not arrive)"78(! ./in_netns.sh ./psock_snd -t "$((${vnet_hlen} + ${eth_hlen}))")79 80echo "raw truncate hlen - 1 (expected to fail: EINVAL)"81(! ./in_netns.sh ./psock_snd -t "$((${vnet_hlen} + ${eth_hlen} - 1))")82 83 84# gso checks: implies -l, because with gso len must exceed gso_size85 86echo "raw gso min size"87./in_netns.sh ./psock_snd -v -c -g -l "${mss_exceeds}"88 89echo "raw gso max size"90./in_netns.sh ./psock_snd -v -c -g -l "${max_mss}"91 92echo "raw gso max size + 1 (expected to fail)"93(! ./in_netns.sh ./psock_snd -v -c -g -l "${max_mss_exceeds}")94 95echo "OK. All tests passed"96