aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/netlink_test.go
blob: 8ecc8ea0d454c2d360dc6dd896b614daa248b7a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package container

import (
	"testing"
	"unsafe"
)

func TestSizeof(t *testing.T) {
	if got := unsafe.Sizeof(newaddrLo{}); got != sizeofNewaddrLo {
		t.Fatalf("newaddrLo: sizeof = %#x, want %#x", got, sizeofNewaddrLo)
	}

	if got := unsafe.Sizeof(newlinkLo{}); got != sizeofNewlinkLo {
		t.Fatalf("newlinkLo: sizeof = %#x, want %#x", got, sizeofNewlinkLo)
	}
}

func TestRtnetlinkMessage(t *testing.T) {
	t.Parallel()

	testCases := []struct {
		name string
		msg  interface{ toWireFormat() []byte }
		want []byte
	}{
		{"newaddrLo", (&rtnetlink{pid: 1, seq: 0}).newaddrLo(1), []byte{
			/* Len   */ 0x28, 0, 0, 0,
			/* Type  */ 0x14, 0,
			/* Flags */ 5, 6,
			/* Seq   */ 0, 0, 0, 0,
			/* Pid   */ 1, 0, 0, 0,

			/* Family    */ 2,
			/* Prefixlen */ 8,
			/* Flags     */ 0x80,
			/* Scope     */ 0xfe,
			/* Index     */ 1, 0, 0, 0,

			/* Len     */ 8, 0,
			/* Type    */ 2, 0,
			/* in_addr */ 127, 0, 0, 1,

			/* Len     */ 8, 0,
			/* Type    */ 1, 0,
			/* in_addr */ 127, 0, 0, 1,
		}},

		{"newlinkLo", (&rtnetlink{pid: 1, seq: 1}).newlinkLo(1), []byte{
			/* Len   */ 0x20, 0, 0, 0,
			/* Type  */ 0x10, 0,
			/* Flags */ 5, 0,
			/* Seq   */ 1, 0, 0, 0,
			/* Pid   */ 1, 0, 0, 0,

			/* Family */ 0,
			/* pad    */ 0,
			/* Type   */ 0, 0,
			/* Index  */ 1, 0, 0, 0,
			/* Flags  */ 1, 0, 0, 0,
			/* Change */ 1, 0, 0, 0,
		}},
	}
	for _, tc := range testCases {
		t.Run(tc.name, func(t *testing.T) {
			t.Parallel()

			if got := tc.msg.toWireFormat(); string(got) != string(tc.want) {
				t.Fatalf("toWireFormat: %#v, want %#v", got, tc.want)
			}
		})
	}
}