Date: Tue, 28 Jul 2026 20:57:42 +0000 From: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 2d0b73338ab7 - main - routing: Add tests for prefsrc route attribute Message-ID: <6a6917c6.1c6b6.2b5f4821@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by pouria: URL: https://cgit.FreeBSD.org/src/commit/?id=2d0b73338ab74ff47fd1a220b86f6eb15148e055 commit 2d0b73338ab74ff47fd1a220b86f6eb15148e055 Author: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org> AuthorDate: 2026-07-18 14:41:28 +0000 Commit: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org> CommitDate: 2026-07-28 20:54:38 +0000 routing: Add tests for prefsrc route attribute Add tests for both IPv4 and IPv6 routes with the prefsrc attribute. Also test IPv4 routes over IPv6 nexthops and borrow their IPv4 addresses from the loopback interface. Reviewed by: glebius Differential Revision: https://reviews.freebsd.org/D58326 --- tests/sys/net/routing/test_routing.sh | 154 ++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) diff --git a/tests/sys/net/routing/test_routing.sh b/tests/sys/net/routing/test_routing.sh index 644b0381bca5..b3b7e6b65a8c 100755 --- a/tests/sys/net/routing/test_routing.sh +++ b/tests/sys/net/routing/test_routing.sh @@ -26,6 +26,16 @@ jq_nhop_filter() .gateway' } +jq_get_ifaof_nhop() +{ + local nhop_id="$1" + local aifp_name="$2" + + jq -r '.statistics."route-nhop-information"."nhop-table"."rt-family".[]."nh-entry".[] | + select(.index == '${nhop_id}') | + select(."address-interface-name" == "'${aifp_name}'") | + .ifa' +} atf_test_case "add_lowest_metric" "cleanup" add_lowest_metric_head() @@ -299,6 +309,147 @@ test_ecmp_routes_by_event_cleanup() vnet_cleanup } +atf_test_case "add_v4route_with_prefsrc" "cleanup" +add_v4route_with_prefsrc_head() +{ + atf_set descr 'Test prefsrc attribute on IPv4 route' + atf_set require.user root + atf_set require.progs jq +} +add_v4route_with_prefsrc_body() +{ + local jname epair0 lo0_addr ep0_prefix testprefix nhop_id ifa + + jname="add_v4route_with_prefsrc" + lo0_addr="192.168.1.1" + ep0_prefix="172.16.1." + testprefix="10.0.0.0/24" + + vnet_init + epair0=$(vnet_mkepair) + + vnet_mkjail ${jname} ${epair0}b + + atf_check ifconfig lo0 inet ${lo0_addr}/32 alias up + atf_check ifconfig ${epair0}a inet ${ep0_prefix}1/30 up + atf_check ifconfig -j ${jname} ${epair0}b inet ${ep0_prefix}2/30 up + + # Create an IPv4 route via epair0 with loopback address as its prefsrc + atf_check -o ignore \ + route -4 add -net ${testprefix} -gateway ${ep0_prefix}2 \ + -prefsrc ${lo0_addr} + + # Check the connection + atf_check -o ignore ping -c1 -t1 ${ep0_prefix}2 + + # Verify that nexthop's ifa is set to our prefsrc + atf_check -o save:netstat \ + netstat -rn4 --libxo json + nhop_id=$(cat netstat | jq_rtentry ${testprefix} | jq '."nhop-kidx"') + atf_check -o save:netstat \ + netstat -on4W --libxo json + ifa=$(cat netstat | jq_get_ifaof_nhop ${nhop_id} lo0) + atf_check_equal "$ifa" "$lo0_addr" +} +add_v4route_with_prefsrc_cleanup() +{ + vnet_cleanup +} + +atf_test_case "add_v6route_with_prefsrc" "cleanup" +add_v6route_with_prefsrc_head() +{ + atf_set descr 'Test prefsrc attribute on IPv6 route' + atf_set require.user root + atf_set require.progs jq +} +add_v6route_with_prefsrc_body() +{ + local jname epair0 lo0_addr ep0_prefix testprefix nhop_id ifa + + jname="add_v6route_with_prefsrc" + lo0_addr="3fff::1" + ep0_prefix="3fff:a::" + testprefix="2001:db8::/48" + + vnet_init + epair0=$(vnet_mkepair) + + vnet_mkjail ${jname} ${epair0}b + + atf_check ifconfig lo0 inet6 ${lo0_addr}/128 up + atf_check ifconfig ${epair0}a inet6 ${ep0_prefix}a/127 up + atf_check ifconfig -j ${jname} ${epair0}b inet6 ${ep0_prefix}b/127 up + + # Create an IPv6 route via epair0 with loopback address as its prefsrc + atf_check -o ignore \ + route -6 add -net ${testprefix} -gateway ${ep0_prefix}b \ + -prefsrc ${lo0_addr} + + # Check the connection + atf_check -o ignore ping -c1 -t1 ${ep0_prefix}b + + # Verify that nexthop's ifa is set to our prefsrc + atf_check -o save:netstat \ + netstat -rn6 --libxo json + nhop_id=$(cat netstat | jq_rtentry ${testprefix} | jq '."nhop-kidx"') + atf_check -o save:netstat \ + netstat -on6W --libxo json + ifa=$(cat netstat | jq_get_ifaof_nhop ${nhop_id} lo0) + atf_check_equal "$ifa" "$lo0_addr" +} +add_v6route_with_prefsrc_cleanup() +{ + vnet_cleanup +} + +atf_test_case "add_v4v6route_with_prefsrc" "cleanup" +add_v4v6route_with_prefsrc_head() +{ + atf_set descr 'Test prefsrc attribute on IPv4 route over IPv6 nexthop' + atf_set require.user root + atf_set require.progs jq +} +add_v4v6route_with_prefsrc_body() +{ + local jname epair0 lo0_addr ep0_prefix testprefix nhop_id ifa + + jname="add_v4v6route_with_prefsrc" + lo0_addr="192.168.1.1" + ep0_prefix="3fff:a::" + testprefix="10.0.0.0/24" + + vnet_init + epair0=$(vnet_mkepair) + + vnet_mkjail ${jname} ${epair0}b + + atf_check ifconfig lo0 inet ${lo0_addr}/32 alias up + atf_check ifconfig ${epair0}a inet6 ${ep0_prefix}a/127 up + atf_check ifconfig -j ${jname} ${epair0}b inet6 ${ep0_prefix}b/127 up + + # Create an IPv4 route via epair0 with IPv6 nexthop + # and loopback address as its prefsrc + atf_check -o ignore \ + route -4 add -net ${testprefix} -inet6 -gateway ${ep0_prefix}b \ + -inet -prefsrc ${lo0_addr} + + # Check the connection + atf_check -o ignore ping -c1 -t1 ${ep0_prefix}b + + # Verify that nexthop's ifa is set to our prefsrc + atf_check -o save:netstat \ + netstat -rn4 --libxo json + nhop_id=$(cat netstat | jq_rtentry ${testprefix} | jq '."nhop-kidx"') + atf_check -o save:netstat \ + netstat -on6W --libxo json + ifa=$(cat netstat | jq_get_ifaof_nhop ${nhop_id} lo0) + atf_check_equal "$ifa" "$lo0_addr" +} +add_v4v6route_with_prefsrc_cleanup() +{ + vnet_cleanup +} atf_init_test_cases() { @@ -306,4 +457,7 @@ atf_init_test_cases() atf_add_test_case "add_default_metric" atf_add_test_case "delete_route_with_metric" atf_add_test_case "test_ecmp_routes_by_event" + atf_add_test_case "add_v4route_with_prefsrc" + atf_add_test_case "add_v6route_with_prefsrc" + atf_add_test_case "add_v4v6route_with_prefsrc" }home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a6917c6.1c6b6.2b5f4821>
