mirror of
https://github.com/golang/net.git
synced 2026-04-01 02:47:08 +09:00
route: re-adjust routing message alignment for FreeBSD 386 emulation
On 11.2-RELEASE or above FreeBSD kernels, the breakage of routing message alignment for 386 emulation (see COMPAT_FREEBSD32 in sys/net/rtsock.c) is fixed. This change makes packages in the x/net repository work regardless of the kernel fix. Change-Id: Ie71cc7dfb842c66225f96d1fb0e8cc5de7c47015 Reviewed-on: https://go-review.googlesource.com/c/139577 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
@@ -57,7 +57,7 @@ func (m *InterfaceMessage) Sys() []Sys {
|
||||
func probeRoutingStack() (int, map[int]*wireFormat) {
|
||||
var p uintptr
|
||||
wordSize := int(unsafe.Sizeof(p))
|
||||
align := int(unsafe.Sizeof(p))
|
||||
align := wordSize
|
||||
// In the case of kern.supported_archs="amd64 i386", we need
|
||||
// to know the underlying kernel's architecture because the
|
||||
// alignment for routing facilities are set at the build time
|
||||
@@ -129,6 +129,9 @@ func probeRoutingStack() (int, map[int]*wireFormat) {
|
||||
} else {
|
||||
ifm.bodyOff = sizeofIfMsghdrFreeBSD11
|
||||
}
|
||||
if rel >= 1102000 { // see https://github.com/freebsd/freebsd/commit/027c7f4d66ff8d8c4a46c3665a5ee7d6d8462034#diff-ad4e5b7f1449ea3fc87bc97280de145b
|
||||
align = wordSize
|
||||
}
|
||||
}
|
||||
rtm.parse = rtm.parseRouteMessage
|
||||
ifm.parse = ifm.parseInterfaceMessage
|
||||
|
||||
Reference in New Issue
Block a user