FreeBSD Bugzilla – Attachment 178370 Details for
Bug 196361
Constrain IPv6 routes to each FIB (Consistent with IPv4 route behaviour)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
inet6 test cases
test-cases.patch (text/plain), 7.86 KB, created by
Erick Turnquist
on 2016-12-29 02:33:54 UTC
(
hide
)
Description:
inet6 test cases
Filename:
MIME Type:
Creator:
Erick Turnquist
Created:
2016-12-29 02:33:54 UTC
Size:
7.86 KB
patch
obsolete
>diff --git a/tests/sys/netinet/fibs_test.sh b/tests/sys/netinet/fibs_test.sh >index 70b53e81e8d..19ff2248b74 100755 >--- a/tests/sys/netinet/fibs_test.sh >+++ b/tests/sys/netinet/fibs_test.sh >@@ -166,6 +166,63 @@ loopback_and_network_routes_on_nondefault_fib_cleanup() > cleanup_tap > } > >+atf_test_case loopback_and_network_routes_on_nondefault_fib_inet6 cleanup >+loopback_and_network_routes_on_nondefault_fib_inet6_head() >+{ >+ atf_set "descr" "When creating and deleting loopback routes, use the interface's fib" >+ atf_set "require.user" "root" >+ atf_set "require.config" "fibs" >+} >+ >+loopback_and_network_routes_on_nondefault_fib_inet6_body() >+{ >+ # Configure the TAP interface to use an RFC5737 nonrouteable address >+ # and a non-default fib >+ ADDR="2001:db8::2" >+ SUBNET="2001:db8::" >+ MASK="64" >+ >+ # Check system configuration >+ if [ 0 != `sysctl -n net.add_addr_allfibs` ]; then >+ atf_skip "This test requires net.add_addr_allfibs=0" >+ fi >+ get_fibs 1 >+ >+ # Configure a TAP interface >+ setup_tap6 ${FIB0} ${ADDR} ${MASK} >+ >+ # Check whether the host route exists in only the correct FIB >+ setfib ${FIB0} netstat -rn -f inet6 | grep -q "^${ADDR}.*UHS.*lo0" >+ if [ 0 -ne $? ]; then >+ setfib ${FIB0} netstat -rn -f inet6 >+ atf_fail "Host route did not appear in the correct FIB" >+ fi >+ setfib 0 netstat -rn -f inet6 | grep -q "^${ADDR}.*UHS.*lo0" >+ if [ 0 -eq $? ]; then >+ setfib 0 netstat -rn -f inet6 >+ atf_fail "Host route appeared in the wrong FIB" >+ fi >+ >+ # Check whether the network route exists in only the correct FIB >+ setfib ${FIB0} netstat -rn -f inet6 | \ >+ grep -q "^${SUBNET}/${MASK}.*${TAPD}" >+ if [ 0 -ne $? ]; then >+ setfib ${FIB0} netstat -rn -f inet6 >+ atf_fail "Network route did not appear in the correct FIB" >+ fi >+ setfib 0 netstat -rn -f inet6 | \ >+ grep -q "^${SUBNET}/${MASK}.*${TAPD}" >+ if [ 0 -eq $? ]; then >+ setfib ${FIB0} netstat -rn -f inet6 >+ atf_fail "Network route appeared in the wrong FIB" >+ fi >+} >+ >+loopback_and_network_routes_on_nondefault_fib_inet6_cleanup() >+{ >+ cleanup_tap >+} >+ > > # Regression test for kern/187552 > atf_test_case default_route_with_multiple_fibs_on_same_subnet cleanup >@@ -215,6 +272,53 @@ default_route_with_multiple_fibs_on_same_subnet_cleanup() > cleanup_tap > } > >+atf_test_case default_route_with_multiple_fibs_on_same_subnet_inet6 cleanup >+default_route_with_multiple_fibs_on_same_subnet_inet6_head() >+{ >+ atf_set "descr" "Multiple interfaces on the same subnet but with different fibs can both have default routes" >+ atf_set "require.user" "root" >+ atf_set "require.config" "fibs" >+} >+ >+default_route_with_multiple_fibs_on_same_subnet_inet6_body() >+{ >+ # Configure the TAP interfaces to use a RFC5737 nonrouteable addresses >+ # and a non-default fib >+ ADDR0="2001:db8::2" >+ ADDR1="2001:db8::3" >+ GATEWAY="2001:db8::1" >+ SUBNET="2001:db8::" >+ MASK="64" >+ >+ # Check system configuration >+ if [ 0 != `sysctl -n net.add_addr_allfibs` ]; then >+ atf_skip "This test requires net.add_addr_allfibs=0" >+ fi >+ get_fibs 2 >+ >+ # Configure TAP interfaces >+ setup_tap6 "$FIB0" ${ADDR0} ${MASK} >+ TAP0=$TAP >+ setup_tap6 "$FIB1" ${ADDR1} ${MASK} >+ TAP1=$TAP >+ >+ # Attempt to add default routes >+ setfib ${FIB0} route -6 add default ${GATEWAY} >+ setfib ${FIB1} route -6 add default ${GATEWAY} >+ >+ # Verify that the default route exists for both fibs, with their >+ # respective interfaces. >+ atf_check -o match:"^default.*${TAP0}$" \ >+ setfib ${FIB0} netstat -rn -f inet6 >+ atf_check -o match:"^default.*${TAP1}$" \ >+ setfib ${FIB1} netstat -rn -f inet6 >+} >+ >+default_route_with_multiple_fibs_on_same_subnet_inet6_cleanup() >+{ >+ cleanup_tap >+} >+ > > # Regression test for PR kern/189089 > # Create two tap interfaces and assign them both the same IP address but with >@@ -308,6 +412,51 @@ same_ip_multiple_ifaces_cleanup() > done > } > >+atf_test_case same_ip_multiple_ifaces_inet6 cleanup >+same_ip_multiple_ifaces_inet6_head() >+{ >+ atf_set "descr" "Can remove an IP alias from an interface when the same IP is also assigned to another interface, on non-default FIBs." >+ atf_set "require.user" "root" >+ atf_set "require.config" "fibs" >+} >+same_ip_multiple_ifaces_inet6_body() >+{ >+ atf_expect_fail "kern/189088 Assigning the same IP to multiple interfaces in different FIBs creates a host route for only one" >+ ADDR="2001:db8::2" >+ MASK0="64" >+ MASK1="128" >+ >+ # Unlike most of the tests in this file, this is applicable regardless >+ # of net.add_addr_allfibs >+ get_fibs 2 >+ >+ # Setup the interfaces, then remove one alias. It should not panic. >+ setup_tap6 ${FIB0} ${ADDR} ${MASK0} >+ TAP0=${TAP} >+ setup_tap6 ${FIB1} ${ADDR} ${MASK1} >+ TAP1=${TAP} >+ ifconfig ${TAP1} inet6 -alias ${ADDR} >+ atf_check -o not-match:"^${ADDR}[[:space:]]" \ >+ setfib ${FIB1} netstat -rn -f inet6 >+ >+ # Do it again, in the opposite order. It should not panic. >+ setup_tap6 ${FIB0} ${ADDR} ${MASK0} >+ TAP0=${TAP} >+ setup_tap6 ${FIB1} ${ADDR} ${MASK1} >+ TAP1=${TAP} >+ ifconfig ${TAP0} inet6 -alias ${ADDR} >+ atf_check -o not-match:"^${ADDR}[[:space:]]" \ >+ setfib ${FIB0} netstat -rn -f inet6 >+} >+same_ip_multiple_ifaces_inet6_cleanup() >+{ >+ # Due to PR kern/189088, we must destroy the interfaces in LIFO order >+ # in order for the routes to be correctly cleaned up. >+ for TAPD in `tail -r "tap_devices_to_cleanup"`; do >+ ifconfig ${TAPD} destroy >+ done >+} >+ > # Regression test for kern/187550 > atf_test_case subnet_route_with_multiple_fibs_on_same_subnet cleanup > subnet_route_with_multiple_fibs_on_same_subnet_head() >@@ -346,6 +495,43 @@ subnet_route_with_multiple_fibs_on_same_subnet_cleanup() > cleanup_tap > } > >+atf_test_case subnet_route_with_multiple_fibs_on_same_subnet_inet6 cleanup >+subnet_route_with_multiple_fibs_on_same_subnet_inet6_head() >+{ >+ atf_set "descr" "Multiple FIBs can have subnet routes for the same subnet" >+ atf_set "require.user" "root" >+ atf_set "require.config" "fibs" >+} >+ >+subnet_route_with_multiple_fibs_on_same_subnet_inet6_body() >+{ >+ # Configure the TAP interfaces to use a RFC5737 nonrouteable addresses >+ # and a non-default fib >+ ADDR0="2001:db8::2" >+ ADDR1="2001:db8::3" >+ SUBNET="2001:db8::" >+ MASK="64" >+ >+ # Check system configuration >+ if [ 0 != `sysctl -n net.add_addr_allfibs` ]; then >+ atf_skip "This test requires net.add_addr_allfibs=0" >+ fi >+ get_fibs 2 >+ >+ # Configure TAP interfaces >+ setup_tap6 "$FIB0" ${ADDR0} ${MASK} >+ setup_tap6 "$FIB1" ${ADDR1} ${MASK} >+ >+ # Check that a subnet route exists on both fibs >+ atf_check -o ignore setfib "$FIB0" route -6 get $ADDR1 >+ atf_check -o ignore setfib "$FIB1" route -6 get $ADDR0 >+} >+ >+subnet_route_with_multiple_fibs_on_same_subnet_inet6_cleanup() >+{ >+ cleanup_tap >+} >+ > # Test that source address selection works correctly for UDP packets with > # SO_DONTROUTE set that are sent on non-default FIBs. > # This bug was discovered with "setfib 1 netperf -t UDP_STREAM -H some_host" >@@ -415,10 +601,14 @@ atf_init_test_cases() > { > atf_add_test_case arpresolve_checks_interface_fib > atf_add_test_case loopback_and_network_routes_on_nondefault_fib >+ atf_add_test_case loopback_and_network_routes_on_nondefault_fib_inet6 > atf_add_test_case default_route_with_multiple_fibs_on_same_subnet >+ atf_add_test_case default_route_with_multiple_fibs_on_same_subnet_inet6 > atf_add_test_case same_ip_multiple_ifaces_fib0 > atf_add_test_case same_ip_multiple_ifaces >+ atf_add_test_case same_ip_multiple_ifaces_inet6 > atf_add_test_case subnet_route_with_multiple_fibs_on_same_subnet >+ atf_add_test_case subnet_route_with_multiple_fibs_on_same_subnet_inet6 > atf_add_test_case udp_dontroute > } > >@@ -477,10 +667,21 @@ setup_tap() > setfib ${FIB} ifconfig $TAP ${ADDR}/${MASK} fib $FIB > } > >+setup_tap6() >+{ >+ local FIB=$1 >+ local ADDR=$2 >+ local MASK=$3 >+ get_tap >+ echo setfib ${FIB} ifconfig $TAP inet6 ${ADDR}/${MASK} fib $FIB >+ setfib ${FIB} ifconfig $TAP inet6 ${ADDR}/${MASK} fib $FIB >+} >+ > cleanup_tap() > { > if [ -f tap_devices_to_cleanup ]; then > for tap_device in $(cat tap_devices_to_cleanup); do >+ echo ifconfig "${tap_device}" destroy > ifconfig "${tap_device}" destroy > done > rm -f tap_devices_to_cleanup
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 196361
:
178192
| 178370