ifconfig and sysctl() PF_ROUTE fix for 32-bit jail running on 64-bit
kernel
Stef Walter
stef-list at memberwebs.com
Tue Aug 3 15:11:25 UTC 2010
Another patch for 32-bit compatibility on 64-bit kernel. I'm running
this way for some clients with older jails...
This bug makes ifconfig output look like:
: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
��: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet X.X.X.X netmask 0xffffffff broadcast X.X.X.X
: flags=8801<UP,SIMPLEX,MULTICAST> mtu 65536
: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
Notice how the interface names are all screwed up. This bug can also
cause certain processes using PF_ROUTE to read invalid memory and crash.
Recently code was added by jhb (thanks!) to sys/net/rtsock.c [1] which
handles compatibility of 32-bit processes. I posted a patch to
freebsd-net about this a while back [2].
However there's one minor issue with the new compat shims, and that is
that the ifi_datalen member of struct if_data is not set correctly. It's
supposed to be set to the size of the if_data struct, but in this case
it's set to the size of the 64-bit struct instead of the 32-bit one.
Just wanted to give folks a heads up in case anyone runs into the same
issue.
PR filed with details, patch and test program to reproduce problem:
http://www.freebsd.org/cgi/query-pr.cgi?pr=149240
Cheers,
Stef
PS: I'm traveling and this computer is not receiving email from the
list, so please CC stef at memberwebs.com on any responses to this thread.
[1]
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/net/rtsock.c?rev=1.187;content-type=text/x-cvsweb-markup
[2] http://www.mail-archive.com/freebsd-net@freebsd.org/msg30230.html
More information about the freebsd-jail
mailing list