m/n/c/n/dhcp4c/transport: replace mdlayher/raw with mdlayher/packet

Change-Id: Iee27f977434d795fd16df6a16096fd8439f423ba
Reviewed-on: https://review.monogon.dev/c/monogon/+/2308
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
Tested-by: Jenkins CI
diff --git a/go.mod b/go.mod
index 00cfc6a..fcd887c 100644
--- a/go.mod
+++ b/go.mod
@@ -104,7 +104,6 @@
 	github.com/mdlayher/ethtool v0.0.0-20211028163843-288d040e9d60
 	github.com/mdlayher/genetlink v1.2.0
 	github.com/mdlayher/netlink v1.6.0
-	github.com/mdlayher/raw v0.1.0
 	github.com/mitchellh/go-wordwrap v1.0.0
 	github.com/opencontainers/runc v1.1.3
 	github.com/packethost/packngo v0.29.0
@@ -169,6 +168,7 @@
 	github.com/jsimonetti/rtnetlink v0.0.0-20211022192332-93da33804786 // indirect
 	github.com/lufia/iostat v1.2.0 // indirect
 	github.com/mattn/go-xmlrpc v0.0.3 // indirect
+	github.com/mdlayher/raw v0.1.0 // indirect
 	github.com/mdlayher/wifi v0.0.0-20200527114002-84f0b9457fdd // indirect
 	github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect
 	github.com/prometheus/exporter-toolkit v0.7.0 // indirect
@@ -321,7 +321,7 @@
 	github.com/mattn/go-runewidth v0.0.13 // indirect
 	github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
 	github.com/mdlayher/kobject v0.0.0-20200520190114-19ca17470d7d
-	github.com/mdlayher/packet v0.0.0-20220221164757-67998ac0ff93 // indirect
+	github.com/mdlayher/packet v0.0.0-20220221164757-67998ac0ff93
 	github.com/mdlayher/socket v0.2.1 // indirect
 	github.com/miekg/dns v1.1.48 // indirect
 	github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 // indirect
diff --git a/metropolis/node/core/network/dhcp4c/transport/BUILD.bazel b/metropolis/node/core/network/dhcp4c/transport/BUILD.bazel
index 8b8e02b..8d5425f 100644
--- a/metropolis/node/core/network/dhcp4c/transport/BUILD.bazel
+++ b/metropolis/node/core/network/dhcp4c/transport/BUILD.bazel
@@ -13,7 +13,7 @@
         "@com_github_google_gopacket//:gopacket",
         "@com_github_google_gopacket//layers",
         "@com_github_insomniacslk_dhcp//dhcpv4",
-        "@com_github_mdlayher_raw//:raw",
+        "@com_github_mdlayher_packet//:packet",
         "@org_golang_x_net//bpf",
         "@org_golang_x_sys//unix",
     ],
diff --git a/metropolis/node/core/network/dhcp4c/transport/transport_broadcast.go b/metropolis/node/core/network/dhcp4c/transport/transport_broadcast.go
index 6d051ee..7064255 100644
--- a/metropolis/node/core/network/dhcp4c/transport/transport_broadcast.go
+++ b/metropolis/node/core/network/dhcp4c/transport/transport_broadcast.go
@@ -26,7 +26,7 @@
 	"github.com/google/gopacket"
 	"github.com/google/gopacket/layers"
 	"github.com/insomniacslk/dhcp/dhcpv4"
-	"github.com/mdlayher/raw"
+	"github.com/mdlayher/packet"
 	"golang.org/x/net/bpf"
 )
 
@@ -90,7 +90,7 @@
 // stack fulfilling the specific requirements for broadcasting DHCP packets
 // (like all-zero source address, no ARP, ...)
 type BroadcastTransport struct {
-	rawConn *raw.Conn
+	rawConn *packet.Conn
 	iface   *net.Interface
 }
 
@@ -102,9 +102,8 @@
 	if t.rawConn != nil {
 		return errors.New("broadcast transport already open")
 	}
-	rawConn, err := raw.ListenPacket(t.iface, uint16(layers.EthernetTypeIPv4), &raw.Config{
-		LinuxSockDGRAM: true,
-		Filter:         bpfFilter,
+	rawConn, err := packet.Listen(t.iface, packet.Datagram, int(layers.EthernetTypeIPv4), &packet.Config{
+		Filter: bpfFilter,
 	})
 	if err != nil {
 		return fmt.Errorf("failed to create raw listener: %w", err)
@@ -117,7 +116,7 @@
 	if t.rawConn == nil {
 		return errors.New("broadcast transport closed")
 	}
-	packet := gopacket.NewSerializeBuffer()
+	pkt := gopacket.NewSerializeBuffer()
 	opts := gopacket.SerializeOptions{
 		ComputeChecksums: true,
 		FixLengths:       true,
@@ -144,7 +143,7 @@
 		panic("Invalid layer stackup encountered")
 	}
 
-	err := gopacket.SerializeLayers(packet, opts,
+	err := gopacket.SerializeLayers(pkt, opts,
 		ipLayer,
 		udpLayer,
 		gopacket.Payload(payload.ToBytes()))
@@ -153,7 +152,7 @@
 		return fmt.Errorf("failed to assemble packet: %w", err)
 	}
 
-	_, err = t.rawConn.WriteTo(packet.Bytes(), &raw.Addr{HardwareAddr: layers.EthernetBroadcast})
+	_, err = t.rawConn.WriteTo(pkt.Bytes(), &packet.Addr{HardwareAddr: layers.EthernetBroadcast})
 	if err != nil {
 		return fmt.Errorf("failed to transmit broadcast packet: %w", err)
 	}