Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests: net: Test headroom handling of ip6_gre devices

Commit 5691484df961 ("net: ip6_gre: Fix headroom request in
ip6erspan_tunnel_xmit()") and commit 01b8d064d58b ("net: ip6_gre:
Request headroom in __gre6_xmit()") fix problems in reserving headroom
in the packets tunneled through ip6gre/tap and ip6erspan netdevices.

These two patches included snippets that reproduced the issues. This
patch elevates the snippets to a full-fledged test case.

Suggested-by: David Miller <davem@davemloft.net>
Signed-off-by: Petr Machata <petrm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Petr Machata and committed by
David S. Miller
99672eb6 16572a48

+65
+65
tools/testing/selftests/net/ip6_gre_headroom.sh
··· 1 + #!/bin/bash 2 + # SPDX-License-Identifier: GPL-2.0 3 + # 4 + # Test that enough headroom is reserved for the first packet passing through an 5 + # IPv6 GRE-like netdevice. 6 + 7 + setup_prepare() 8 + { 9 + ip link add h1 type veth peer name swp1 10 + ip link add h3 type veth peer name swp3 11 + 12 + ip link set dev h1 up 13 + ip address add 192.0.2.1/28 dev h1 14 + 15 + ip link add dev vh3 type vrf table 20 16 + ip link set dev h3 master vh3 17 + ip link set dev vh3 up 18 + ip link set dev h3 up 19 + 20 + ip link set dev swp3 up 21 + ip address add dev swp3 2001:db8:2::1/64 22 + ip address add dev swp3 2001:db8:2::3/64 23 + 24 + ip link set dev swp1 up 25 + tc qdisc add dev swp1 clsact 26 + 27 + ip link add name er6 type ip6erspan \ 28 + local 2001:db8:2::1 remote 2001:db8:2::2 oseq okey 123 29 + ip link set dev er6 up 30 + 31 + ip link add name gt6 type ip6gretap \ 32 + local 2001:db8:2::3 remote 2001:db8:2::4 33 + ip link set dev gt6 up 34 + 35 + sleep 1 36 + } 37 + 38 + cleanup() 39 + { 40 + ip link del dev gt6 41 + ip link del dev er6 42 + ip link del dev swp1 43 + ip link del dev swp3 44 + ip link del dev vh3 45 + } 46 + 47 + test_headroom() 48 + { 49 + local type=$1; shift 50 + local tundev=$1; shift 51 + 52 + tc filter add dev swp1 ingress pref 1000 matchall skip_hw \ 53 + action mirred egress mirror dev $tundev 54 + ping -I h1 192.0.2.2 -c 1 -w 2 &> /dev/null 55 + tc filter del dev swp1 ingress pref 1000 56 + 57 + # If it doesn't panic, it passes. 58 + printf "TEST: %-60s [PASS]\n" "$type headroom" 59 + } 60 + 61 + trap cleanup EXIT 62 + 63 + setup_prepare 64 + test_headroom ip6gretap gt6 65 + test_headroom ip6erspan er6