0001
0002
0003
0004
0005
0006
0007 setup_prepare()
0008 {
0009 ip link add h1 type veth peer name swp1
0010 ip link add h3 type veth peer name swp3
0011
0012 ip link set dev h1 up
0013 ip address add 192.0.2.1/28 dev h1
0014
0015 ip link add dev vh3 type vrf table 20
0016 ip link set dev h3 master vh3
0017 ip link set dev vh3 up
0018 ip link set dev h3 up
0019
0020 ip link set dev swp3 up
0021 ip address add dev swp3 2001:db8:2::1/64
0022 ip address add dev swp3 2001:db8:2::3/64
0023
0024 ip link set dev swp1 up
0025 tc qdisc add dev swp1 clsact
0026
0027 ip link add name er6 type ip6erspan \
0028 local 2001:db8:2::1 remote 2001:db8:2::2 oseq okey 123
0029 ip link set dev er6 up
0030
0031 ip link add name gt6 type ip6gretap \
0032 local 2001:db8:2::3 remote 2001:db8:2::4
0033 ip link set dev gt6 up
0034
0035 sleep 1
0036 }
0037
0038 cleanup()
0039 {
0040 ip link del dev gt6
0041 ip link del dev er6
0042 ip link del dev swp1
0043 ip link del dev swp3
0044 ip link del dev vh3
0045 }
0046
0047 test_headroom()
0048 {
0049 local type=$1; shift
0050 local tundev=$1; shift
0051
0052 tc filter add dev swp1 ingress pref 1000 matchall skip_hw \
0053 action mirred egress mirror dev $tundev
0054 ping -I h1 192.0.2.2 -c 1 -w 2 &> /dev/null
0055 tc filter del dev swp1 ingress pref 1000
0056
0057
0058 printf "TEST: %-60s [PASS]\n" "$type headroom"
0059 }
0060
0061 trap cleanup EXIT
0062
0063 setup_prepare
0064 test_headroom ip6gretap gt6
0065 test_headroom ip6erspan er6