1 // Copyright 2014 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
14 "golang.org/x/net/internal/socket"
15 "golang.org/x/net/ipv4"
18 func TestParseIPv4Header(t *testing.T) {
19 switch socket.NativeEndian {
20 case binary.LittleEndian:
21 t.Run("LittleEndian", func(t *testing.T) {
22 // TODO(mikio): Add platform dependent wire
23 // header formats when we support new
25 wireHeaderFromKernel := [ipv4.HeaderLen]byte{
26 0x45, 0x01, 0xbe, 0xef,
27 0xca, 0xfe, 0x45, 0xdc,
28 0xff, 0x01, 0xde, 0xad,
32 wireHeaderFromTradBSDKernel := [ipv4.HeaderLen]byte{
33 0x45, 0x01, 0xef, 0xbe,
34 0xca, 0xfe, 0x45, 0xdc,
35 0xff, 0x01, 0xde, 0xad,
40 Version: ipv4.Version,
45 Flags: ipv4.DontFragment,
50 Src: net.IPv4(172, 16, 254, 254),
51 Dst: net.IPv4(192, 168, 0, 1),
56 wh = wireHeaderFromTradBSDKernel[:]
58 if freebsdVersion >= 1000000 {
59 wh = wireHeaderFromKernel[:]
61 wh = wireHeaderFromTradBSDKernel[:]
64 wh = wireHeaderFromKernel[:]
66 h, err := ParseIPv4Header(wh)
70 if !reflect.DeepEqual(h, th) {
71 t.Fatalf("got %#v; want %#v", h, th)