net: Pull up the header to determine IP version
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 16 Dec 2016 17:13:42 +0000 (12:13 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 10 Jan 2017 00:01:40 +0000 (19:01 -0500)
There should be a byte in the block header, but with extra_data and SG
stuff, who knows.  My guess is that check was added when IPv6 was put in,
which was probably after the block header management a few lines down.

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

index 58f3c29..9806c25 100644 (file)
@@ -426,6 +426,7 @@ void ipiput4(struct Fs *f, struct Ipifc *ifc, struct block *bp)
        struct IP *ip;
        struct route *r;
 
+       bp = pullupblock(bp, 1);
        if (BLKIPVER(bp) != IP_VER4) {
                ipiput6(f, ifc, bp);
                return;