aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/ip_divert.c
diff options
context:
space:
mode:
authorAndre Oppermann <andre@FreeBSD.org>2004-08-03 12:31:38 +0000
committerAndre Oppermann <andre@FreeBSD.org>2004-08-03 12:31:38 +0000
commitf0cada84b1e275b6067addcc9eea2d98600adb58 (patch)
tree8b4ba610fc0294632ab0b3b0f74762ddb2e4d817 /sys/netinet/ip_divert.c
parent39958d87d27dc03b93c805e48929ec509f3ccc49 (diff)
downloadsrc-f0cada84b1e275b6067addcc9eea2d98600adb58.tar.gz
src-f0cada84b1e275b6067addcc9eea2d98600adb58.zip
o Move all parts of the IP reassembly process into the function ip_reass() to
make it fully self-contained. o ip_reass() now returns a new mbuf with the reassembled packet and ip->ip_len including the IP header. o Computation of the delayed checksum is moved into divert_packet(). Reviewed by: silby
Notes
Notes: svn path=/head/; revision=133069
Diffstat (limited to 'sys/netinet/ip_divert.c')
-rw-r--r--sys/netinet/ip_divert.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/netinet/ip_divert.c b/sys/netinet/ip_divert.c
index 3a96177a2bc2..afd455e5dc22 100644
--- a/sys/netinet/ip_divert.c
+++ b/sys/netinet/ip_divert.c
@@ -168,6 +168,14 @@ divert_packet(struct mbuf *m, int incoming)
return;
ip = mtod(m, struct ip *);
+ /* Delayed checksums are currently not compatible with divert. */
+ if (m->m_pkthdr.csum_flags & CSUM_DELAY_DATA) {
+ ip->ip_len = ntohs(ip->ip_len);
+ in_delayed_cksum(m);
+ m->m_pkthdr.csum_flags &= ~CSUM_DELAY_DATA;
+ ip->ip_len = htons(ip->ip_len);
+ }
+
/*
* Record receive interface address, if any.
* But only for incoming packets.