ipv4: add support for FreeBSD 11
From FreeBSD 11 both ip_len and ip_off fields of struct ip must be
provided in network byte order. See IP(4) on FreeBSD.
Change-Id: I091b551074767daf098cc1d6a256eddc4f55e304
Reviewed-on: https://go-review.googlesource.com/30736
Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/ipv4/header_test.go b/ipv4/header_test.go
index 85cb9c4..4e57139 100644
--- a/ipv4/header_test.go
+++ b/ipv4/header_test.go
@@ -18,8 +18,9 @@
wireHeaderFromKernel [HeaderLen]byte
wireHeaderToKernel [HeaderLen]byte
wireHeaderFromTradBSDKernel [HeaderLen]byte
- wireHeaderFromFreeBSD10Kernel [HeaderLen]byte
wireHeaderToTradBSDKernel [HeaderLen]byte
+ wireHeaderFromFreeBSD10Kernel [HeaderLen]byte
+ wireHeaderToFreeBSD10Kernel [HeaderLen]byte
*Header
}
@@ -47,6 +48,13 @@
172, 16, 254, 254,
192, 168, 0, 1,
},
+ wireHeaderToTradBSDKernel: [HeaderLen]byte{
+ 0x45, 0x01, 0xef, 0xbe,
+ 0xca, 0xfe, 0xdc, 0x45,
+ 0xff, 0x01, 0xde, 0xad,
+ 172, 16, 254, 254,
+ 192, 168, 0, 1,
+ },
wireHeaderFromFreeBSD10Kernel: [HeaderLen]byte{
0x45, 0x01, 0xef, 0xbe,
0xca, 0xfe, 0xdc, 0x45,
@@ -54,7 +62,7 @@
172, 16, 254, 254,
192, 168, 0, 1,
},
- wireHeaderToTradBSDKernel: [HeaderLen]byte{
+ wireHeaderToFreeBSD10Kernel: [HeaderLen]byte{
0x45, 0x01, 0xef, 0xbe,
0xca, 0xfe, 0xdc, 0x45,
0xff, 0x01, 0xde, 0xad,
@@ -92,10 +100,13 @@
case "darwin", "dragonfly", "netbsd":
wh = tt.wireHeaderToTradBSDKernel[:]
case "freebsd":
- if freebsdVersion < 1000000 {
+ switch {
+ case freebsdVersion < 1000000:
wh = tt.wireHeaderToTradBSDKernel[:]
- } else {
- wh = tt.wireHeaderFromFreeBSD10Kernel[:]
+ case 1000000 <= freebsdVersion && freebsdVersion < 1100000:
+ wh = tt.wireHeaderToFreeBSD10Kernel[:]
+ default:
+ wh = tt.wireHeaderToKernel[:]
}
default:
wh = tt.wireHeaderToKernel[:]
@@ -116,10 +127,13 @@
case "darwin", "dragonfly", "netbsd":
wh = tt.wireHeaderFromTradBSDKernel[:]
case "freebsd":
- if freebsdVersion < 1000000 {
+ switch {
+ case freebsdVersion < 1000000:
wh = tt.wireHeaderFromTradBSDKernel[:]
- } else {
+ case 1000000 <= freebsdVersion && freebsdVersion < 1100000:
wh = tt.wireHeaderFromFreeBSD10Kernel[:]
+ default:
+ wh = tt.wireHeaderFromKernel[:]
}
default:
wh = tt.wireHeaderFromKernel[:]