PERFORCE change 196988 for review
Catalin Nicutar
cnicutar at FreeBSD.org
Sun Jul 31 20:42:52 UTC 2011
http://p4web.freebsd.org/@@196988?ac=10
Change 196988 by cnicutar at 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);
More information about the p4-projects
mailing list