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",
+)