From 2494ede1067d5071d3cc7d355cdc2ae3fac66dc5 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Sun, 11 Jan 2026 03:32:21 +0900 Subject: container/init: configure interface lo This enables loopback networking when owning the net namespace. Signed-off-by: Ophestra --- container/netlink_test.go | 72 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 container/netlink_test.go (limited to 'container/netlink_test.go') diff --git a/container/netlink_test.go b/container/netlink_test.go new file mode 100644 index 00000000..8ecc8ea0 --- /dev/null +++ b/container/netlink_test.go @@ -0,0 +1,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) + } + }) + } +} -- cgit v1.3.1