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)
}