Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
0003 
0004 # Test for "tc action mirred egress mirror" when the underlay route points at a
0005 # bridge device without vlan filtering (802.1d).
0006 #
0007 # This test uses standard topology for testing mirror-to-gretap. See
0008 # mirror_gre_topo_lib.sh for more details. The full topology is as follows:
0009 #
0010 #  +---------------------+                             +---------------------+
0011 #  | H1                  |                             |                  H2 |
0012 #  |     + $h1           |                             |           $h2 +     |
0013 #  |     | 192.0.2.1/28  |                             |  192.0.2.2/28 |     |
0014 #  +-----|---------------+                             +---------------|-----+
0015 #        |                                                             |
0016 #  +-----|-------------------------------------------------------------|-----+
0017 #  | SW  o---> mirror                                                  |     |
0018 #  | +---|-------------------------------------------------------------|---+ |
0019 #  | |   + $swp1            + br1 (802.1q bridge)                $swp2 +   | |
0020 #  | +---------------------------------------------------------------------+ |
0021 #  |                                                                         |
0022 #  | +---------------------------------------------------------------------+ |
0023 #  | |                      + br2 (802.1d bridge)                          | |
0024 #  | |                        192.0.2.129/28                               | |
0025 #  | |   + $swp3              2001:db8:2::1/64                             | |
0026 #  | +---|-----------------------------------------------------------------+ |
0027 #  |     |                                          ^                    ^   |
0028 #  |     |                     + gt6 (ip6gretap)    | + gt4 (gretap)     |   |
0029 #  |     |                     : loc=2001:db8:2::1  | : loc=192.0.2.129  |   |
0030 #  |     |                     : rem=2001:db8:2::2 -+ : rem=192.0.2.130 -+   |
0031 #  |     |                     : ttl=100              : ttl=100              |
0032 #  |     |                     : tos=inherit          : tos=inherit          |
0033 #  +-----|---------------------:----------------------:----------------------+
0034 #        |                     :                      :
0035 #  +-----|---------------------:----------------------:----------------------+
0036 #  | H3  + $h3                 + h3-gt6(ip6gretap)    + h3-gt4 (gretap)      |
0037 #  |       192.0.2.130/28        loc=2001:db8:2::2      loc=192.0.2.130      |
0038 #  |       2001:db8:2::2/64      rem=2001:db8:2::1      rem=192.0.2.129      |
0039 #  |                             ttl=100                ttl=100              |
0040 #  |                             tos=inherit            tos=inherit          |
0041 #  +-------------------------------------------------------------------------+
0042 
0043 ALL_TESTS="
0044         test_gretap
0045         test_ip6gretap
0046 "
0047 
0048 NUM_NETIFS=6
0049 source lib.sh
0050 source mirror_lib.sh
0051 source mirror_gre_lib.sh
0052 source mirror_gre_topo_lib.sh
0053 
0054 setup_prepare()
0055 {
0056         h1=${NETIFS[p1]}
0057         swp1=${NETIFS[p2]}
0058 
0059         swp2=${NETIFS[p3]}
0060         h2=${NETIFS[p4]}
0061 
0062         swp3=${NETIFS[p5]}
0063         h3=${NETIFS[p6]}
0064 
0065         vrf_prepare
0066         mirror_gre_topo_create
0067 
0068         ip link add name br2 type bridge vlan_filtering 0
0069         ip link set dev br2 up
0070 
0071         ip link set dev $swp3 master br2
0072         ip route add 192.0.2.130/32 dev br2
0073         ip -6 route add 2001:db8:2::2/128 dev br2
0074 
0075         ip address add dev br2 192.0.2.129/28
0076         ip address add dev br2 2001:db8:2::1/64
0077 
0078         ip address add dev $h3 192.0.2.130/28
0079         ip address add dev $h3 2001:db8:2::2/64
0080 }
0081 
0082 cleanup()
0083 {
0084         pre_cleanup
0085 
0086         ip address del dev $h3 2001:db8:2::2/64
0087         ip address del dev $h3 192.0.2.130/28
0088         ip link del dev br2
0089 
0090         mirror_gre_topo_destroy
0091         vrf_cleanup
0092 }
0093 
0094 test_gretap()
0095 {
0096         full_test_span_gre_dir gt4 ingress 8 0 "mirror to gretap"
0097         full_test_span_gre_dir gt4 egress 0 8 "mirror to gretap"
0098 }
0099 
0100 test_ip6gretap()
0101 {
0102         full_test_span_gre_dir gt6 ingress 8 0 "mirror to ip6gretap"
0103         full_test_span_gre_dir gt6 egress 0 8 "mirror to ip6gretap"
0104 }
0105 
0106 test_all()
0107 {
0108         slow_path_trap_install $swp1 ingress
0109         slow_path_trap_install $swp1 egress
0110 
0111         tests_run
0112 
0113         slow_path_trap_uninstall $swp1 egress
0114         slow_path_trap_uninstall $swp1 ingress
0115 }
0116 
0117 trap cleanup EXIT
0118 
0119 setup_prepare
0120 setup_wait
0121 
0122 tcflags="skip_hw"
0123 test_all
0124 
0125 if ! tc_offload_check; then
0126         echo "WARN: Could not test offloaded functionality"
0127 else
0128         tcflags="skip_sw"
0129         test_all
0130 fi
0131 
0132 exit $EXIT_STATUS