linux/tools/testing/selftests/net/ip6_gre_headroom.sh
<<
>>
Prefs
   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
   7setup_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
  38cleanup()
  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
  47test_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
  61trap cleanup EXIT
  62
  63setup_prepare
  64test_headroom ip6gretap gt6
  65test_headroom ip6erspan er6
  66