Subject: 64-bit pointers in struct ipovly
To: None <current-users@NetBSD.ORG>
From: Niklas Hallqvist <niklas@appli.se>
List: current-users
Date: 04/28/1995 00:56:05
I was looking over the networking code in current when I saw the
ipovly struct in sys/netinet/ip_var.h.  This is used by the TCP/UDP
protcols to overlay the IP header part with useful internal info.
As it's defined, a 32-bit machine will make ipovly 20 bytes just as it
should be, but a 64-bit machine (alpha!) would make it 28 bytes.  How
can this work?  I know CGD uses the networking code regularily, but is
it the one checked into -current?

Why am I doing this?  Well, I downloaded Slirp to check it out.  It
looked quite nice to me so I decided to put it on an OSF/1 alpha at
school.  I soon discovered all TCP packets got corrupted checksums,
which I blame on the ipovly size mismatch.  Oh, BTW Slirp is a BSD44
(FreeBSD 2.0) based userland internet protocol stack emulating SLIP.

To me the -current code looks wrong, but I must be missing something,
as the code is used on 64bit archs.  What have I missed?

Niklas