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