brintos

brintos / linux-shallow public Read only

0
0
Text · 5.2 KiB · 65ae9d9 Raw
255 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4# This test uses standard topology for testing gretap. See5# mirror_gre_topo_lib.sh for more details.6#7# Test how mirrors to gretap and ip6gretap react to changes to relevant8# configuration.9 10ALL_TESTS="11	test_ttl12	test_tun_up13	test_egress_up14	test_remote_ip15	test_tun_del16	test_route_del17"18 19NUM_NETIFS=620source lib.sh21source mirror_lib.sh22source mirror_gre_lib.sh23source mirror_gre_topo_lib.sh24 25setup_prepare()26{27	h1=${NETIFS[p1]}28	swp1=${NETIFS[p2]}29 30	swp2=${NETIFS[p3]}31	h2=${NETIFS[p4]}32 33	swp3=${NETIFS[p5]}34	h3=${NETIFS[p6]}35 36	vrf_prepare37	mirror_gre_topo_create38 39	# This test downs $swp3, which deletes the configured IPv6 address40	# unless this sysctl is set.41	sysctl_set net.ipv6.conf.$swp3.keep_addr_on_down 142 43	ip address add dev $swp3 192.0.2.129/2844	ip address add dev $h3 192.0.2.130/2845 46	ip address add dev $swp3 2001:db8:2::1/6447	ip address add dev $h3 2001:db8:2::2/6448}49 50cleanup()51{52	pre_cleanup53 54	ip address del dev $h3 2001:db8:2::2/6455	ip address del dev $swp3 2001:db8:2::1/6456 57	ip address del dev $h3 192.0.2.130/2858	ip address del dev $swp3 192.0.2.129/2859 60	sysctl_restore net.ipv6.conf.$swp3.keep_addr_on_down61 62	mirror_gre_topo_destroy63	vrf_cleanup64}65 66test_span_gre_ttl()67{68	local tundev=$1; shift69	local type=$1; shift70	local prot=$1; shift71	local what=$1; shift72 73	RET=074 75	mirror_install $swp1 ingress $tundev \76		"prot ip flower ip_prot icmp"77	tc filter add dev $h3 ingress pref 77 prot $prot \78		flower skip_hw ip_ttl 50 action pass79 80	mirror_test v$h1 192.0.2.1 192.0.2.2 $h3 77 081 82	ip link set dev $tundev type $type ttl 5083	sleep 284	mirror_test v$h1 192.0.2.1 192.0.2.2 $h3 77 ">= 10"85 86	ip link set dev $tundev type $type ttl 10087	tc filter del dev $h3 ingress pref 7788	mirror_uninstall $swp1 ingress89 90	log_test "$what: TTL change"91}92 93test_span_gre_tun_up()94{95	local tundev=$1; shift96	local what=$1; shift97 98	RET=099 100	ip link set dev $tundev down101	mirror_install $swp1 ingress $tundev "matchall"102	fail_test_span_gre_dir $tundev103 104	ip link set dev $tundev up105 106	quick_test_span_gre_dir $tundev107	mirror_uninstall $swp1 ingress108 109	log_test "$what: tunnel down/up"110}111 112test_span_gre_egress_up()113{114	local tundev=$1; shift115	local remote_ip=$1; shift116	local what=$1; shift117 118	RET=0119 120	ip link set dev $swp3 down121	mirror_install $swp1 ingress $tundev "matchall"122	fail_test_span_gre_dir $tundev123 124	# After setting the device up, wait for neighbor to get resolved so that125	# we can expect mirroring to work.126	ip link set dev $swp3 up127	setup_wait_dev $swp3128	ping -c 1 -I $swp3 $remote_ip &>/dev/null129 130	quick_test_span_gre_dir $tundev131	mirror_uninstall $swp1 ingress132 133	log_test "$what: egress down/up"134}135 136test_span_gre_remote_ip()137{138	local tundev=$1; shift139	local type=$1; shift140	local correct_ip=$1; shift141	local wrong_ip=$1; shift142	local what=$1; shift143 144	RET=0145 146	ip link set dev $tundev type $type remote $wrong_ip147	mirror_install $swp1 ingress $tundev "matchall"148	fail_test_span_gre_dir $tundev149 150	ip link set dev $tundev type $type remote $correct_ip151	quick_test_span_gre_dir $tundev152	mirror_uninstall $swp1 ingress153 154	log_test "$what: remote address change"155}156 157test_span_gre_tun_del()158{159	local tundev=$1; shift160	local type=$1; shift161	local flags=$1; shift162	local local_ip=$1; shift163	local remote_ip=$1; shift164	local what=$1; shift165 166	RET=0167 168	mirror_install $swp1 ingress $tundev "matchall"169	quick_test_span_gre_dir $tundev170	ip link del dev $tundev171	fail_test_span_gre_dir $tundev172 173	tunnel_create $tundev $type $local_ip $remote_ip \174		      ttl 100 tos inherit $flags175 176	# Recreating the tunnel doesn't reestablish mirroring, so reinstall it177	# and verify it works for the follow-up tests.178	mirror_uninstall $swp1 ingress179	mirror_install $swp1 ingress $tundev "matchall"180	quick_test_span_gre_dir $tundev181	mirror_uninstall $swp1 ingress182 183	log_test "$what: tunnel deleted"184}185 186test_span_gre_route_del()187{188	local tundev=$1; shift189	local edev=$1; shift190	local route=$1; shift191	local what=$1; shift192 193	RET=0194 195	mirror_install $swp1 ingress $tundev "matchall"196	quick_test_span_gre_dir $tundev197 198	ip route del $route dev $edev199	fail_test_span_gre_dir $tundev200 201	ip route add $route dev $edev202	quick_test_span_gre_dir $tundev203 204	mirror_uninstall $swp1 ingress205 206	log_test "$what: underlay route removal"207}208 209test_ttl()210{211	test_span_gre_ttl gt4 gretap ip "mirror to gretap"212	test_span_gre_ttl gt6 ip6gretap ipv6 "mirror to ip6gretap"213}214 215test_tun_up()216{217	test_span_gre_tun_up gt4 "mirror to gretap"218	test_span_gre_tun_up gt6 "mirror to ip6gretap"219}220 221test_egress_up()222{223	test_span_gre_egress_up gt4 192.0.2.130 "mirror to gretap"224	test_span_gre_egress_up gt6 2001:db8:2::2 "mirror to ip6gretap"225}226 227test_remote_ip()228{229	test_span_gre_remote_ip gt4 gretap 192.0.2.130 192.0.2.132 "mirror to gretap"230	test_span_gre_remote_ip gt6 ip6gretap 2001:db8:2::2 2001:db8:2::4 "mirror to ip6gretap"231}232 233test_tun_del()234{235	test_span_gre_tun_del gt4 gretap "" \236			      192.0.2.129 192.0.2.130 "mirror to gretap"237	test_span_gre_tun_del gt6 ip6gretap allow-localremote \238			      2001:db8:2::1 2001:db8:2::2 "mirror to ip6gretap"239}240 241test_route_del()242{243	test_span_gre_route_del gt4 $swp3 192.0.2.128/28 "mirror to gretap"244	test_span_gre_route_del gt6 $swp3 2001:db8:2::/64 "mirror to ip6gretap"245}246 247trap cleanup EXIT248 249setup_prepare250setup_wait251 252tests_run253 254exit $EXIT_STATUS255