svn commit: r220130 - projects/sv/sys/netinet

Attilio Rao attilio at FreeBSD.org
Tue Mar 29 15:35:53 UTC 2011


Author: attilio
Date: Tue Mar 29 15:35:53 2011
New Revision: 220130
URL: http://svn.freebsd.org/changeset/base/220130

Log:
  Fix style for other sending functions (ARP and IP packet constructing).

Modified:
  projects/sv/sys/netinet/netdump_client.c

Modified: projects/sv/sys/netinet/netdump_client.c
==============================================================================
--- projects/sv/sys/netinet/netdump_client.c	Tue Mar 29 15:14:31 2011	(r220129)
+++ projects/sv/sys/netinet/netdump_client.c	Tue Mar 29 15:35:53 2011	(r220130)
@@ -393,8 +393,6 @@ netdump_udp_output(struct mbuf *m)
 }
 
 /*
- * [netdump_send_arp]
- *
  * Builds and sends a single ARP request to locate the server
  *
  * Parameters:
@@ -407,10 +405,10 @@ netdump_udp_output(struct mbuf *m)
 static int
 netdump_send_arp()
 {
+	struct ether_addr bcast;
 	struct mbuf *m;
-	int pktlen = arphdr_len2(ETHER_ADDR_LEN, sizeof(struct in_addr));
 	struct arphdr *ah;
-	struct ether_addr bcast;
+	int pktlen;
 
 	MPASS(nd_ifp != NULL);
 
@@ -419,10 +417,12 @@ netdump_send_arp()
 	MGETHDR(m, M_DONTWAIT, MT_DATA);
 	if (m == NULL) {
 		printf("netdump_send_arp: Out of mbufs");
-		return ENOBUFS;
+		return (ENOBUFS);
 	}
-	m->m_pkthdr.len = m->m_len = pktlen;
-	MH_ALIGN(m, pktlen); /* Make room for ethernet header */
+	pktlen = arphdr_len2(ETHER_ADDR_LEN, sizeof(struct in_addr));
+	m->m_len = pktlen;
+	m->m_pkthdr.len = pktlen;
+	MH_ALIGN(m, pktlen);
 	ah = mtod(m, struct arphdr *);
 	ah->ar_hrd = htons(ARPHRD_ETHER);
 	ah->ar_pro = htons(ETHERTYPE_IP);
@@ -434,12 +434,10 @@ netdump_send_arp()
 	bzero(ar_tha(ah), ETHER_ADDR_LEN);
 	((struct in_addr *)ar_tpa(ah))->s_addr = nd_gw.s_addr;
 
-	return netdump_ether_output(m, nd_ifp, bcast, ETHERTYPE_ARP);
+	return (netdump_ether_output(m, nd_ifp, bcast, ETHERTYPE_ARP));
 }
 
 /*
- * [netdump_arp_server]
- *
  * Sends ARP requests to locate the server and waits for a response
  *
  * Parameters:
@@ -454,34 +452,30 @@ netdump_arp_server()
 {
 	int err, polls, retries;
 
-	for (retries=0; retries < nd_retries && !have_server_mac; retries++) {
+	for (retries = 0; retries < nd_retries && have_server_mac == 0;
+	    retries++) {
 		err = netdump_send_arp();
-
-		if (err)
-			return err;
-
-		for (polls=0; polls < nd_polls && !have_server_mac; polls++) {
+		if (err != 0)
+			return (err);
+		for (polls = 0; polls < nd_polls && have_server_mac == 0;
+		    polls++) {
 			netdump_network_poll();
-			DELAY(500); /* 0.5 ms */
+			DELAY(500);
 		}
-
-		if (!have_server_mac) printf("(ARP retry)");
+		if (have_server_mac == 0)
+			printf("(ARP retry)");
 	}
-
-	if (have_server_mac)
-		return 0;
+	if (have_server_mac != 0)
+		return (0);
 
 	printf("\nARP timed out.\n");
-
-	return ETIMEDOUT;
+	return (ETIMEDOUT);
 }
 
 /*
- * [netdump_send]
- *
- * construct and reliably send a netdump packet.  may fail from a resource
- * shortage or extreme number of unacknowledged retransmissions.  wait for
- * an acknowledgement before returning.  splits packets into chunks small
+ * Construct and reliably send a netdump packet.  May fail from a resource
+ * shortage or extreme number of unacknowledged retransmissions.  Wait for
+ * an acknowledgement before returning.  Splits packets into chunks small
  * enough to be sent without fragmentation (looks up the interface MTU)
  *
  * Parameters:
@@ -494,49 +488,54 @@ netdump_arp_server()
  *	int see errno.h, 0 for success
  */
 static int
-netdump_send(uint32_t type, off_t offset, 
-	     unsigned char *data, uint32_t datalen)
+netdump_send(uint32_t type, off_t offset, unsigned char *data, uint32_t datalen)
 {
+	uint64_t want_acks;
 	struct netdump_msg_hdr *nd_msg_hdr;
 	struct mbuf *m, *m2;
-	int retries = 0, polls, error;
-	uint32_t i, sent_so_far;
-	uint64_t want_acks=0;
+	uint32_t i, pktlen, sent_so_far;
+	int retries, polls, error;
 
+	want_acks = 0;
 	rcvd_acks = 0;
+	retries = 0;
 
 	MPASS(nd_ifp != NULL);
 
 retransmit:
-	/* We might get chunks too big to fit in packets. Yuck. */
-	for (i=sent_so_far=0; sent_so_far < datalen || (i==0 && datalen==0);
-		i++) {
-		uint32_t pktlen = datalen-sent_so_far;
-		/* First bound: the packet structure */
+
+	/* Chunks can be too big to fit in packets. */
+	for (i = sent_so_far = 0; sent_so_far <
+	    datalen || (i == 0 && datalen == 0); i++) {
+		pktlen = datalen - sent_so_far;
+
+		/* First bound: the packet structure. */
 		pktlen = min(pktlen, NETDUMP_DATASIZE);
-		/* Second bound: the interface MTU (assume no IP options) */
-		pktlen = min(pktlen, nd_ifp->if_mtu -
-				sizeof(struct udpiphdr) -
-				sizeof(struct netdump_msg_hdr));
 
-		/* Check if we're retransmitting and this has been ACKed
-		 * already */
+		/* Second bound: the interface MTU (assume no IP options). */
+		pktlen = min(pktlen, nd_ifp->if_mtu - sizeof(struct udpiphdr) -
+		    sizeof(struct netdump_msg_hdr));
+
+		/*
+		 * Check if it is retransmitting and this has been ACKed
+		 * already.
+		 * */
 		if ((rcvd_acks & (1 << i)) != 0) {
 			sent_so_far += pktlen;
 			continue;
 		}
 
 		/*
-		 * get and fill a header mbuf, then chain data as an extended
+		 * Get and fill a header mbuf, then chain data as an extended
 		 * mbuf.
 		 */
 		MGETHDR(m, M_DONTWAIT, MT_DATA);
 		if (m == NULL) {
 			printf("netdump_send: Out of mbufs!\n");
-			return ENOBUFS;
+			return (ENOBUFS);
 		}
-		m->m_pkthdr.len = m->m_len = sizeof(struct netdump_msg_hdr);
-		/* leave room for udpip */
+		m->m_len = sizeof(struct netdump_msg_hdr);
+		m->m_pkthdr.len = sizeof(struct netdump_msg_hdr);
 		MH_ALIGN(m, sizeof(struct netdump_msg_hdr));
 		nd_msg_hdr = mtod(m, struct netdump_msg_hdr *);
 		nd_msg_hdr->mh_seqno = htonl(nd_seqno+i);
@@ -545,53 +544,49 @@ retransmit:
 		nd_msg_hdr->mh_len = htonl(pktlen);
 		nd_msg_hdr->mh__pad = 0;
 
-		if (pktlen) {
-			if ((m2 = m_get(M_DONTWAIT, MT_DATA)) == NULL) {
+		if (pktlen != 0) {
+			m2 = m_get(M_DONTWAIT, MT_DATA);
+			if (m2 == NULL) {
 				m_freem(m);
 				printf("netdump_send: Out of mbufs!\n");
-				return ENOBUFS;
+				return (ENOBUFS);
 			}
 			MEXTADD(m2, data+sent_so_far, pktlen, netdump_mbuf_nop,
-				NULL, NULL, M_RDONLY, EXT_MOD_TYPE);
+			    NULL, NULL, M_RDONLY, EXT_MOD_TYPE);
 			m2->m_len = pktlen;
 			m->m_next = m2;
 			m->m_pkthdr.len += m2->m_len;
 		}
+		error = netdump_udp_output(m);
+		if (error != 0)
+			return (error);
 
-		if ((error = netdump_udp_output(m)) != 0) {
-			return error;
-		}
-
-		/* Note that we're waiting for this packet in the bitfield */
+		/* Note that we're waiting for this packet in the bitfield. */
 		want_acks |= 1 << i;
-
 		sent_so_far += pktlen;
 	}
-
-	if (i >= sizeof(want_acks)*8) {
+	if (i >= sizeof(want_acks) * 8)
 		printf("Warning: Sent more than %zd packets (%d). "
-		       "Acknowledgements will fail unless the size of "
-		       "rcvd_acks/want_acks is increased.\n",
-		       sizeof(want_acks)*8, i);
-	}
+		    "Acknowledgements will fail unless the size of "
+		    "rcvd_acks/want_acks is increased.\n",
+		    sizeof(want_acks) * 8, i);
 
 	/*
-	 * wait for acks. a *real* window would speed things up considerably.
+	 * Wait for acks.  A *real* window would speed things up considerably.
 	 */
 	polls = 0;
 	while (rcvd_acks != want_acks) {		
 		if (polls++ > nd_polls) {
-			if (retries++ > nd_retries) {
-				return ETIMEDOUT; /* 10 s, no ack */
-			}
+			if (retries++ > nd_retries)
+				return (ETIMEDOUT);
 			printf(". ");
-			goto retransmit; /* 1 s, no ack */
+			goto retransmit;
 		}
 		netdump_network_poll();
 		DELAY(500);
 	}
 	nd_seqno += i;
-	return 0;
+	return (0);
 }
 
 /*


More information about the svn-src-projects mailing list