Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 10 Aug 2007 14:57:36 GMT
From:      Matus Harvan <mharvan@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 125015 for review
Message-ID:  <200708101457.l7AEvakQ038121@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=125015

Change 125015 by mharvan@mharvan_bike-planet on 2007/08/10 14:57:03

	test program for UDP_CATCHALL was broken
	Well, it is still not fully funtional, but at least less broken.

Affected files ...

.. //depot/projects/soc2007/mharvan-mtund/sys.patches/catchall_tcp_udp/test_catchall/README#1 add
.. //depot/projects/soc2007/mharvan-mtund/sys.patches/catchall_tcp_udp/test_catchall/ucatchalld.c#2 edit

Differences ...

==== //depot/projects/soc2007/mharvan-mtund/sys.patches/catchall_tcp_udp/test_catchall/ucatchalld.c#2 (text+ko) ====

@@ -279,9 +279,14 @@
 {
     int fd;
     char *msg = "Welcome to catchalld\r\n";
-    int n, nwrite;
+    int n, nwrite, nread;
     int soval = 1;
     int count = 5;
+    char buf[1234];
+    struct sockaddr_storage from;
+    socklen_t fromlen = sizeof(from);
+    char host[NI_MAXHOST];
+    char serv[NI_MAXSERV];
     
     fd = udp_open("1234");
 
@@ -289,11 +294,33 @@
 	err(EX_UNAVAILABLE, "setsockopt(UDP_CATCHALL) failed");
     
     while (count > 0) {
+	nread = recvfrom(fd, buf, sizeof(buf), 0,
+			 (struct sockaddr *) &from, &fromlen);
+	if (nread < 0) {
+	    warn("recvfrom() returned %d", nread);
+	    continue;
+	}
+
+	if (getnameinfo((struct sockaddr *) &from, fromlen,
+			host, sizeof(host), serv, sizeof(serv),
+			NI_NUMERICHOST | NI_DGRAM) ) {
+	    fprintf(stderr, "getnameinfo failed: %s\n",
+		    gai_strerror(errno));
+	} else {
+	    fprintf(stderr, "received traffic from client %s:%s\n",
+		    host, serv);
+	}
+	
 	fprintf(stderr, "traffic on UDP socket \n");
 	n = 0;
 	nwrite = 0;
 	do {
-	    nwrite = send(fd, msg + n, strlen(msg) - n, 0);
+	    nwrite = sendto(fd, msg + n, strlen(msg) - n, 0,
+			    (struct sockaddr *) &from, fromlen);
+	    if (nwrite < 0)
+		warn("sendto() returned %d", nwrite);
+	    else if (nwrite == 0)
+		warnx("sendto() returned %d", nwrite);
 	    n += nwrite;
 	} while (n < strlen(msg) && nwrite > 0);
 	count--;



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