xref: /linux/tools/testing/selftests/net/psock_snd.sh (revision 762f99f4f3cb41a775b5157dd761217beba65873)
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