From ea2773323c9bfb7b65b7f7462e5a6ba94855f4fe Mon Sep 17 00:00:00 2001 From: "Alexander V. Chernikov" Date: Tue, 3 Mar 2020 15:33:43 +0000 Subject: [PATCH] Fix dynamic redrects by adding forgotten RTF_HOST flag. Improve tests to verify the generated route flags. Reported by: jtl MFC after: 2 weeks --- sys/net/route.c | 2 +- tests/sys/netinet/redirect.sh | 5 ++--- tests/sys/netinet6/redirect.sh | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/sys/net/route.c b/sys/net/route.c index 7343e6e0ead4..3c437cd29333 100644 --- a/sys/net/route.c +++ b/sys/net/route.c @@ -632,7 +632,7 @@ rib_add_redirect(u_int fibnum, struct sockaddr *dst, struct sockaddr *gateway, info.rti_info[RTAX_GATEWAY] = gateway; info.rti_ifa = ifa; info.rti_ifp = ifp; - info.rti_flags = flags | RTF_DYNAMIC; + info.rti_flags = flags | RTF_HOST | RTF_DYNAMIC; /* Setup route metrics to define expire time. */ bzero(&rti_rmx, sizeof(rti_rmx)); diff --git a/tests/sys/netinet/redirect.sh b/tests/sys/netinet/redirect.sh index 53d6d2a9956d..6967dcddee43 100755 --- a/tests/sys/netinet/redirect.sh +++ b/tests/sys/netinet/redirect.sh @@ -92,9 +92,8 @@ valid_redirect_body() { --route ${dst_addr4} --gw ${new_rtr_ip} \ --iface ${epair}a - count=`jexec ${jname} route -n get -4 ${dst_addr4} | grep destination | grep -c ${dst_addr4}` - # Verify redirect got installed - atf_check_equal "1" "${count}" + atf_check -o match:"destination: ${dst_addr4}\$" jexec ${jname} route -n get -4 ${dst_addr4} + atf_check -o match:'flags: ' jexec ${jname} route -n get -4 ${dst_addr4} } valid_redirect_cleanup() { diff --git a/tests/sys/netinet6/redirect.sh b/tests/sys/netinet6/redirect.sh index 94125854300d..d6275233a68e 100644 --- a/tests/sys/netinet6/redirect.sh +++ b/tests/sys/netinet6/redirect.sh @@ -94,9 +94,9 @@ valid_redirect_body() { --route ${dst_addr6} --gw ${new_rtr_ll_ip} \ --iface ${epair}a - count=`jexec ${jname} route -n get -6 ${dst_addr6} | grep destination | grep -c ${dst_addr6}` # Verify redirect got installed - atf_check_equal "1" "${count}" + atf_check -o match:"destination: ${dst_addr6}\$" jexec ${jname} route -n get -6 ${dst_addr6} + atf_check -o match:'flags: ' jexec ${jname} route -n get -6 ${dst_addr6} } valid_redirect_cleanup() {