PERFORCE change 167409 for review

Fang Wang fangwang at FreeBSD.org
Sun Aug 16 17:44:30 UTC 2009


http://perforce.freebsd.org/chv.cgi?CH=167409

Change 167409 by fangwang at fangwang_utobsd on 2009/08/16 17:44:10

	Fix style, copyright, add some comments. 

Affected files ...

.. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_input.c#8 edit
.. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_output.c#10 edit
.. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_subr.c#6 edit
.. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_timer.c#9 edit
.. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_usrreq.c#10 edit
.. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_var.h#15 edit
.. //depot/projects/soc2009/tcputo/src/tools/regression/netinet/tcputo/README#3 edit
.. //depot/projects/soc2009/tcputo/src/tools/regression/netinet/tcputo/tcputo.c#8 edit

Differences ...

==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_input.c#8 (text+ko) ====

@@ -1188,12 +1188,12 @@
 
 	/*
 	 * If TCP user timeout option is received, because it's an
-	 * optional option, we do nothing at this moment. We will
-	 * process when we need to use it. And we need it in two 
+	 * optional option, we do nothing at this moment.  We will
+	 * process when we need to use it.  And we need it in two
 	 * cases:
 	 *    1. We need do retransmission.
 	 *    2. Users request a UTO value.
-	 */	 
+	 */
 	if (to.to_flags & TOF_UTO) {
 		tp->uto_flags |= TCPUTO_RCVD;
 		tp->rcv_uto = to.to_uto;
@@ -2251,10 +2251,10 @@
 
 process_ACK:
 		/*
-		* If we are sending the UTO option, and we receive a ACK acknowledge the
-		* segment carrying the UTO option,  the UTO was send successfully. So we
-		* stop sending the UTO option.
-		*/
+		 * If we are sending the UTO option, and we receive a ACK
+		 * acknowledge the segment carrying the UTO option,  the UTO
+		 * was send successfully. So we stop sending the UTO option.
+		 */
 		if (tp->uto_flags & TCPUTO_SENDING)
 			if (SEQ_GEQ(th->th_ack, tp->uto_carrier))
 				tp->uto_flags &= ~TCPUTO_SENDING;
@@ -2971,7 +2971,7 @@
 				continue;
 			to->to_flags |= TOF_UTO;
 			bcopy((char *)cp + 2,
-			    (char *)&to->to_uto, sizeof(to->to_uto));			
+			    (char *)&to->to_uto, sizeof(to->to_uto));
 			to->to_uto = ntohs(to->to_uto);
 			break;
 		default:

==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_output.c#10 (text+ko) ====

@@ -711,13 +711,16 @@
 		hdrlen += optlen = tcp_addoptions(&to, opt);
 
 		/* 
-		* According to RFC 5482:
-		* "In addition to exchanging UTO options in the SYN segments, a
-		*  connection that has enabled UTO options SHOULD include a UTO option
-		*  in the first packet that does not have the SYN flag set. This helps  to minimize
-		*  the amount of state information TCP must keep for  connections in non-synchronized states." 
-		* So even though UTO options is put in SYN segment successfully, we still transmit it.
-		*/
+		 * According to RFC 5482:
+		 * "In addition to exchanging UTO options in the SYN segments,
+		 *  a connection that has enabled UTO options SHOULD include a
+		 *  UTO option in the first packet that does not have the SYN
+		 *  flag set. This helps  to minimize the amount of state
+		 *  information TCP must keep for  connections in
+		 *  non-synchronized states." 
+		 * So even though UTO option is put in SYN segment successfully,
+		 * we still transmit it.
+		 */
 		if (tp->uto_flags & (TCPUTO_NEED | TCPUTO_SENDING) &&
 		    (to.to_flags & TOF_UTO) == 0) {
 			if ((flags & TH_SYN) == 0) {
@@ -1478,7 +1481,7 @@
 		case TOF_UTO:
 			{
 			if (TCP_MAXOLEN - optlen < TCPOLEN_UTO)
-				continue;			
+				continue;
 			*optp++ = TCPOPT_UTO;
 			*optp++ = TCPOLEN_UTO;
 			optlen += TCPOLEN_UTO;

==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_subr.c#6 (text+ko) ====

@@ -745,9 +745,10 @@
 	if (tcp_uto_enable)
 		tp->uto_flags |= TCPUTO_ENABLE;
 	/*
-	* According to RFC 5482, t_uto_adv is UTO option advertised to the remote TCP peer.  
-	* It defaults to the default system-wide  USER TIMEOUT.
-	*/
+	 * According to RFC 5482, t_uto_adv is UTO option advertised to the
+	 * remote TCP peer.  It defaults to the default system-wide USER
+	 * TIMEOUT.
+	 */
 	tp->t_uto_adv = TCPTV_UTO_DEFAULT;
 	/*
 	 * IPv4 TTL initialization is necessary for an IPv6 socket as well,

==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_timer.c#9 (text+ko) ====

@@ -114,9 +114,11 @@
 int	tcp_uto_min;
 SYSCTL_PROC(_net_inet_tcp, OID_AUTO, uto_min, CTLTYPE_INT|CTLFLAG_RW,
     &tcp_uto_min, 0, sysctl_msec_to_ticks, "I", "Minimun user timeout");
+
 int	tcp_uto_max;
 SYSCTL_PROC(_net_inet_tcp, OID_AUTO, uto_max, CTLTYPE_INT|CTLFLAG_RW,
     &tcp_uto_max, 0, sysctl_msec_to_ticks, "I", "Maximum user timeout");
+
 int	tcp_uto_enable = 0;
 SYSCTL_INT(_net_inet_tcp, OID_AUTO, always_enableuto, CTLFLAG_RW,
     &tcp_uto_enable , 0, "Enable TCP user timeout option on all TCP connections");
@@ -501,12 +503,13 @@
 	 * been acked within retransmit interval.  Back off
 	 * to a longer retransmit interval and retransmit one segment.
 	 */
-	if ((++tp->t_rxtshift > TCP_MAXRXTSHIFT && (tp->uto_flags & TCPUTO_IMPL) == 0) || 
+	if ((++tp->t_rxtshift > TCP_MAXRXTSHIFT &&
+	    (tp->uto_flags & TCPUTO_IMPL) == 0) ||
 	    (tp->t_uto_left == 0 && tp->uto_flags & TCPUTO_IMPL)) {
 		tp->t_rxtshift = TCP_MAXRXTSHIFT;
 		TCPSTAT_INC(tcps_timeoutdrop);
 		tp = tcp_drop(tp, tp->t_softerror ?
-			      tp->t_softerror : ETIMEDOUT);
+		    tp->t_softerror : ETIMEDOUT);
 		goto out;
 	}
 	INP_INFO_WUNLOCK(&V_tcbinfo);
@@ -537,19 +540,20 @@
 		if ((tp->uto_flags & TCPUTO_IMPL) == 0) {
 			rexmt = TCP_REXMTVAL(tp) * tcp_backoff[tp->t_rxtshift];
 			TCPT_RANGESET(tp->t_rxtcur, rexmt,
-				      tp->t_rttmin, TCPTV_REXMTMAX);
+			    tp->t_rttmin, TCPTV_REXMTMAX);
 		} else {
 			int rxtshift, interval;
 			rxtshift = min(TCP_MAXRXTSHIFT, tp->t_rxtshift);
 			interval = min(TCP_REXMTMAX, tcp_backoff[rxtshift]);
 			rexmt = TCP_REXMTVAL(tp) * tcp_backoff[rxtshift];
 			TCPT_RANGESET(tp->t_rxtcur, rexmt,
-				      tp->t_rttmin, TCPTV_REXMTMAX);
+			    tp->t_rttmin, TCPTV_REXMTMAX);
 			if (tp->t_uto_left < interval) {
-				tp->t_rxtcur = (tp->t_rxtcur * tp->t_uto_left) / interval;
+				tp->t_rxtcur = (tp->t_rxtcur * tp->t_uto_left)
+				    / interval;
 				/*  Prevent t_rxtcur to be zero */
 				TCPT_RANGESET(tp->t_rxtcur, tp->t_rxtcur,
-					      tp->t_rttmin, TCPTV_REXMTMAX);
+				    tp->t_rttmin, TCPTV_REXMTMAX);
 			}
 			tp->t_uto_left -= min(tp->t_uto_left, interval);
 		}

==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_usrreq.c#10 (text+ko) ====

@@ -1379,7 +1379,8 @@
 				return (error);
 
 			INP_WLOCK_RECHECK(inp);
-			if (tu.flags & ~(ENABLE_UTO | STORE_UTO | ENABLE_CHANGE)) {
+			if (tu.flags & ~(ENABLE_UTO | STORE_UTO |
+			    ENABLE_CHANGE)) {
 				error = EINVAL;
 				break;
 			}
@@ -1398,10 +1399,12 @@
 					}
 					if (tp->uto_flags & TCPUTO_ENABLE &&
 					    tp->uto_flags & TCPUTO_NEED) {
-						tp->t_uto_impl = min(tcp_uto_max, 
-								max(tu.uto * hz, tcp_uto_min));
+						tp->t_uto_impl =  min(
+						    tcp_uto_max, max(tu.uto*hz,
+						    tcp_uto_min));
 						tp->t_uto_adv = tp->t_uto_impl;
-						tp->uto_flags &= ~TCPUTO_CHANGEABLE;
+						tp->uto_flags &=
+						    ~TCPUTO_CHANGEABLE;
 						tp->uto_flags |= TCPUTO_IMPL;
 					}
 				} else

==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_var.h#15 (text+ko) ====

@@ -254,19 +254,20 @@
 /*
 * Resolve user timeout value(ticks).
 */
-#define	TCPT_RESOLVE_UTO(tp) do {						\
-	if ((tp)->uto_flags & TCPUTO_ENABLE &&					\
-	    (tp)->uto_flags & TCPUTO_RCVD &&					\
-	    (tp)->uto_flags & TCPUTO_CHANGEABLE) {				\
-		(tp)->t_uto_impl = (tp)->rcv_uto >> 1;				\
-		if ((tp)->rcv_uto & 1)						\
-			(tp)->t_uto_impl *= 60;					\
-		(tp)->t_uto_impl *= hz;						\
-		(tp)->t_uto_impl = min(tcp_uto_max,				\
-		    max((tp)->t_uto_adv, max((tp)->t_uto_impl, tcp_uto_min)));	\
-		(tp)->uto_flags &= ~TCPUTO_RCVD;				\
-		(tp)->uto_flags |= TCPUTO_IMPL;					\
-	}									\
+#define	TCPT_RESOLVE_UTO(tp) do {				\
+	if ((tp)->uto_flags & TCPUTO_ENABLE &&			\
+	    (tp)->uto_flags & TCPUTO_RCVD &&			\
+	    (tp)->uto_flags & TCPUTO_CHANGEABLE) {		\
+		(tp)->t_uto_impl = (tp)->rcv_uto >> 1;		\
+		if ((tp)->rcv_uto & 1)				\
+			(tp)->t_uto_impl *= 60;			\
+		(tp)->t_uto_impl *= hz;				\
+		(tp)->t_uto_impl = min(tcp_uto_max,		\
+		    max((tp)->t_uto_adv,			\
+		    max((tp)->t_uto_impl, tcp_uto_min)));	\
+		(tp)->uto_flags &= ~TCPUTO_RCVD;		\
+		(tp)->uto_flags |= TCPUTO_IMPL;			\
+	}							\
 } while(0)
 
 #ifdef TCP_SIGNATURE

==== //depot/projects/soc2009/tcputo/src/tools/regression/netinet/tcputo/README#3 (text+ko) ====

@@ -21,4 +21,4 @@
 
 After that, interrupt the connection without detected by operating system, and
 wait until process exits.
-$FreeBSD: src/tools/regression/netinet/tcputo/README,v 1.0 2008/08/15 20:26:52 fw Exp $
+$FreeBSD: src/tools/regression/netinet/tcputo/README,v 1.0 2009/08/17 00:56:31 fw Exp $

==== //depot/projects/soc2009/tcputo/src/tools/regression/netinet/tcputo/tcputo.c#8 (text+ko) ====

@@ -23,9 +23,16 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/tools/regression/netinet/tcputo/tcputo.c 2009/08/15 20:28:31 fw $
+ * $FreeBSD: src/tools/regression/netinet/tcputo/tcputo.c 2009/08/17 00:56:31 fw $
+ */
+
+/*
+ * TCP regression test for tcp user timeout; build a TCP connection, interrupt
+ * it without detected by operating system, and make sure the timeout time and
+ * retransmission times has been changed appropriately.
  */
 
+
 #include <sys/types.h>
 #include <sys/socket.h>
 
@@ -49,22 +56,22 @@
 #include <pthread.h>
 
 #define	SIZE_ETHERNET	sizeof(struct ether_header)
+#define	MAX_RXT	200
 
 struct tcprxt {
 	struct timeval ts;
-	u_int th_off;
-	tcp_seq th_seq;
-	tcp_seq th_ack;
+	u_int	th_off;
+	tcp_seq	th_seq;
+	tcp_seq	th_ack;
 	u_short	th_win;
-	u_char th_flags;
+	u_char	th_flags;
 };
 
-#define	MAX_RXT	200
+static struct tcprxt	rxts[MAX_RXT];
 
-struct tcprxt	rxts[MAX_RXT];
-
-void
-parse_packet(u_char *args, const struct pcap_pkthdr *pkt_header, const u_char *packet)
+static void
+parse_packet(u_char *args, const struct pcap_pkthdr *pkt_header,
+    const u_char *packet)
 {
 	const struct ip *ip;
 	const struct tcphdr *tcp;
@@ -108,10 +115,12 @@
 				uto >>= 1;
 			p = localtime(&pkt_header->ts.tv_sec);
 			printf("uto packet: ");
-			printf("%02d:%02d:%02d.%-6u ", p->tm_hour, p->tm_min, p->tm_sec,
-				pkt_header->ts.tv_usec);
-			printf("%s.%d > ", inet_ntoa(ip->ip_src), htons(tcp->th_sport));
-			printf("%s.%d, ", inet_ntoa(ip->ip_dst), htons(tcp->th_dport));
+			printf("%02d:%02d:%02d.%-6u ", p->tm_hour, p->tm_min,
+			    p->tm_sec, pkt_header->ts.tv_usec);
+			printf("%s.%d > ", inet_ntoa(ip->ip_src),
+			    htons(tcp->th_sport));
+			printf("%s.%d, ", inet_ntoa(ip->ip_dst),
+			    htons(tcp->th_dport));
 			printf("flags [");
 			if (tcp->th_flags & TH_SYN)
 				printf("S");
@@ -124,7 +133,8 @@
 			if (tcp->th_flags & TH_URG)
 				printf("U");
 			printf("], ");
-			printf("uto %u, win %u, length %u\n", uto, htons(tcp->th_win), length);
+			printf("uto %u, win %u, length %u\n", uto,
+			    htons(tcp->th_win), length);
 		}
 		hlen -= optlen - 1;
 		tcpopt += optlen - 2;
@@ -137,12 +147,13 @@
 		rxt.th_ack = htonl(tcp->th_ack);
 		rxt.th_seq = htonl(tcp->th_seq);
 		rxt.th_flags = tcp->th_flags;
-		memcpy(&rxts[0], &rxts[1], sizeof(struct tcprxt) * (MAX_RXT - 1));
+		memcpy(&rxts[0], &rxts[1],
+		    sizeof(struct tcprxt) * (MAX_RXT - 1));
 		memcpy(&rxts[MAX_RXT - 1], &rxt, sizeof(rxt));
 	}
 }
 
-void *
+static void *
 dump_packet(void *arg)
 {
 	pcap_t *handle;
@@ -160,10 +171,12 @@
 	int flag;
 
 	optlen = sizeof(srcaddr);
-	if (getsockname(*((int *)arg), (struct sockaddr *)&srcaddr, &optlen) == -1)
+	if (getsockname(*((int *)arg), (struct sockaddr *)&srcaddr,
+	    &optlen) == -1)
 		err(-1, "getsockname");
 	optlen = sizeof(dstaddr);
-	if (getpeername(*((int *)arg), (struct sockaddr *)&dstaddr, &optlen) == -1)
+	if (getpeername(*((int *)arg), (struct sockaddr *)&dstaddr,
+	    &optlen) == -1)
 		err(-1, "getsockname");
 
 	if (pcap_findalldevs(&alldevsp, errbuf) == -1) {
@@ -177,7 +190,8 @@
 		addrp = devp->addresses;
 		while (addrp != NULL && flag) {
 			devaddrp = (struct sockaddr_in *)addrp->addr;
-			if (!memcmp(&devaddrp->sin_addr, &srcaddr.sin_addr, sizeof(srcaddr.sin_addr))) {
+			if (!memcmp(&devaddrp->sin_addr, &srcaddr.sin_addr,
+			    sizeof(srcaddr.sin_addr))) {
 				flag = 0;
 				break;
 			}
@@ -194,48 +208,56 @@
 	}
 
 	if (pcap_lookupnet(devp->name, &net, &mask, errbuf) == -1) {
-		fprintf(stderr, "Couldn't get netmask for device %s: %s\n", devp->name, errbuf);
+		fprintf(stderr, "Couldn't get netmask for device %s: %s\n",
+		    devp->name, errbuf);
 		net = 0;
 		mask = 0;
 	}
 
 	handle = pcap_open_live(devp->name, BUFSIZ, 1, 1000, errbuf);
 	if (handle == NULL) {
-		fprintf(stderr, "Couldn't open device %s: %s\n", devp->name, errbuf);
+		fprintf(stderr, "Couldn't open device %s: %s\n",
+		    devp->name, errbuf);
 		exit(-1);
 	}
 
 	pcap_freealldevs(alldevsp);
 
 	snprintf(filter_exp, sizeof(filter_exp),
-		"(tcp src port %d and dst port %d) or (tcp src port %d and dst port %d)",
-		ntohs(srcaddr.sin_port), ntohs(dstaddr.sin_port),
-		ntohs(dstaddr.sin_port), ntohs(srcaddr.sin_port));
+	    "(tcp src port %d and dst port %d) or"
+	    "(tcp src port %d and dst port %d)",
+	    ntohs(srcaddr.sin_port), ntohs(dstaddr.sin_port),
+	    ntohs(dstaddr.sin_port), ntohs(srcaddr.sin_port));
 
 	if (pcap_compile(handle, &fp, filter_exp, 0, net) == -1) {
-		fprintf(stderr, "Couldn't parse filter %s: %s\n", filter_exp, pcap_geterr(handle));
+		fprintf(stderr, "Couldn't parse filter %s: %s\n",
+		    filter_exp, pcap_geterr(handle));
 		exit(-1);
 	}
 	if (pcap_setfilter(handle, &fp) == -1) {
-		fprintf(stderr, "Couldn't install filter %s: %s\n", filter_exp, pcap_geterr(handle));
+		fprintf(stderr, "Couldn't install filter %s: %s\n",
+		    filter_exp, pcap_geterr(handle));
 		exit(-1);
 	}
 
 	pcap_loop(handle, -1, parse_packet, NULL);
 	pcap_close(handle);
-	
+
 	return NULL;
 }
 
-void print_result()
+static void
+print_result()
 {
 	tcp_seq rxt_seq;
 	int i, last, rxt_nr;
 	struct tm *p;
-
+	
+	/* Get the retransmit sequence number */
 	rxt_seq = rxts[MAX_RXT - 2].th_seq;
 	for (last = -1, rxt_nr = 0, i = 0; i < MAX_RXT; i++) {
-		if (rxts[i].th_seq && (rxts[i].th_seq == rxt_seq || rxts[i].th_flags & TH_RST)) {
+		if (rxts[i].th_seq &&
+		    (rxts[i].th_seq == rxt_seq || rxts[i].th_flags & TH_RST)) {
 			if (rxts[i].th_flags & TH_RST)
 				printf("reset packet, ");
 			else if (rxt_nr)
@@ -243,16 +265,25 @@
 			else if (!rxt_nr)
 				printf("send packet, ");
 			p = localtime(&rxts[i].ts.tv_sec);
-			printf("%02d:%02d:%02d.%-6u ", p->tm_hour, p->tm_min, p->tm_sec, rxts[i].ts.tv_usec);
+			printf("%02d:%02d:%02d.%-6u ", p->tm_hour, p->tm_min,
+			    p->tm_sec, rxts[i].ts.tv_usec);
 			if (last != -1) {
+				/* print interval between two packets */
 				if (rxts[i].ts.tv_usec < rxts[last].ts.tv_usec)
-					printf("(%2u.%-6u) ", rxts[i].ts.tv_sec - rxts[last].ts.tv_sec - 1, 
-						1000000 + rxts[i].ts.tv_usec - rxts[last].ts.tv_usec);
+					printf("(%2u.%-6u) ",
+					    rxts[i].ts.tv_sec -
+					    rxts[last].ts.tv_sec - 1,
+					    1000000 + rxts[i].ts.tv_usec -
+					    rxts[last].ts.tv_usec);
 				else
-					printf("(%2u.%-6u) ", rxts[i].ts.tv_sec - rxts[last].ts.tv_sec, 
-						rxts[i].ts.tv_usec - rxts[last].ts.tv_usec);
+					printf("(%2u.%-6u) ",
+					    rxts[i].ts.tv_sec -
+					    rxts[last].ts.tv_sec,
+					    rxts[i].ts.tv_usec -
+					    rxts[last].ts.tv_usec);
 			}
-			printf("seq %u, ack %u, ", rxts[i].th_seq, rxts[i].th_ack);
+			printf("seq %u, ack %u, ",
+			    rxts[i].th_seq, rxts[i].th_ack);
 			printf("win %u\n", rxts[i].th_win);
 			last = i;
 			rxt_nr++;
@@ -260,11 +291,12 @@
 	}
 }
 
-int
+static int
 print_uto_status(int sock, int print)
 {
 	static struct tcputo tu = {0, 0};
-	int default_uto = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 64 + 64 + 64 + 64 + 64 + 64;
+	int default_uto = 1 + 2 + 4 + 8 + 16 + 32 + 64 +
+	    64 + 64 + 64 + 64 + 64 + 64;
 	int optlen;
 	int utoval;
 
@@ -274,26 +306,29 @@
 		if (tu.flags & ENABLE_UTO) {
 			printf("tcputo: enabled, ");
 			if (tu.flags & STORE_UTO) {
-				printf("user timeout(changed): %d seconds\n", tu.uto);
+				printf("user timeout(changed): %d seconds\n",
+				    tu.uto);
 				utoval = tu.uto;
 			} else {
-				printf("user timeout(default): %d seconds\n", default_uto);
+				printf("user timeout(default): %d seconds\n",
+				    default_uto);
 				utoval = default_uto;
 			}
 		} else {
-			printf("tcputo: disabled, default timeout: %d seconds\n", default_uto);
+			printf("tcputo: disabled, default timeout: %d "
+			    "seconds\n", default_uto);
 			utoval = default_uto;
 		}
 	}
 
-	return utoval;
+	return (utoval);
 }
 
 static void
 usage(void)
 {
-	fprintf(stderr, "tcpconnect server port [uto [timeout seconds]]\n");
-	fprintf(stderr, "tcpconnect client ip port [uto [timeout seconds]]\n");
+	fprintf(stderr, "tcpconnect server port [uto [timeout]]\n");
+	fprintf(stderr, "tcpconnect client ip port [uto [timeout]]\n");
 	exit(-1);
 }
 
@@ -346,7 +381,8 @@
 	if (listen_sock == -1)
 		err(-1, "socket");
 	optval = 1;
-	if (setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) == -1)
+	if (setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, &optval,
+	    sizeof(optval)) == -1)
 		err(-1, "setsockopt");
 
 	if (bind(listen_sock, (struct sockaddr *)&sin, sizeof(sin)) == -1)
@@ -365,6 +401,10 @@
 
 	if (argc >= 2) {
 		memset(&uto, 0, sizeof(uto));
+		/*
+		 * If TCP UTO is enabled but not set, make it changeable,
+		 * otherwise, make it unchangeable.
+		 */
 		if (!strcmp(argv[1], "uto")) {
 			uto.flags |= ENABLE_UTO;
 			uto.flags |= ENABLE_CHANGE;
@@ -377,21 +417,27 @@
 			uto.flags |= STORE_UTO;
 			uto.flags &= ~ENABLE_CHANGE;
 		}
-		if (setsockopt(accept_sock, IPPROTO_TCP, TCP_UTO, &uto, sizeof(uto)) == -1)
+		if (setsockopt(accept_sock, IPPROTO_TCP, TCP_UTO, &uto,
+		    sizeof(uto)) == -1)
 			err(-1, "setsockopt");
 	}
 
 	optval = 4*1024;
-	if (setsockopt(accept_sock, SOL_SOCKET, SO_SNDBUF, &optval, sizeof(optval)) == -1)
+	if (setsockopt(accept_sock, SOL_SOCKET, SO_SNDBUF, &optval,
+	    sizeof(optval)) == -1)
 		err(-1, "setsockopt");
 
 	while(1) {
 		sleep(1);
-		while(recv(accept_sock, buf, 8*1024, MSG_DONTWAIT) > 0);
+		while (recv(accept_sock, buf, 8*1024, MSG_DONTWAIT) > 0);
 		(void)tcputo_timer();
+		/*
+		 * Send more data than socket send buffer,
+		 * so that data are not buffered.
+		 */
 		if (send(accept_sock, buf, 8*1024, MSG_NOSIGNAL) >= 0) {
 			(void)tcputo_timer();
-			print_uto_status(accept_sock, 0);
+			(void)print_uto_status(accept_sock, 0);
 			continue;
 		}
 		user_timeout = tcputo_timer();
@@ -400,7 +446,7 @@
 	}
 	/* wait for the reset packet to be captured */
 	sleep(1);
-	pthread_kill(tid, SIGTERM);
+	(void)pthread_kill(tid, SIGTERM);
 
 	close(accept_sock);
 }
@@ -436,11 +482,16 @@
 		err(-1, "socket");
 
 	optval = 4*1024;
-	if (setsockopt(sock, SOL_SOCKET, SO_SNDBUF, &optval, sizeof(optval)) == -1)
+	if (setsockopt(sock, SOL_SOCKET, SO_SNDBUF, &optval,
+	    sizeof(optval)) == -1)
 		err(-1, "setsockopt");
 
 	if (argc >= 3) {
 		memset(&uto, 0, sizeof(uto));
+		/*
+		 * If TCP UTO is enabled but not set, make it changeable,
+		 * otherwise, make it unchangeable.
+		 */
 		if (!strcmp(argv[2], "uto")) {
 			uto.flags |= ENABLE_UTO;
 			uto.flags |= ENABLE_CHANGE;
@@ -453,7 +504,8 @@
 			uto.flags |= STORE_UTO;
 			uto.flags &= ~ENABLE_CHANGE;
 		}
-		if (setsockopt(sock, IPPROTO_TCP, TCP_UTO, &uto, sizeof(uto)) == -1)
+		if (setsockopt(sock, IPPROTO_TCP, TCP_UTO, &uto,
+		    sizeof(uto)) == -1)
 			err(-1, "setsockopt");
 	}
 
@@ -467,9 +519,13 @@
 		sleep(1);
 		while(recv(sock, buf, 8*1024, MSG_DONTWAIT) > 0);
 		(void)tcputo_timer();
+		/*
+		 * Send more data than socket send buffer,
+		 * so that data are not buffered.
+		 */
 		if (send(sock, buf, 8*1024, MSG_NOSIGNAL) > 0) {
 			(void)tcputo_timer();
-			print_uto_status(sock, 0);
+			(void)print_uto_status(sock, 0);
 			continue;
 		}
 		user_timeout = tcputo_timer();
@@ -478,7 +534,7 @@
 	}
 	/* wait for the reset packet to be captured */
 	sleep(1);
-	pthread_kill(tid, SIGTERM);
+	(void)pthread_kill(tid, SIGTERM);
 
 	close(sock);
 }
@@ -498,7 +554,7 @@
 	else
 		usage();
 	
-	print_uto_status(-1, 1);
+	(void)print_uto_status(-1, 1);
 	print_result();
 
 	exit(0);


More information about the p4-projects mailing list