From cb34210012d4e96320eb17964c6d8ebe2423038b Mon Sep 17 00:00:00 2001 From: Hajimu UMEMOTO Date: Mon, 22 Oct 2001 12:43:30 +0000 Subject: [PATCH] restore the data of the ip header when extended udp header and data checksum is calculated. this caused some trouble in the code which the ip header is not modified. for example, inbound policy lookup failed. Obtained from: KAME MFC after: 1 week --- sys/netinet/udp_usrreq.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c index 463f8b3239e8..809091188aae 100644 --- a/sys/netinet/udp_usrreq.c +++ b/sys/netinet/udp_usrreq.c @@ -225,9 +225,12 @@ udp_input(m, off) m->m_pkthdr.csum_data + IPPROTO_UDP)); uh->uh_sum ^= 0xffff; } else { + char b[9]; + bcopy(((struct ipovly *)ip)->ih_x1, b, 9); bzero(((struct ipovly *)ip)->ih_x1, 9); ((struct ipovly *)ip)->ih_len = uh->uh_ulen; uh->uh_sum = in_cksum(m, len + sizeof (struct ip)); + bcopy(b, ((struct ipovly *)ip)->ih_x1, 9); } if (uh->uh_sum) { udpstat.udps_badsum++;