go/net/psample: init

This adds a minimal golang implementation facilitating network packet
sampling based on 'psample' kernel module.

Metropolis kernel configuration was modified both in order for this
change to be testable in a ktest, as well as to make sure Metropolis
will be able to run the included code.

Change-Id: Ie6a4721455f26644b6be01aa6190cf87f21355f3
Reviewed-on: https://review.monogon.dev/c/monogon/+/1102
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
Tested-by: Jenkins CI
diff --git a/go/net/psample/BUILD.bazel b/go/net/psample/BUILD.bazel
new file mode 100644
index 0000000..36e19d3
--- /dev/null
+++ b/go/net/psample/BUILD.bazel
@@ -0,0 +1,29 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
+load("//metropolis/test/ktest:ktest.bzl", "ktest")
+
+go_library(
+    name = "psample",
+    srcs = ["subscriber.go"],
+    importpath = "source.monogon.dev/go/net/psample",
+    visibility = ["//visibility:public"],
+    deps = [
+        "@com_github_mdlayher_genetlink//:genetlink",
+        "@com_github_mdlayher_netlink//:netlink",
+    ],
+)
+
+go_test(
+    name = "psample_test",
+    srcs = ["psample_test.go"],
+    embed = [":psample"],
+    deps = [
+        "@com_github_google_gopacket//:gopacket",
+        "@com_github_google_gopacket//layers",
+        "@com_github_vishvananda_netlink//:netlink",
+        "@org_golang_x_sys//unix",
+    ],
+)
+
+ktest(
+    tester = ":psample_test",
+)