116608bfeSPetr Machata#!/bin/bash 216608bfeSPetr Machata# SPDX-License-Identifier: GPL-2.0 316608bfeSPetr Machata 416608bfeSPetr Machata# This test uses standard topology for testing gretap. See 516608bfeSPetr Machata# mirror_gre_topo_lib.sh for more details. 616608bfeSPetr Machata# 716608bfeSPetr Machata# This tests flower-triggered mirroring to gretap and ip6gretap netdevices. The 816608bfeSPetr Machata# interfaces on H1 and H2 have two addresses each. Flower match on one of the 916608bfeSPetr Machata# addresses is configured with mirror action. It is expected that when pinging 1016608bfeSPetr Machata# this address, mirroring takes place, whereas when pinging the other one, 1116608bfeSPetr Machata# there's no mirroring. 1216608bfeSPetr Machata 130eb8053cSIdo SchimmelALL_TESTS=" 140eb8053cSIdo Schimmel test_gretap 150eb8053cSIdo Schimmel test_ip6gretap 160eb8053cSIdo Schimmel" 170eb8053cSIdo Schimmel 1816608bfeSPetr MachataNUM_NETIFS=6 1916608bfeSPetr Machatasource lib.sh 2016608bfeSPetr Machatasource mirror_lib.sh 2116608bfeSPetr Machatasource mirror_gre_lib.sh 2216608bfeSPetr Machatasource mirror_gre_topo_lib.sh 2316608bfeSPetr Machata 2416608bfeSPetr Machatasetup_prepare() 2516608bfeSPetr Machata{ 2616608bfeSPetr Machata h1=${NETIFS[p1]} 2716608bfeSPetr Machata swp1=${NETIFS[p2]} 2816608bfeSPetr Machata 2916608bfeSPetr Machata swp2=${NETIFS[p3]} 3016608bfeSPetr Machata h2=${NETIFS[p4]} 3116608bfeSPetr Machata 3216608bfeSPetr Machata swp3=${NETIFS[p5]} 3316608bfeSPetr Machata h3=${NETIFS[p6]} 3416608bfeSPetr Machata 3516608bfeSPetr Machata vrf_prepare 3616608bfeSPetr Machata mirror_gre_topo_create 3716608bfeSPetr Machata 3816608bfeSPetr Machata ip address add dev $swp3 192.0.2.129/28 3916608bfeSPetr Machata ip address add dev $h3 192.0.2.130/28 4016608bfeSPetr Machata 4116608bfeSPetr Machata ip address add dev $swp3 2001:db8:2::1/64 4216608bfeSPetr Machata ip address add dev $h3 2001:db8:2::2/64 4316608bfeSPetr Machata 4416608bfeSPetr Machata ip address add dev $h1 192.0.2.3/28 4516608bfeSPetr Machata ip address add dev $h2 192.0.2.4/28 4616608bfeSPetr Machata} 4716608bfeSPetr Machata 4816608bfeSPetr Machatacleanup() 4916608bfeSPetr Machata{ 5016608bfeSPetr Machata pre_cleanup 5116608bfeSPetr Machata 5216608bfeSPetr Machata ip address del dev $h2 192.0.2.4/28 5316608bfeSPetr Machata ip address del dev $h1 192.0.2.3/28 5416608bfeSPetr Machata 5516608bfeSPetr Machata ip address del dev $h3 2001:db8:2::2/64 5616608bfeSPetr Machata ip address del dev $swp3 2001:db8:2::1/64 5716608bfeSPetr Machata 5816608bfeSPetr Machata ip address del dev $h3 192.0.2.130/28 5916608bfeSPetr Machata ip address del dev $swp3 192.0.2.129/28 6016608bfeSPetr Machata 6116608bfeSPetr Machata mirror_gre_topo_destroy 6216608bfeSPetr Machata vrf_cleanup 6316608bfeSPetr Machata} 6416608bfeSPetr Machata 6516608bfeSPetr Machatatest_span_gre_dir_acl() 6616608bfeSPetr Machata{ 6716608bfeSPetr Machata test_span_gre_dir_ips "$@" 192.0.2.3 192.0.2.4 6816608bfeSPetr Machata} 6916608bfeSPetr Machata 70a96d81a2SPetr Machatafail_test_span_gre_dir_acl() 71a96d81a2SPetr Machata{ 72a96d81a2SPetr Machata fail_test_span_gre_dir_ips "$@" 192.0.2.3 192.0.2.4 73a96d81a2SPetr Machata} 74a96d81a2SPetr Machata 7516608bfeSPetr Machatafull_test_span_gre_dir_acl() 7616608bfeSPetr Machata{ 7716608bfeSPetr Machata local tundev=$1; shift 7816608bfeSPetr Machata local direction=$1; shift 7916608bfeSPetr Machata local forward_type=$1; shift 8016608bfeSPetr Machata local backward_type=$1; shift 8116608bfeSPetr Machata local match_dip=$1; shift 8216608bfeSPetr Machata local what=$1; shift 8316608bfeSPetr Machata 84084fafe9SPetr Machata RET=0 85084fafe9SPetr Machata 8616608bfeSPetr Machata mirror_install $swp1 $direction $tundev \ 8716608bfeSPetr Machata "protocol ip flower $tcflags dst_ip $match_dip" 8816608bfeSPetr Machata fail_test_span_gre_dir $tundev $direction 8916608bfeSPetr Machata test_span_gre_dir_acl "$tundev" "$direction" \ 9016608bfeSPetr Machata "$forward_type" "$backward_type" 9116608bfeSPetr Machata mirror_uninstall $swp1 $direction 9216608bfeSPetr Machata 93a96d81a2SPetr Machata # Test lack of mirroring after ACL mirror is uninstalled. 94a96d81a2SPetr Machata fail_test_span_gre_dir_acl "$tundev" "$direction" 95a96d81a2SPetr Machata 9616608bfeSPetr Machata log_test "$direction $what ($tcflags)" 9716608bfeSPetr Machata} 9816608bfeSPetr Machata 990eb8053cSIdo Schimmeltest_gretap() 1000eb8053cSIdo Schimmel{ 1010eb8053cSIdo Schimmel full_test_span_gre_dir_acl gt4 ingress 8 0 192.0.2.4 "ACL mirror to gretap" 1020eb8053cSIdo Schimmel full_test_span_gre_dir_acl gt4 egress 0 8 192.0.2.3 "ACL mirror to gretap" 1030eb8053cSIdo Schimmel} 1040eb8053cSIdo Schimmel 1050eb8053cSIdo Schimmeltest_ip6gretap() 1060eb8053cSIdo Schimmel{ 1070eb8053cSIdo Schimmel full_test_span_gre_dir_acl gt6 ingress 8 0 192.0.2.4 "ACL mirror to ip6gretap" 1080eb8053cSIdo Schimmel full_test_span_gre_dir_acl gt6 egress 0 8 192.0.2.3 "ACL mirror to ip6gretap" 1090eb8053cSIdo Schimmel} 1100eb8053cSIdo Schimmel 11116608bfeSPetr Machatatest_all() 11216608bfeSPetr Machata{ 11316608bfeSPetr Machata slow_path_trap_install $swp1 ingress 11416608bfeSPetr Machata slow_path_trap_install $swp1 egress 11516608bfeSPetr Machata 1160eb8053cSIdo Schimmel tests_run 11716608bfeSPetr Machata 11816608bfeSPetr Machata slow_path_trap_uninstall $swp1 egress 11916608bfeSPetr Machata slow_path_trap_uninstall $swp1 ingress 12016608bfeSPetr Machata} 12116608bfeSPetr Machata 12216608bfeSPetr Machatatrap cleanup EXIT 12316608bfeSPetr Machata 12416608bfeSPetr Machatasetup_prepare 12516608bfeSPetr Machatasetup_wait 12616608bfeSPetr Machata 12716608bfeSPetr Machatatcflags="skip_hw" 12816608bfeSPetr Machatatest_all 12916608bfeSPetr Machata 13016608bfeSPetr Machataif ! tc_offload_check; then 13116608bfeSPetr Machata echo "WARN: Could not test offloaded functionality" 13216608bfeSPetr Machataelse 13316608bfeSPetr Machata tcflags="skip_sw" 13416608bfeSPetr Machata test_all 13516608bfeSPetr Machatafi 13616608bfeSPetr Machata 13716608bfeSPetr Machataexit $EXIT_STATUS 138