Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 31 Jul 2011 20:42:51 GMT
From:      Catalin Nicutar <cnicutar@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 196988 for review
Message-ID:  <201107312042.p6VKgpV7065620@skunkworks.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@196988?ac=10

Change 196988 by cnicutar@cnicutar_cronos on 2011/07/31 20:42:13

	Change the way disconnection is simulated (route blackhole doesn't
	work for IPv6 routes).
	Add 2 new IPv6 tests.

Affected files ...

.. //depot/projects/soc2011/cnicutar_tcputo_8/src/tools/regression/netinet/tcputo/long_uto.c#3 edit
.. //depot/projects/soc2011/cnicutar_tcputo_8/src/tools/regression/netinet/tcputo/runtest.sh#3 edit
.. //depot/projects/soc2011/cnicutar_tcputo_8/src/tools/regression/netinet/tcputo/short_uto.c#3 edit
.. //depot/projects/soc2011/cnicutar_tcputo_8/src/tools/regression/netinet/tcputo/test_utils.c#3 edit
.. //depot/projects/soc2011/cnicutar_tcputo_8/src/tools/regression/netinet/tcputo/test_utils.h#3 edit

Differences ...

==== //depot/projects/soc2011/cnicutar_tcputo_8/src/tools/regression/netinet/tcputo/long_uto.c#3 (text+ko) ====

@@ -45,7 +45,7 @@
 		err(EX_OSERR, "fork");
 		break;
 	case 0:
-		server_disconnect(saddr, port, caddr, DOWNTIME, UTO, 1);
+		server_disconnect(saddr, port, DOWNTIME, UTO, 1);
 		exit(EX_OK);
 		break;
 	}

==== //depot/projects/soc2011/cnicutar_tcputo_8/src/tools/regression/netinet/tcputo/runtest.sh#3 (text+ko) ====

@@ -110,6 +110,25 @@
 
 		runtest "$addr $PORT"
 	;;
+	"5")
+		name="short_utov6"
+		bin="short_uto"
+		client="2001:db80:5::2"
+		server="2001:db80:5::3"
+		ipv6="yes"
+
+		test_with_loopback $client $server
+	;;
+	"6")
+		name="long_utov6"
+		bin="long_uto"
+		client="2001:db80:5::2"
+		server="2001:db80:5::3"
+		ipv6="yes"
+
+		test_with_loopback $client $server
+	;;
+
 esac
 
 

==== //depot/projects/soc2011/cnicutar_tcputo_8/src/tools/regression/netinet/tcputo/short_uto.c#3 (text+ko) ====

@@ -49,7 +49,7 @@
 		err(EX_OSERR, "fork");
 		break;
 	case 0:
-		server_disconnect(saddr, port, caddr, DOWNTIME, UTO, 1);
+		server_disconnect(saddr, port, DOWNTIME, UTO, 1);
 		exit(EX_OK);
 		break;
 	}

==== //depot/projects/soc2011/cnicutar_tcputo_8/src/tools/regression/netinet/tcputo/test_utils.c#3 (text+ko) ====

@@ -96,9 +96,6 @@
 	return (rp == NULL) ? -1 : s;
 }
 
-
-
-
 /*
  * Set UTO values on a socket.
  */
@@ -168,43 +165,29 @@
 	return s;
 }
 
-int
-is_v6(char *addr)
-{
-	return strchr(addr, ':') != NULL;
-}
 
 /*
- * Simulate broken connectivity by setting the "blackhole" flag on a route;
- * setting the interface to "down" or deleting the route has unfortunate
- * side-effects (sending ARPs etc).
+ * Simulate broken connectivity by diverting the traffic to an unlistened
+ * port.
  */
 void
-route_down(char *addr)
+port_down(char *port)
 {
 	static char cmd[256];
-	
-	if (is_v6(addr))
-		snprintf(cmd, sizeof(cmd), "route change -inet6 %s -blackhole",
-		    addr);
-	else
-		snprintf(cmd, sizeof(cmd), "route change -inet %s -blackhole",
-		    addr);
+
+	snprintf(cmd, sizeof(cmd), "ipfw add 00050 divert 5000 tcp from"
+	" any %s to any", port);
+
 	system(cmd);
 }
 
 /*
- * Remove the blackhole flag from a route. See the route_down function.
+ * Remove the rule added by port_down.
  */
 void
-route_up(char *addr)
+port_up()
 {
-	static char cmd[256];
-	if (is_v6(addr))
-		snprintf(cmd, sizeof(cmd), "route change -inet6 %s", addr);
-	else
-		snprintf(cmd, sizeof(cmd), "route change %s", addr);
-	system(cmd);
+	system("ipfw delete 00050");
 }
 
 
@@ -216,8 +199,8 @@
  * If the connection is dead, write(2) should trigger an EPIPE.
  */
 void
-server_disconnect(char *laddr, char *lport, char *downaddr, int downtime,
-    int send_uto, int recv_uto)
+server_disconnect(char *laddr, char *lport, int downtime, int send_uto,
+    int recv_uto)
 {
 	int listen_sock;
 	int sock;
@@ -233,7 +216,7 @@
 
 	/* Take the route down and then attempt to send data. */
 	if (downtime)
-		route_down(downaddr);
+		port_down(lport);
 
 	bytes = send(sock, &buf, sizeof(buf), MSG_NOSIGNAL);
 	if (bytes < 0)
@@ -242,7 +225,7 @@
 	/* Sleep through downtime and then bring the route back up. */
 	if (downtime) {
 		sleep(downtime);
-		route_up(downaddr);
+		port_up();
 	}
 
 	/* Try again. If it succeeds, the connection is still up. */

==== //depot/projects/soc2011/cnicutar_tcputo_8/src/tools/regression/netinet/tcputo/test_utils.h#3 (text+ko) ====

@@ -10,10 +10,10 @@
 void uto_get(int s, int *send_uto, int *recv_uto);
 int listen_uto(char *laddr, char *port, int send_uto, int recv_uto);
 int connect_uto(char *laddr, char *raddr, char *rport, int send_uto, int recv_uto);
-void route_down(char *addr);
-void route_up(char *addr);
-void server_disconnect(char *laddr, char *lport, char *downaddr, int downtime,
-    int send_uto, int recv_uto);
+void port_down(char *port);
+void port_up();
+void server_disconnect(char *laddr, char *lport, int downtime, int send_uto,
+    int recv_uto);
 void client_generic(char *laddr, char *raddr, char *rport,
     int send_uto, int recv_uto);
 



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