Changeset View
Changeset View
Standalone View
Standalone View
head/tests/sys/net/if_bridge_test.sh
Show First 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | bridge_transmit_ipv4_unicast_cleanup() | ||||
vnet_cleanup | vnet_cleanup | ||||
} | } | ||||
atf_test_case "stp" "cleanup" | atf_test_case "stp" "cleanup" | ||||
stp_head() | stp_head() | ||||
{ | { | ||||
atf_set descr 'Spanning tree test' | atf_set descr 'Spanning tree test' | ||||
atf_set require.user root | atf_set require.user root | ||||
atf_set require.progs jq | |||||
} | } | ||||
stp_body() | stp_body() | ||||
{ | { | ||||
if [ "$(atf_config_get ci false)" = "true" ]; then | if [ "$(atf_config_get ci false)" = "true" ]; then | ||||
atf_skip "https://bugs.freebsd.org/246448" | atf_skip "https://bugs.freebsd.org/246448" | ||||
fi | fi | ||||
vnet_init | vnet_init | ||||
epair_one=$(vnet_mkepair) | epair_one=$(vnet_mkepair) | ||||
epair_two=$(vnet_mkepair) | epair_two=$(vnet_mkepair) | ||||
bridge_a=$(vnet_mkbridge) | bridge_a=$(vnet_mkbridge) | ||||
bridge_b=$(vnet_mkbridge) | bridge_b=$(vnet_mkbridge) | ||||
vnet_mkjail a ${bridge_a} ${epair_one}a ${epair_two}a | vnet_mkjail a ${bridge_a} ${epair_one}a ${epair_two}a | ||||
vnet_mkjail b ${bridge_b} ${epair_one}b ${epair_two}b | vnet_mkjail b ${bridge_b} ${epair_one}b ${epair_two}b | ||||
jexec a ifconfig ${bridge_a} up | |||||
jexec a ifconfig ${epair_one}a up | jexec a ifconfig ${epair_one}a up | ||||
jexec a ifconfig ${epair_two}a up | jexec a ifconfig ${epair_two}a up | ||||
jexec a ifconfig ${bridge_a} addm ${epair_one}a | jexec a ifconfig ${bridge_a} addm ${epair_one}a | ||||
jexec a ifconfig ${bridge_a} addm ${epair_two}a | jexec a ifconfig ${bridge_a} addm ${epair_two}a | ||||
jexec b ifconfig ${bridge_b} up | |||||
jexec b ifconfig ${epair_one}b up | jexec b ifconfig ${epair_one}b up | ||||
jexec b ifconfig ${epair_two}b up | jexec b ifconfig ${epair_two}b up | ||||
jexec b ifconfig ${bridge_b} addm ${epair_one}b | jexec b ifconfig ${bridge_b} addm ${epair_one}b | ||||
jexec b ifconfig ${bridge_b} addm ${epair_two}b | jexec b ifconfig ${bridge_b} addm ${epair_two}b | ||||
jexec a ifconfig ${bridge_a} 192.0.2.1/24 | jexec a ifconfig ${bridge_a} 192.0.2.1/24 | ||||
# Give the interfaces some time to come up and pass some traffic | |||||
sleep 5 | |||||
# Confirm that there's looping traffic | |||||
nbr=$(jexec a netstat -I ${bridge_a} --libxo json \ | |||||
| jq ".statistics.interface[0].\"received-packets\"") | |||||
if [ ${nbr} -lt 100 ] | |||||
then | |||||
atf_fail "Expected bridging loop, but found very few packets." | |||||
fi | |||||
# Enable spanning tree | # Enable spanning tree | ||||
jexec a ifconfig ${bridge_a} stp ${epair_one}a | jexec a ifconfig ${bridge_a} stp ${epair_one}a | ||||
jexec a ifconfig ${bridge_a} stp ${epair_two}a | jexec a ifconfig ${bridge_a} stp ${epair_two}a | ||||
jexec b ifconfig ${bridge_b} stp ${epair_one}b | jexec b ifconfig ${bridge_b} stp ${epair_one}b | ||||
jexec b ifconfig ${bridge_b} stp ${epair_two}b | jexec b ifconfig ${bridge_b} stp ${epair_two}b | ||||
jexec b ifconfig ${bridge_b} up | |||||
jexec a ifconfig ${bridge_a} up | |||||
# Give STP time to do its thing | # Give STP time to do its thing | ||||
sleep 5 | sleep 5 | ||||
a_discard=$(jexec a ifconfig ${bridge_a} | grep discarding) | a_discard=$(jexec a ifconfig ${bridge_a} | grep discarding) | ||||
b_discard=$(jexec b ifconfig ${bridge_b} | grep discarding) | b_discard=$(jexec b ifconfig ${bridge_b} | grep discarding) | ||||
if [ -z "${a_discard}" ] && [ -z "${b_discard}" ] | if [ -z "${a_discard}" ] && [ -z "${b_discard}" ] | ||||
▲ Show 20 Lines • Show All 221 Lines • Show Last 20 Lines |