Implement DHCPv4 default callbacks

This implements common callbacks to manage interface IPs and
routes in the kernel from DHCPv4.

Test Plan: New integration tests against our kernel via ktest.

X-Origin-Diff: phab/D657
GitOrigin-RevId: 3c39dddbd0e4151e6e902de150243296e6e459b4
diff --git a/core/pkg/dhcp4c/callback/BUILD.bazel b/core/pkg/dhcp4c/callback/BUILD.bazel
new file mode 100644
index 0000000..802bf11
--- /dev/null
+++ b/core/pkg/dhcp4c/callback/BUILD.bazel
@@ -0,0 +1,36 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
+load("//core/tools/ktest:ktest.bzl", "ktest")
+
+go_library(
+    name = "go_default_library",
+    srcs = ["callback.go"],
+    importpath = "git.monogon.dev/source/nexantic.git/core/pkg/dhcp4c/callback",
+    visibility = ["//visibility:public"],
+    deps = [
+        "//core/pkg/dhcp4c:go_default_library",
+        "@com_github_insomniacslk_dhcp//dhcpv4:go_default_library",
+        "@com_github_vishvananda_netlink//:go_default_library",
+        "@org_golang_x_sys//unix:go_default_library",
+    ],
+)
+
+go_test(
+    name = "go_default_test",
+    srcs = ["callback_test.go"],
+    embed = [":go_default_library"],
+    pure = "on",
+    deps = [
+        "//core/pkg/dhcp4c:go_default_library",
+        "@com_github_insomniacslk_dhcp//dhcpv4:go_default_library",
+        "@com_github_stretchr_testify//require:go_default_library",
+        "@com_github_vishvananda_netlink//:go_default_library",
+        "@org_golang_x_sys//unix:go_default_library",
+    ],
+)
+
+ktest(
+    cmdline = "",
+    initramfs_extra = "",
+    tester = ":go_default_test",
+    deps = [],
+)