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-stable-8
mailing list