File Index
Files and directories
Sign in
FILE

bridge_port_isolation.sh

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/net/forwarding/bridge_port_isolation.sh BASH
  1#!/bin/bash
  2# SPDX-License-Identifier: GPL-2.0
  3
  4ALL_TESTS="ping_ipv4 ping_ipv6 flooding"
  5NUM_NETIFS=6
  6CHECK_TC="yes"
  7source lib.sh
  8
  9h1_create()
 10{
 11	simple_if_init $h1 192.0.2.1/24 2001:db8:1::1/64
 12}
 13
 14h1_destroy()
 15{
 16	simple_if_fini $h1 192.0.2.1/24 2001:db8:1::1/64
 17}
 18
 19h2_create()
 20{
 21	simple_if_init $h2 192.0.2.2/24 2001:db8:1::2/64
 22}
 23
 24h2_destroy()
 25{
 26	simple_if_fini $h2 192.0.2.2/24 2001:db8:1::2/64
 27}
 28
 29h3_create()
 30{
 31	simple_if_init $h3 192.0.2.3/24 2001:db8:1::3/64
 32}
 33
 34h3_destroy()
 35{
 36	simple_if_fini $h3 192.0.2.3/24 2001:db8:1::3/64
 37}
 38
 39switch_create()
 40{
 41	ip link add dev br0 type bridge
 42
 43	ip link set dev $swp1 master br0
 44	ip link set dev $swp2 master br0
 45	ip link set dev $swp3 master br0
 46
 47	ip link set dev $swp1 type bridge_slave isolated on
 48	check_err $? "Can't set isolation on port $swp1"
 49	ip link set dev $swp2 type bridge_slave isolated on
 50	check_err $? "Can't set isolation on port $swp2"
 51	ip link set dev $swp3 type bridge_slave isolated off
 52	check_err $? "Can't disable isolation on port $swp3"
 53
 54	ip link set dev br0 up
 55	ip link set dev $swp1 up
 56	ip link set dev $swp2 up
 57	ip link set dev $swp3 up
 58}
 59
 60switch_destroy()
 61{
 62	ip link set dev $swp3 down
 63	ip link set dev $swp2 down
 64	ip link set dev $swp1 down
 65
 66	ip link del dev br0
 67}
 68
 69setup_prepare()
 70{
 71	h1=${NETIFS[p1]}
 72	swp1=${NETIFS[p2]}
 73
 74	swp2=${NETIFS[p3]}
 75	h2=${NETIFS[p4]}
 76
 77	swp3=${NETIFS[p5]}
 78	h3=${NETIFS[p6]}
 79
 80	vrf_prepare
 81
 82	h1_create
 83	h2_create
 84	h3_create
 85
 86	switch_create
 87}
 88
 89cleanup()
 90{
 91	pre_cleanup
 92
 93	switch_destroy
 94
 95	h3_destroy
 96	h2_destroy
 97	h1_destroy
 98
 99	vrf_cleanup
100}
101
102ping_ipv4()
103{
104	RET=0
105	ping_do $h1 192.0.2.2
106	check_fail $? "Ping worked when it should not have"
107
108	RET=0
109	ping_do $h3 192.0.2.2
110	check_err $? "Ping didn't work when it should have"
111
112	log_test "Isolated port ping"
113}
114
115ping_ipv6()
116{
117	RET=0
118	ping6_do $h1 2001:db8:1::2
119	check_fail $? "Ping6 worked when it should not have"
120
121	RET=0
122	ping6_do $h3 2001:db8:1::2
123	check_err $? "Ping6 didn't work when it should have"
124
125	log_test "Isolated port ping6"
126}
127
128flooding()
129{
130	local mac=de:ad:be:ef:13:37
131	local ip=192.0.2.100
132
133	RET=0
134	flood_test_do false $mac $ip $h1 $h2
135	check_err $? "Packet was flooded when it should not have been"
136
137	RET=0
138	flood_test_do true $mac $ip $h3 $h2
139	check_err $? "Packet was not flooded when it should have been"
140
141	log_test "Isolated port flooding"
142}
143
144trap cleanup EXIT
145
146setup_prepare
147setup_wait
148
149tests_run
150
151exit $EXIT_STATUS
~/ Read-only file preview.