net: Checksum loopback packets
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 6 Jan 2017 19:35:03 +0000 (14:35 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 10 Jan 2017 00:01:40 +0000 (19:01 -0500)
This finalizes the protocol level checksum for packets sent over loopback.

Previously, the network stack thought we were doing checksum offload (e.g.
Btcpck), but we never actually had the right checksum in the protocol
field, which xsum offload is supposed to do.

That would break the VMM's NAT when used over loopback (we'd give the guest
a packet with a bad TCP xsum).

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/net/loopbackmedium.c

index 19b80c3..b2eddf4 100644 (file)
@@ -94,6 +94,7 @@ loopbackbwrite(struct Ipifc *ifc, struct block *bp, int unused_int,
 {
        LB *lb;
 
+       ptclcsum_finalize(bp, 0);
        lb = ifc->arg;
        if (qpass(lb->q, bp) < 0)
                ifc->outerr++;