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