1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-06 13:09:50 +00:00

in_delayed_cksum() requires host byte order.

Reported by:	Alexander Levin <amindomao googlemail.com>
MFC after:	1 week
This commit is contained in:
Gleb Smirnoff 2010-09-06 13:17:01 +00:00
parent b039b6f4b1
commit 14a268a073
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=212256

View File

@ -295,12 +295,9 @@ ipfw_nat(struct ip_fw_args *args, struct cfg_nat *t, struct mbuf *m)
struct udphdr *uh;
u_short cksum;
/* XXX check if ip_len can stay in net format */
cksum = in_pseudo(
ip->ip_src.s_addr,
ip->ip_dst.s_addr,
htons(ip->ip_p + ntohs(ip->ip_len) - (ip->ip_hl << 2))
);
ip->ip_len = ntohs(ip->ip_len);
cksum = in_pseudo(ip->ip_src.s_addr, ip->ip_dst.s_addr,
htons(ip->ip_p + ip->ip_len - (ip->ip_hl << 2)));
switch (ip->ip_p) {
case IPPROTO_TCP:
@ -326,6 +323,7 @@ ipfw_nat(struct ip_fw_args *args, struct cfg_nat *t, struct mbuf *m)
in_delayed_cksum(mcl);
mcl->m_pkthdr.csum_flags &= ~CSUM_DELAY_DATA;
}
ip->ip_len = htons(ip->ip_len);
}
args->m = mcl;
return (IP_FW_NAT);