Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 22 Aug 2020 18:14:06 +0000 (UTC)
From:      "Alexander V. Chernikov" <melifaro@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r364489 - head/tests/sys/net/routing
Message-ID:  <202008221814.07MIE6vK035275@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: melifaro
Date: Sat Aug 22 18:14:05 2020
New Revision: 364489
URL: https://svnweb.freebsd.org/changeset/base/364489

Log:
  Add test for checking RTF_HOST and RTAX_NETMASK inconsistency.
  
  RTF_HOST indicates whether route is a host route
   (netmask is empty or /{32,128}).
  Check that if netmask is empty and host route is not specified, kernel
   returns an error.
  
  Differential Revision:	https://reviews.freebsd.org/D26155

Modified:
  head/tests/sys/net/routing/test_rtsock_l3.c

Modified: head/tests/sys/net/routing/test_rtsock_l3.c
==============================================================================
--- head/tests/sys/net/routing/test_rtsock_l3.c	Sat Aug 22 16:58:59 2020	(r364488)
+++ head/tests/sys/net/routing/test_rtsock_l3.c	Sat Aug 22 18:14:05 2020	(r364489)
@@ -365,7 +365,6 @@ ATF_TC_BODY(rtm_get_v4_empty_dst_failure, tc)
 	    (struct sockaddr *)&c->mask4, NULL);
 	rtsock_update_rtm_len(rtm);
 
-	write(c->rtsock_fd, rtm, rtm->rtm_msglen);
 	ATF_CHECK_ERRNO(EINVAL, write(c->rtsock_fd, rtm, rtm->rtm_msglen));
 }
 
@@ -441,6 +440,30 @@ ATF_TC_CLEANUP(rtm_add_v4_gw_direct_success, tc)
 	CLEANUP_AFTER_TEST;
 }
 
+RTM_DECLARE_ROOT_TEST(rtm_add_v4_no_rtf_host_failure,
+    "Tests failure with netmask sa and RTF_HOST inconsistency");
+
+ATF_TC_BODY(rtm_add_v4_no_rtf_host_failure, tc)
+{
+	DECLARE_TEST_VARS;
+
+	c = presetup_ipv4(tc);
+
+	/* Create IPv4 subnetwork with smaller prefix */
+	struct sockaddr_in mask4;
+	struct sockaddr_in net4;
+	struct sockaddr_in gw4;
+	prepare_v4_network(c, &net4, &mask4, &gw4);
+
+	prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&net4,
+	    NULL, (struct sockaddr *)&gw4);
+	rtsock_update_rtm_len(rtm);
+
+	/* RTF_HOST is NOT specified, while netmask is empty */
+
+	ATF_CHECK_ERRNO(EINVAL, write(c->rtsock_fd, rtm, rtm->rtm_msglen));
+}
+
 ATF_TC_WITH_CLEANUP(rtm_del_v4_prefix_nogw_success);
 ATF_TC_HEAD(rtm_del_v4_prefix_nogw_success, tc)
 {
@@ -1269,6 +1292,7 @@ ATF_TP_ADD_TCS(tp)
 	ATF_TP_ADD_TC(tp, rtm_get_v4_lpm_success);
 	ATF_TP_ADD_TC(tp, rtm_get_v4_hostbits_failure);
 	ATF_TP_ADD_TC(tp, rtm_get_v4_empty_dst_failure);
+	ATF_TP_ADD_TC(tp, rtm_add_v4_no_rtf_host_failure);
 	ATF_TP_ADD_TC(tp, rtm_add_v4_gw_direct_success);
 	ATF_TP_ADD_TC(tp, rtm_del_v4_prefix_nogw_success);
 	ATF_TP_ADD_TC(tp, rtm_add_v6_gu_gw_gu_direct_success);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202008221814.07MIE6vK035275>