Module Name:    src
Committed By:   christos
Date:           Mon Oct 13 04:56:26 UTC 2014

Modified Files:
        src/tests/net/mcast: t_mcast.c

Log Message:
Oops need to bind, also make the message more interesting and check that
it arrives correctly.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/tests/net/mcast/t_mcast.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/net/mcast/t_mcast.c
diff -u src/tests/net/mcast/t_mcast.c:1.5 src/tests/net/mcast/t_mcast.c:1.6
--- src/tests/net/mcast/t_mcast.c:1.5	Sun Oct 12 15:49:01 2014
+++ src/tests/net/mcast/t_mcast.c	Mon Oct 13 00:56:26 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_mcast.c,v 1.5 2014/10/12 19:49:01 christos Exp $	*/
+/*	$NetBSD: t_mcast.c,v 1.6 2014/10/13 04:56:26 christos Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 #include <sys/cdefs.h>
 #ifdef __RCSID
-__RCSID("$NetBSD: t_mcast.c,v 1.5 2014/10/12 19:49:01 christos Exp $");
+__RCSID("$NetBSD: t_mcast.c,v 1.6 2014/10/13 04:56:26 christos Exp $");
 #else
 extern const char *__progname;
 #define getprogname() __progname
@@ -69,7 +69,7 @@ extern const char *__progname;
 #define SKIPX(ev, msg, ...)	errx(ev, msg, __VA_ARGS__)
 #endif
 
-static int debug = 1;
+static int debug;
 
 #define TOTAL 10
 #define PORT_V4MAPPED "6666"
@@ -79,6 +79,11 @@ static int debug = 1;
 #define PORT_V6 "6666"
 #define HOST_V6 "FF05:0:0:0:0:0:0:1"
 
+struct message {
+	size_t seq;
+	struct timespec ts;
+};
+
 static int
 addmc(int s, struct addrinfo *ai, bool bug)
 {
@@ -151,6 +156,13 @@ connector(int fd, const struct sockaddr 
 	return 0;
 }
 
+static void
+show(const char *prefix, const struct message *msg)
+{
+	printf("%10.10s: %zu [%jd.%jd]\n", prefix, msg->seq, (intmax_t)
+	    msg->ts.tv_sec, msg->ts.tv_nsec);
+}
+
 static int
 getsocket(const char *host, const char *port,
     int (*f)(int, const struct sockaddr *, socklen_t), socklen_t *slen,
@@ -205,18 +217,18 @@ sender(const char *host, const char *por
 {
 	int s;
 	ssize_t l;
-	size_t seq;
-	char buf[64];
+	struct message msg;
+
 	socklen_t slen;
 
 	s = getsocket(host, port, conn ? connect : connector, &slen, bug);
-	for (seq = 0; seq < n; seq++) {
-		time_t t = time(&t);
-		snprintf(buf, sizeof(buf), "%zu: %-24.24s", seq, ctime(&t));
+	for (msg.seq = 0; msg.seq < n; msg.seq++) {
+		if (clock_gettime(CLOCK_MONOTONIC, &msg.ts) == -1)
+			ERRX(EXIT_FAILURE, "clock (%s)", strerror(errno));
 		if (debug)
-			printf("sending: %s\n", buf);
-		l = conn ? send(s, buf, sizeof(buf), 0) :
-		    sendto(s, buf, sizeof(buf), 0, (void *)&ss, slen);
+			show("sending", &msg);
+		l = conn ? send(s, &msg, sizeof(msg), 0) :
+		    sendto(s, &msg, sizeof(msg), 0, (void *)&ss, slen);
 		if (l == -1)
 			ERRX(EXIT_FAILURE, "send (%s)", strerror(errno));
 		usleep(100);
@@ -229,22 +241,24 @@ receiver(const char *host, const char *p
 	int s;
 	ssize_t l;
 	size_t seq;
-	char buf[64];
+	struct message msg;
 	struct pollfd pfd;
 	socklen_t slen;
 
-	s = getsocket(host, port, conn ? bind : connector, &slen, bug);
+	s = getsocket(host, port, bind, &slen, bug);
 	pfd.fd = s;
 	pfd.events = POLLIN;
 	for (seq = 0; seq < n; seq++) {
 		if (poll(&pfd, 1, 1000) == -1)
 			ERRX(EXIT_FAILURE, "poll (%s)", strerror(errno));
-		l = conn ? recv(s, buf, sizeof(buf), 0) :
-		    recvfrom(s, buf, sizeof(buf), 0, (void *)&ss, &slen);
+		l = conn ? recv(s, &msg, sizeof(msg), 0) :
+		    recvfrom(s, &msg, sizeof(msg), 0, (void *)&ss, &slen);
 		if (l == -1)
 			ERRX(EXIT_FAILURE, "recv (%s)", strerror(errno));
 		if (debug)
-			printf("got: %s\n", buf);
+			show("got", &msg);
+		if (seq != msg.seq)
+			ERRX(EXIT_FAILURE, "seq %zu != %zu", seq, msg.seq);
 	}
 }
 
@@ -261,7 +275,7 @@ run(const char *host, const char *port, 
 	case -1:
 		ERRX(EXIT_FAILURE, "fork (%s)", strerror(errno));
 	default:
-		usleep(100);
+		usleep(1000);
 		sender(host, port, n, conn, bug);
 		usleep(100);
 	again:
@@ -424,20 +438,15 @@ ATF_TC_BODY(unconninet6, tc)
 
 ATF_TP_ADD_TCS(tp)
 {
+	debug++;
         ATF_TP_ADD_TC(tp, conninet4);
         ATF_TP_ADD_TC(tp, connmappedinet4);
         ATF_TP_ADD_TC(tp, connmappedbuginet4);
         ATF_TP_ADD_TC(tp, conninet6);
-#if 0
-	/*
-	 * The receiver does not get any packets on unconnected sockets,
-	 * but the ioctl's work. Is my code wrong?
-	 */
         ATF_TP_ADD_TC(tp, unconninet4);
         ATF_TP_ADD_TC(tp, unconnmappedinet4);
         ATF_TP_ADD_TC(tp, unconnmappedbuginet4);
         ATF_TP_ADD_TC(tp, unconninet6);
-#endif
 
 	return atf_no_error();
 }

Reply via email to