Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
0003 #
0004 # Run a series of packet socket send regression tests
0005 
0006 set -e
0007 
0008 readonly mtu=1500
0009 readonly iphlen=20
0010 readonly udphlen=8
0011 
0012 readonly vnet_hlen=10
0013 readonly eth_hlen=14
0014 
0015 readonly mss="$((${mtu} - ${iphlen} - ${udphlen}))"
0016 readonly mss_exceeds="$((${mss} + 1))"
0017 
0018 readonly max_mtu=65535
0019 readonly max_mss="$((${max_mtu} - ${iphlen} - ${udphlen}))"
0020 readonly max_mss_exceeds="$((${max_mss} + 1))"
0021 
0022 # functional checks (not a full cross-product)
0023 
0024 echo "dgram"
0025 ./in_netns.sh ./psock_snd -d
0026 
0027 echo "dgram bind"
0028 ./in_netns.sh ./psock_snd -d -b
0029 
0030 echo "raw"
0031 ./in_netns.sh ./psock_snd
0032 
0033 echo "raw bind"
0034 ./in_netns.sh ./psock_snd -b
0035 
0036 echo "raw qdisc bypass"
0037 ./in_netns.sh ./psock_snd -q
0038 
0039 echo "raw vlan"
0040 ./in_netns.sh ./psock_snd -V
0041 
0042 echo "raw vnet hdr"
0043 ./in_netns.sh ./psock_snd -v
0044 
0045 echo "raw csum_off"
0046 ./in_netns.sh ./psock_snd -v -c
0047 
0048 echo "raw csum_off with bad offset (expected to fail)"
0049 (! ./in_netns.sh ./psock_snd -v -c -C)
0050 
0051 
0052 # bounds check: send {max, max + 1, min, min - 1} lengths
0053 
0054 echo "raw min size"
0055 ./in_netns.sh ./psock_snd -l 0
0056 
0057 echo "raw mtu size"
0058 ./in_netns.sh ./psock_snd -l "${mss}"
0059 
0060 echo "raw mtu size + 1 (expected to fail)"
0061 (! ./in_netns.sh ./psock_snd -l "${mss_exceeds}")
0062 
0063 # fails due to ARPHRD_ETHER check in packet_extra_vlan_len_allowed
0064 #
0065 # echo "raw vlan mtu size"
0066 # ./in_netns.sh ./psock_snd -V -l "${mss}"
0067 
0068 echo "raw vlan mtu size + 1 (expected to fail)"
0069 (! ./in_netns.sh ./psock_snd -V -l "${mss_exceeds}")
0070 
0071 echo "dgram mtu size"
0072 ./in_netns.sh ./psock_snd -d -l "${mss}"
0073 
0074 echo "dgram mtu size + 1 (expected to fail)"
0075 (! ./in_netns.sh ./psock_snd -d -l "${mss_exceeds}")
0076 
0077 echo "raw truncate hlen (expected to fail: does not arrive)"
0078 (! ./in_netns.sh ./psock_snd -t "$((${vnet_hlen} + ${eth_hlen}))")
0079 
0080 echo "raw truncate hlen - 1 (expected to fail: EINVAL)"
0081 (! ./in_netns.sh ./psock_snd -t "$((${vnet_hlen} + ${eth_hlen} - 1))")
0082 
0083 
0084 # gso checks: implies -l, because with gso len must exceed gso_size
0085 
0086 echo "raw gso min size"
0087 ./in_netns.sh ./psock_snd -v -c -g -l "${mss_exceeds}"
0088 
0089 echo "raw gso max size"
0090 ./in_netns.sh ./psock_snd -v -c -g -l "${max_mss}"
0091 
0092 echo "raw gso max size + 1 (expected to fail)"
0093 (! ./in_netns.sh ./psock_snd -v -c -g -l "${max_mss_exceeds}")
0094 
0095 echo "OK. All tests passed"