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