Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
0003 #
0004 # Test that enough headroom is reserved for the first packet passing through an
0005 # IPv6 GRE-like netdevice.
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         # If it doesn't panic, it passes.
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