diff options
author | maxim <maxim@FreeBSD.org> | 2005-10-12 18:13:25 +0000 |
---|---|---|
committer | maxim <maxim@FreeBSD.org> | 2005-10-12 18:13:25 +0000 |
commit | 98442a62dc9bf9961724efa2315b04339bf37c41 (patch) | |
tree | 5dc73ed7b1f7f0bf963893e80422b95e0c3bdca6 /sys/netinet/udp_usrreq.c | |
parent | 5370b7c9a9a8b075983dd97ecb10605b8fab4262 (diff) | |
download | FreeBSD-src-98442a62dc9bf9961724efa2315b04339bf37c41.zip FreeBSD-src-98442a62dc9bf9961724efa2315b04339bf37c41.tar.gz |
o INP_ONESBCAST is inpcb.inp_vflag flag not inp_flags. The confusion
with IP_PORTRANGE_HIGH leads to the incorrect checksum calculation.
PR: kern/87306
Submitted by: Rickard Lind
Reviewed by: bms
MFC after: 2 weeks
Diffstat (limited to 'sys/netinet/udp_usrreq.c')
-rw-r--r-- | sys/netinet/udp_usrreq.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c index 1f53137..ca0cdb9 100644 --- a/sys/netinet/udp_usrreq.c +++ b/sys/netinet/udp_usrreq.c @@ -860,14 +860,14 @@ udp_output(inp, m, addr, control, td) ipflags |= IP_ROUTETOIF; if (inp->inp_socket->so_options & SO_BROADCAST) ipflags |= IP_ALLOWBROADCAST; - if (inp->inp_flags & INP_ONESBCAST) + if (inp->inp_vflag & INP_ONESBCAST) ipflags |= IP_SENDONES; /* * Set up checksum and output datagram. */ if (udpcksum) { - if (inp->inp_flags & INP_ONESBCAST) + if (inp->inp_vflag & INP_ONESBCAST) faddr.s_addr = INADDR_BROADCAST; ui->ui_sum = in_pseudo(ui->ui_src.s_addr, faddr.s_addr, htons((u_short)len + sizeof(struct udphdr) + IPPROTO_UDP)); |