1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3 4# This test uses standard topology for testing gretap. See 5# mirror_gre_topo_lib.sh for more details. 6# 7# This tests flower-triggered mirroring to gretap and ip6gretap netdevices. The 8# interfaces on H1 and H2 have two addresses each. Flower match on one of the 9# addresses is configured with mirror action. It is expected that when pinging 10# this address, mirroring takes place, whereas when pinging the other one, 11# there's no mirroring. 12 13ALL_TESTS=" 14 test_gretap 15 test_ip6gretap 16" 17 18NUM_NETIFS=6 19source lib.sh 20source mirror_lib.sh 21source mirror_gre_lib.sh 22source mirror_gre_topo_lib.sh 23 24setup_prepare() 25{ 26 h1=${NETIFS[p1]} 27 swp1=${NETIFS[p2]} 28 29 swp2=${NETIFS[p3]} 30 h2=${NETIFS[p4]} 31 32 swp3=${NETIFS[p5]} 33 h3=${NETIFS[p6]} 34 35 vrf_prepare 36 mirror_gre_topo_create 37 38 ip address add dev $swp3 192.0.2.129/28 39 ip address add dev $h3 192.0.2.130/28 40 41 ip address add dev $swp3 2001:db8:2::1/64 42 ip address add dev $h3 2001:db8:2::2/64 43 44 ip address add dev $h1 192.0.2.3/28 45 ip address add dev $h2 192.0.2.4/28 46} 47 48cleanup() 49{ 50 pre_cleanup 51 52 ip address del dev $h2 192.0.2.4/28 53 ip address del dev $h1 192.0.2.3/28 54 55 ip address del dev $h3 2001:db8:2::2/64 56 ip address del dev $swp3 2001:db8:2::1/64 57 58 ip address del dev $h3 192.0.2.130/28 59 ip address del dev $swp3 192.0.2.129/28 60 61 mirror_gre_topo_destroy 62 vrf_cleanup 63} 64 65test_span_gre_dir_acl() 66{ 67 test_span_gre_dir_ips "$@" 192.0.2.3 192.0.2.4 68} 69 70fail_test_span_gre_dir_acl() 71{ 72 fail_test_span_gre_dir_ips "$@" 192.0.2.3 192.0.2.4 73} 74 75full_test_span_gre_dir_acl() 76{ 77 local tundev=$1; shift 78 local direction=$1; shift 79 local forward_type=$1; shift 80 local backward_type=$1; shift 81 local match_dip=$1; shift 82 local what=$1; shift 83 84 RET=0 85 86 mirror_install $swp1 $direction $tundev \ 87 "protocol ip flower $tcflags dst_ip $match_dip" 88 fail_test_span_gre_dir $tundev $direction 89 test_span_gre_dir_acl "$tundev" "$direction" \ 90 "$forward_type" "$backward_type" 91 mirror_uninstall $swp1 $direction 92 93 # Test lack of mirroring after ACL mirror is uninstalled. 94 fail_test_span_gre_dir_acl "$tundev" "$direction" 95 96 log_test "$direction $what ($tcflags)" 97} 98 99test_gretap() 100{ 101 full_test_span_gre_dir_acl gt4 ingress 8 0 192.0.2.4 "ACL mirror to gretap" 102 full_test_span_gre_dir_acl gt4 egress 0 8 192.0.2.3 "ACL mirror to gretap" 103} 104 105test_ip6gretap() 106{ 107 full_test_span_gre_dir_acl gt6 ingress 8 0 192.0.2.4 "ACL mirror to ip6gretap" 108 full_test_span_gre_dir_acl gt6 egress 0 8 192.0.2.3 "ACL mirror to ip6gretap" 109} 110 111test_all() 112{ 113 slow_path_trap_install $swp1 ingress 114 slow_path_trap_install $swp1 egress 115 116 tests_run 117 118 slow_path_trap_uninstall $swp1 egress 119 slow_path_trap_uninstall $swp1 ingress 120} 121 122trap cleanup EXIT 123 124setup_prepare 125setup_wait 126 127tcflags="skip_hw" 128test_all 129 130if ! tc_offload_check; then 131 echo "WARN: Could not test offloaded functionality" 132else 133 tcflags="skip_sw" 134 test_all 135fi 136 137exit $EXIT_STATUS 138