svn commit: r206661 - stable/8/sys/netgraph

Alexander Motin mav at FreeBSD.org
Thu Apr 15 12:46:17 UTC 2010


Author: mav
Date: Thu Apr 15 12:46:16 2010
New Revision: 206661
URL: http://svn.freebsd.org/changeset/base/206661

Log:
  MFC r206021, r206032, r206049, r206050:
  Remove some more alignment constraints.

Modified:
  stable/8/sys/netgraph/ng_deflate.c
  stable/8/sys/netgraph/ng_mppc.c
  stable/8/sys/netgraph/ng_ppp.c
  stable/8/sys/netgraph/ng_pptpgre.c
  stable/8/sys/netgraph/ng_tcpmss.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/sys/netgraph/ng_deflate.c
==============================================================================
--- stable/8/sys/netgraph/ng_deflate.c	Thu Apr 15 12:41:36 2010	(r206660)
+++ stable/8/sys/netgraph/ng_deflate.c	Thu Apr 15 12:46:16 2010	(r206661)
@@ -36,6 +36,7 @@
 #include <sys/kernel.h>
 #include <sys/mbuf.h>
 #include <sys/malloc.h>
+#include <sys/endian.h>
 #include <sys/errno.h>
 #include <sys/syslog.h>
 
@@ -505,8 +506,8 @@ ng_deflate_compress(node_p node, struct 
 		priv->stats.OutOctets+=inlen;
 	} else {
 		/* Install header. */
-		((u_int16_t *)priv->outbuf)[0] = htons(PROT_COMPD);
-		((u_int16_t *)priv->outbuf)[1] = htons(priv->seqnum);
+		be16enc(priv->outbuf, PROT_COMPD);
+		be16enc(priv->outbuf + 2, priv->seqnum);
 
 		/* Return packet in an mbuf. */
 		m_copyback(m, 0, outlen, (caddr_t)priv->outbuf);
@@ -568,7 +569,7 @@ ng_deflate_decompress(node_p node, struc
 		proto = priv->inbuf[0];
 		offset = 1;
 	} else {
-		proto = ntohs(((uint16_t *)priv->inbuf)[0]);
+		proto = be16dec(priv->inbuf);
 		offset = 2;
 	}
 
@@ -579,7 +580,7 @@ ng_deflate_decompress(node_p node, struc
 		priv->stats.FramesComp++;
 
 		/* Check sequence number. */
-		rseqnum = ntohs(((uint16_t *)(priv->inbuf + offset))[0]);
+		rseqnum = be16dec(priv->inbuf + offset);
 		offset += 2;
 		if (rseqnum != priv->seqnum) {
 			priv->stats.Errors++;

Modified: stable/8/sys/netgraph/ng_mppc.c
==============================================================================
--- stable/8/sys/netgraph/ng_mppc.c	Thu Apr 15 12:41:36 2010	(r206660)
+++ stable/8/sys/netgraph/ng_mppc.c	Thu Apr 15 12:46:16 2010	(r206661)
@@ -53,6 +53,7 @@
 #include <sys/kernel.h>
 #include <sys/mbuf.h>
 #include <sys/malloc.h>
+#include <sys/endian.h>
 #include <sys/errno.h>
 #include <sys/syslog.h>
 
@@ -601,7 +602,7 @@ err1:
 	/* Install header */
 	M_PREPEND(m, MPPC_HDRLEN, M_DONTWAIT);
 	if (m != NULL)
-		*(mtod(m, uint16_t *)) = htons(header);
+		be16enc(mtod(m, void *), header);
 
 	*datap = m;
 	return (*datap == NULL ? ENOBUFS : 0);
@@ -630,8 +631,7 @@ ng_mppc_decompress(node_p node, struct m
 		m_freem(m);
 		return (EINVAL);
 	}
-	m_copydata(m, 0, MPPC_HDRLEN, (caddr_t)&header);
-	header = ntohs(header);
+	header = be16dec(mtod(m, void *));
 	cc = (header & MPPC_CCOUNT_MASK);
 	m_adj(m, MPPC_HDRLEN);
 

Modified: stable/8/sys/netgraph/ng_ppp.c
==============================================================================
--- stable/8/sys/netgraph/ng_ppp.c	Thu Apr 15 12:41:36 2010	(r206660)
+++ stable/8/sys/netgraph/ng_ppp.c	Thu Apr 15 12:46:16 2010	(r206661)
@@ -97,6 +97,7 @@
 #include <sys/time.h>
 #include <sys/mbuf.h>
 #include <sys/malloc.h>
+#include <sys/endian.h>
 #include <sys/errno.h>
 #include <sys/ctype.h>
 
@@ -860,8 +861,8 @@ ng_ppp_rcvdata_bypass(hook_p hook, item_
 		NG_FREE_ITEM(item);
 		return (ENOBUFS);
 	}
-	linkNum = ntohs(mtod(m, uint16_t *)[0]);
-	proto = ntohs(mtod(m, uint16_t *)[1]);
+	linkNum = be16dec(mtod(m, uint8_t *));
+	proto = be16dec(mtod(m, uint8_t *) + 2);
 	m_adj(m, 4);
 	NGI_M(item) = m;
 
@@ -1544,7 +1545,7 @@ ng_ppp_mp_recv(node_p node, item_p item,
 		if (m->m_len < 2 && (m = m_pullup(m, 2)) == NULL)
 			ERROUT(ENOBUFS);
 
-		shdr = ntohs(*mtod(m, uint16_t *));
+		shdr = be16dec(mtod(m, void *));
 		frag->seq = MP_SHORT_EXTEND(shdr);
 		frag->first = (shdr & MP_SHORT_FIRST_FLAG) != 0;
 		frag->last = (shdr & MP_SHORT_LAST_FLAG) != 0;
@@ -1561,7 +1562,7 @@ ng_ppp_mp_recv(node_p node, item_p item,
 		if (m->m_len < 4 && (m = m_pullup(m, 4)) == NULL)
 			ERROUT(ENOBUFS);
 
-		lhdr = ntohl(*mtod(m, uint32_t *));
+		lhdr = be32dec(mtod(m, void *));
 		frag->seq = MP_LONG_EXTEND(lhdr);
 		frag->first = (lhdr & MP_LONG_FIRST_FLAG) != 0;
 		frag->last = (lhdr & MP_LONG_LAST_FLAG) != 0;

Modified: stable/8/sys/netgraph/ng_pptpgre.c
==============================================================================
--- stable/8/sys/netgraph/ng_pptpgre.c	Thu Apr 15 12:41:36 2010	(r206660)
+++ stable/8/sys/netgraph/ng_pptpgre.c	Thu Apr 15 12:46:16 2010	(r206661)
@@ -62,6 +62,7 @@
 #include <sys/malloc.h>
 #include <sys/mbuf.h>
 #include <sys/mutex.h>
+#include <sys/endian.h>
 #include <sys/errno.h>
 
 #include <netinet/in.h>
@@ -572,9 +573,9 @@ ng_pptpgre_xmit(hpriv_p hpriv, item_p it
 	}
 
 	/* Build GRE header */
-	((u_int32_t *)gre)[0] = htonl(PPTP_INIT_VALUE);
-	gre->length = (m != NULL) ? htons((u_short)m->m_pkthdr.len) : 0;
-	gre->cid = htons(hpriv->conf.peerCid);
+	be32enc(gre, PPTP_INIT_VALUE);
+	be16enc(&gre->length, (m != NULL) ? m->m_pkthdr.len : 0);
+	be16enc(&gre->cid, hpriv->conf.peerCid);
 
 	/* Include sequence number if packet contains any data */
 	if (m != NULL) {
@@ -584,13 +585,13 @@ ng_pptpgre_xmit(hpriv_p hpriv, item_p it
 			    = ng_pptpgre_time();
 		}
 		hpriv->xmitSeq++;
-		gre->data[0] = htonl(hpriv->xmitSeq);
+		be32enc(&gre->data[0], hpriv->xmitSeq);
 	}
 
 	/* Include acknowledgement (and stop send ack timer) if needed */
 	if (hpriv->conf.enableAlwaysAck || hpriv->xmitAck != hpriv->recvSeq) {
 		gre->hasAck = 1;
-		gre->data[gre->hasSeq] = htonl(hpriv->recvSeq);
+		be32enc(&gre->data[gre->hasSeq], hpriv->recvSeq);
 		hpriv->xmitAck = hpriv->recvSeq;
 		if (hpriv->conf.enableDelayedAck)
 			ng_uncallout(&hpriv->sackTimer, hpriv->node);
@@ -705,18 +706,17 @@ ng_pptpgre_rcvdata_lower(hook_p hook, it
 
 	/* Sanity check packet length and GRE header bits */
 	extralen = m->m_pkthdr.len
-	    - (iphlen + grelen + gre->hasSeq * (u_int16_t)ntohs(gre->length));
+	    - (iphlen + grelen + gre->hasSeq * be16dec(&gre->length));
 	if (extralen < 0) {
 		priv->stats.recvBadGRE++;
 		ERROUT(EINVAL);
 	}
-	if ((ntohl(*((const u_int32_t *)gre)) & PPTP_INIT_MASK)
-	    != PPTP_INIT_VALUE) {
+	if ((be32dec(gre) & PPTP_INIT_MASK) != PPTP_INIT_VALUE) {
 		priv->stats.recvBadGRE++;
 		ERROUT(EINVAL);
 	}
 
-	hpriv = ng_pptpgre_find_session(priv, ntohs(gre->cid));
+	hpriv = ng_pptpgre_find_session(priv, be16dec(&gre->cid));
 	if (hpriv == NULL || hpriv->hook == NULL || !hpriv->conf.enabled) {
 		priv->stats.recvBadCID++;
 		ERROUT(EINVAL);
@@ -725,7 +725,7 @@ ng_pptpgre_rcvdata_lower(hook_p hook, it
 
 	/* Look for peer ack */
 	if (gre->hasAck) {
-		const u_int32_t	ack = ntohl(gre->data[gre->hasSeq]);
+		const u_int32_t	ack = be32dec(&gre->data[gre->hasSeq]);
 		const int index = ack - hpriv->recvAck - 1;
 		long sample;
 		long diff;
@@ -776,7 +776,7 @@ badAck:
 
 	/* See if frame contains any data */
 	if (gre->hasSeq) {
-		const u_int32_t seq = ntohl(gre->data[0]);
+		const u_int32_t seq = be32dec(&gre->data[0]);
 
 		/* Sanity check sequence number */
 		if (PPTP_SEQ_DIFF(seq, hpriv->recvSeq) <= 0) {

Modified: stable/8/sys/netgraph/ng_tcpmss.c
==============================================================================
--- stable/8/sys/netgraph/ng_tcpmss.c	Thu Apr 15 12:41:36 2010	(r206660)
+++ stable/8/sys/netgraph/ng_tcpmss.c	Thu Apr 15 12:46:16 2010	(r206661)
@@ -47,6 +47,7 @@
 
 #include <sys/param.h>
 #include <sys/systm.h>
+#include <sys/endian.h>
 #include <sys/errno.h>
 #include <sys/kernel.h>
 #include <sys/malloc.h>
@@ -410,9 +411,9 @@ correct_mss(struct tcphdr *tc, int hlen,
 {
 	int olen, optlen;
 	u_char *opt;
-	uint16_t *mss;
 	int accumulate;
 	int res = 0;
+	uint16_t sum;
 
 	for (olen = hlen - sizeof(struct tcphdr), opt = (u_char *)(tc + 1);
 	     olen > 0; olen -= optlen, opt += optlen) {
@@ -427,13 +428,15 @@ correct_mss(struct tcphdr *tc, int hlen,
 			if (*opt == TCPOPT_MAXSEG) {
 				if (optlen != TCPOLEN_MAXSEG)
 					continue;
-				mss = (uint16_t *)(opt + 2);
-				if (ntohs(*mss) > maxmss) {
-					accumulate = *mss;
-					*mss = htons(maxmss);
-					accumulate -= *mss;
-					if ((flags & CSUM_TCP) == 0)
-						TCPMSS_ADJUST_CHECKSUM(accumulate, tc->th_sum);
+				accumulate = be16dec(opt + 2);
+				if (accumulate > maxmss) {
+					if ((flags & CSUM_TCP) == 0) {
+						accumulate -= maxmss;
+						sum = be16dec(&tc->th_sum);
+						TCPMSS_ADJUST_CHECKSUM(accumulate, sum);
+						be16enc(&tc->th_sum, sum);
+					}
+					be16enc(opt + 2, maxmss);
 					res = 1;
 				}
 			}


More information about the svn-src-all mailing list