osbase/net/dhcp4c: move package out of metropolis

Move the dhcp4c package from metropolis/node/core/network/dhcp4c to
osbase/net/dhcp4c. The package is not specific to metropolis, and is
also used by nanoswitch and cloud/agent.

Change-Id: I508261c93c623d5b7a33a2089da11625b7a3abd0
Reviewed-on: https://review.monogon.dev/c/monogon/+/4565
Tested-by: Jenkins CI
Reviewed-by: Tim Windelschmidt <tim@monogon.tech>
diff --git a/metropolis/node/core/network/BUILD.bazel b/metropolis/node/core/network/BUILD.bazel
index bec2f19..23fdd5d 100644
--- a/metropolis/node/core/network/BUILD.bazel
+++ b/metropolis/node/core/network/BUILD.bazel
@@ -16,13 +16,13 @@
         "//go/algorithm/toposort",
         "//go/logging",
         "//metropolis/node",
-        "//metropolis/node/core/network/dhcp4c",
-        "//metropolis/node/core/network/dhcp4c/callback",
         "//metropolis/node/core/network/ipam",
         "//metropolis/node/core/network/workloads",
         "//metropolis/node/core/productinfo",
         "//osbase/event",
         "//osbase/event/memory",
+        "//osbase/net/dhcp4c",
+        "//osbase/net/dhcp4c/callback",
         "//osbase/net/dns",
         "//osbase/net/dns/forward",
         "//osbase/net/proto",
diff --git a/metropolis/node/core/network/main.go b/metropolis/node/core/network/main.go
index 276e59e..2dcf7bb 100644
--- a/metropolis/node/core/network/main.go
+++ b/metropolis/node/core/network/main.go
@@ -17,12 +17,12 @@
 	"github.com/vishvananda/netlink"
 
 	"source.monogon.dev/metropolis/node"
-	"source.monogon.dev/metropolis/node/core/network/dhcp4c"
-	dhcpcb "source.monogon.dev/metropolis/node/core/network/dhcp4c/callback"
 	"source.monogon.dev/metropolis/node/core/network/ipam"
 	"source.monogon.dev/metropolis/node/core/network/workloads"
 	"source.monogon.dev/osbase/event"
 	"source.monogon.dev/osbase/event/memory"
+	"source.monogon.dev/osbase/net/dhcp4c"
+	dhcpcb "source.monogon.dev/osbase/net/dhcp4c/callback"
 	"source.monogon.dev/osbase/net/dns"
 	"source.monogon.dev/osbase/net/dns/forward"
 	"source.monogon.dev/osbase/supervisor"
diff --git a/metropolis/node/core/network/neigh.go b/metropolis/node/core/network/neigh.go
index d86dab7..c472d54 100644
--- a/metropolis/node/core/network/neigh.go
+++ b/metropolis/node/core/network/neigh.go
@@ -15,7 +15,7 @@
 	"github.com/vishvananda/netlink"
 	"golang.org/x/sys/unix"
 
-	"source.monogon.dev/metropolis/node/core/network/dhcp4c"
+	"source.monogon.dev/osbase/net/dhcp4c"
 )
 
 var ethernetNull = net.HardwareAddr{0, 0, 0, 0, 0, 0}
diff --git a/metropolis/node/core/network/static.go b/metropolis/node/core/network/static.go
index e8169d9..c7c5d6a 100644
--- a/metropolis/node/core/network/static.go
+++ b/metropolis/node/core/network/static.go
@@ -21,8 +21,8 @@
 	"source.monogon.dev/go/algorithm/toposort"
 	"source.monogon.dev/go/logging"
 	"source.monogon.dev/metropolis/node"
-	"source.monogon.dev/metropolis/node/core/network/dhcp4c"
-	dhcpcb "source.monogon.dev/metropolis/node/core/network/dhcp4c/callback"
+	"source.monogon.dev/osbase/net/dhcp4c"
+	dhcpcb "source.monogon.dev/osbase/net/dhcp4c/callback"
 	"source.monogon.dev/osbase/supervisor"
 	"source.monogon.dev/osbase/sysctl"
 
diff --git a/metropolis/test/nanoswitch/BUILD.bazel b/metropolis/test/nanoswitch/BUILD.bazel
index 9aff921..ef80101 100644
--- a/metropolis/test/nanoswitch/BUILD.bazel
+++ b/metropolis/test/nanoswitch/BUILD.bazel
@@ -11,9 +11,9 @@
     visibility = ["//visibility:private"],
     deps = [
         "//metropolis/node",
-        "//metropolis/node/core/network/dhcp4c",
-        "//metropolis/node/core/network/dhcp4c/callback",
         "//osbase/bringup",
+        "//osbase/net/dhcp4c",
+        "//osbase/net/dhcp4c/callback",
         "//osbase/supervisor",
         "//osbase/test/socksproxy",
         "@com_github_google_nftables//:nftables",
diff --git a/metropolis/test/nanoswitch/nanoswitch.go b/metropolis/test/nanoswitch/nanoswitch.go
index c3fde27..78d8efe 100644
--- a/metropolis/test/nanoswitch/nanoswitch.go
+++ b/metropolis/test/nanoswitch/nanoswitch.go
@@ -29,9 +29,9 @@
 	"github.com/vishvananda/netlink"
 
 	common "source.monogon.dev/metropolis/node"
-	"source.monogon.dev/metropolis/node/core/network/dhcp4c"
-	dhcpcb "source.monogon.dev/metropolis/node/core/network/dhcp4c/callback"
 	"source.monogon.dev/osbase/bringup"
+	"source.monogon.dev/osbase/net/dhcp4c"
+	dhcpcb "source.monogon.dev/osbase/net/dhcp4c/callback"
 	"source.monogon.dev/osbase/supervisor"
 )
 
diff --git a/metropolis/node/core/network/dhcp4c/BUILD.bazel b/osbase/net/dhcp4c/BUILD.bazel
similarity index 62%
rename from metropolis/node/core/network/dhcp4c/BUILD.bazel
rename to osbase/net/dhcp4c/BUILD.bazel
index 34f2a23..af7081c 100644
--- a/metropolis/node/core/network/dhcp4c/BUILD.bazel
+++ b/osbase/net/dhcp4c/BUILD.bazel
@@ -7,14 +7,10 @@
         "doc.go",
         "lease.go",
     ],
-    importpath = "source.monogon.dev/metropolis/node/core/network/dhcp4c",
-    visibility = [
-        "//metropolis/node:__subpackages__",
-        # Exception for this package: the DHCP client is also used by nanoswitch.
-        "//metropolis/test/nanoswitch:__subpackages__",
-    ],
+    importpath = "source.monogon.dev/osbase/net/dhcp4c",
+    visibility = ["//visibility:public"],
     deps = [
-        "//metropolis/node/core/network/dhcp4c/transport",
+        "//osbase/net/dhcp4c/transport",
         "//osbase/supervisor",
         "@com_github_cenkalti_backoff_v4//:backoff",
         "@com_github_insomniacslk_dhcp//dhcpv4",
@@ -30,7 +26,7 @@
     ],
     embed = [":dhcp4c"],
     deps = [
-        "//metropolis/node/core/network/dhcp4c/transport",
+        "//osbase/net/dhcp4c/transport",
         "@com_github_cenkalti_backoff_v4//:backoff",
         "@com_github_insomniacslk_dhcp//dhcpv4",
         "@com_github_stretchr_testify//assert",
diff --git a/metropolis/node/core/network/dhcp4c/callback/BUILD.bazel b/osbase/net/dhcp4c/callback/BUILD.bazel
similarity index 63%
rename from metropolis/node/core/network/dhcp4c/callback/BUILD.bazel
rename to osbase/net/dhcp4c/callback/BUILD.bazel
index 7e9827d..a8780fc 100644
--- a/metropolis/node/core/network/dhcp4c/callback/BUILD.bazel
+++ b/osbase/net/dhcp4c/callback/BUILD.bazel
@@ -4,14 +4,10 @@
 go_library(
     name = "callback",
     srcs = ["callback.go"],
-    importpath = "source.monogon.dev/metropolis/node/core/network/dhcp4c/callback",
-    visibility = [
-        "//metropolis/node:__subpackages__",
-        # Exception for this package: the DHCP client is also used by nanoswitch.
-        "//metropolis/test/nanoswitch:__subpackages__",
-    ],
+    importpath = "source.monogon.dev/osbase/net/dhcp4c/callback",
+    visibility = ["//visibility:public"],
     deps = [
-        "//metropolis/node/core/network/dhcp4c",
+        "//osbase/net/dhcp4c",
         "@com_github_insomniacslk_dhcp//dhcpv4",
         "@com_github_vishvananda_netlink//:netlink",
         "@org_golang_x_sys//unix",
@@ -23,7 +19,7 @@
     srcs = ["callback_test.go"],
     embed = [":callback"],
     deps = [
-        "//metropolis/node/core/network/dhcp4c",
+        "//osbase/net/dhcp4c",
         "@com_github_google_go_cmp//cmp",
         "@com_github_insomniacslk_dhcp//dhcpv4",
         "@com_github_vishvananda_netlink//:netlink",
diff --git a/metropolis/node/core/network/dhcp4c/callback/callback.go b/osbase/net/dhcp4c/callback/callback.go
similarity index 98%
rename from metropolis/node/core/network/dhcp4c/callback/callback.go
rename to osbase/net/dhcp4c/callback/callback.go
index 39c8ef1..dc3088b 100644
--- a/metropolis/node/core/network/dhcp4c/callback/callback.go
+++ b/osbase/net/dhcp4c/callback/callback.go
@@ -25,7 +25,7 @@
 	"github.com/vishvananda/netlink"
 	"golang.org/x/sys/unix"
 
-	"source.monogon.dev/metropolis/node/core/network/dhcp4c"
+	"source.monogon.dev/osbase/net/dhcp4c"
 )
 
 // Compose can be used to chain multiple callbacks
diff --git a/metropolis/node/core/network/dhcp4c/callback/callback_test.go b/osbase/net/dhcp4c/callback/callback_test.go
similarity index 99%
rename from metropolis/node/core/network/dhcp4c/callback/callback_test.go
rename to osbase/net/dhcp4c/callback/callback_test.go
index d9735df..db616bb 100644
--- a/metropolis/node/core/network/dhcp4c/callback/callback_test.go
+++ b/osbase/net/dhcp4c/callback/callback_test.go
@@ -16,7 +16,7 @@
 	"github.com/vishvananda/netlink"
 	"golang.org/x/sys/unix"
 
-	"source.monogon.dev/metropolis/node/core/network/dhcp4c"
+	"source.monogon.dev/osbase/net/dhcp4c"
 )
 
 func trivialLeaseFromNet(ipnet net.IPNet) *dhcp4c.Lease {
diff --git a/metropolis/node/core/network/dhcp4c/dhcpc.go b/osbase/net/dhcp4c/dhcpc.go
similarity index 99%
rename from metropolis/node/core/network/dhcp4c/dhcpc.go
rename to osbase/net/dhcp4c/dhcpc.go
index dff272b..ad4c9dd 100644
--- a/metropolis/node/core/network/dhcp4c/dhcpc.go
+++ b/osbase/net/dhcp4c/dhcpc.go
@@ -23,7 +23,7 @@
 	"github.com/insomniacslk/dhcp/dhcpv4"
 	"github.com/insomniacslk/dhcp/iana"
 
-	"source.monogon.dev/metropolis/node/core/network/dhcp4c/transport"
+	"source.monogon.dev/osbase/net/dhcp4c/transport"
 	"source.monogon.dev/osbase/supervisor"
 )
 
diff --git a/metropolis/node/core/network/dhcp4c/dhcpc_test.go b/osbase/net/dhcp4c/dhcpc_test.go
similarity index 99%
rename from metropolis/node/core/network/dhcp4c/dhcpc_test.go
rename to osbase/net/dhcp4c/dhcpc_test.go
index 57361fe..67651a7 100644
--- a/metropolis/node/core/network/dhcp4c/dhcpc_test.go
+++ b/osbase/net/dhcp4c/dhcpc_test.go
@@ -14,7 +14,7 @@
 	"github.com/insomniacslk/dhcp/dhcpv4"
 	"github.com/stretchr/testify/assert"
 
-	"source.monogon.dev/metropolis/node/core/network/dhcp4c/transport"
+	"source.monogon.dev/osbase/net/dhcp4c/transport"
 )
 
 type fakeTime struct {
diff --git a/metropolis/node/core/network/dhcp4c/doc.go b/osbase/net/dhcp4c/doc.go
similarity index 100%
rename from metropolis/node/core/network/dhcp4c/doc.go
rename to osbase/net/dhcp4c/doc.go
diff --git a/metropolis/node/core/network/dhcp4c/lease.go b/osbase/net/dhcp4c/lease.go
similarity index 100%
rename from metropolis/node/core/network/dhcp4c/lease.go
rename to osbase/net/dhcp4c/lease.go
diff --git a/metropolis/node/core/network/dhcp4c/lease_test.go b/osbase/net/dhcp4c/lease_test.go
similarity index 100%
rename from metropolis/node/core/network/dhcp4c/lease_test.go
rename to osbase/net/dhcp4c/lease_test.go
diff --git a/metropolis/node/core/network/dhcp4c/transport/BUILD.bazel b/osbase/net/dhcp4c/transport/BUILD.bazel
similarity index 74%
rename from metropolis/node/core/network/dhcp4c/transport/BUILD.bazel
rename to osbase/net/dhcp4c/transport/BUILD.bazel
index 8d5425f..8ba0830 100644
--- a/metropolis/node/core/network/dhcp4c/transport/BUILD.bazel
+++ b/osbase/net/dhcp4c/transport/BUILD.bazel
@@ -7,8 +7,8 @@
         "transport_broadcast.go",
         "transport_unicast.go",
     ],
-    importpath = "source.monogon.dev/metropolis/node/core/network/dhcp4c/transport",
-    visibility = ["//metropolis/node/core/network/dhcp4c:__subpackages__"],
+    importpath = "source.monogon.dev/osbase/net/dhcp4c/transport",
+    visibility = ["//osbase/net/dhcp4c:__subpackages__"],
     deps = [
         "@com_github_google_gopacket//:gopacket",
         "@com_github_google_gopacket//layers",
diff --git a/metropolis/node/core/network/dhcp4c/transport/transport.go b/osbase/net/dhcp4c/transport/transport.go
similarity index 100%
rename from metropolis/node/core/network/dhcp4c/transport/transport.go
rename to osbase/net/dhcp4c/transport/transport.go
diff --git a/metropolis/node/core/network/dhcp4c/transport/transport_broadcast.go b/osbase/net/dhcp4c/transport/transport_broadcast.go
similarity index 100%
rename from metropolis/node/core/network/dhcp4c/transport/transport_broadcast.go
rename to osbase/net/dhcp4c/transport/transport_broadcast.go
diff --git a/metropolis/node/core/network/dhcp4c/transport/transport_unicast.go b/osbase/net/dhcp4c/transport/transport_unicast.go
similarity index 100%
rename from metropolis/node/core/network/dhcp4c/transport/transport_unicast.go
rename to osbase/net/dhcp4c/transport/transport_unicast.go