diff --git a/go.mod b/go.mod index 9b5a942c..00b4ed26 100644 --- a/go.mod +++ b/go.mod @@ -24,9 +24,6 @@ require ( github.com/mdlayher/ethernet v0.0.0-20220221185849-529eae5b6118 github.com/mdlayher/netlink v1.7.2 github.com/mdlayher/packet v1.1.2 - // TODO(a.garipov): This package is deprecated; find a new one or use our - // own code for that. Perhaps, use gopacket. - github.com/mdlayher/raw v0.1.0 github.com/miekg/dns v1.1.61 github.com/quic-go/quic-go v0.47.0 github.com/stretchr/testify v1.9.0 diff --git a/internal/dhcpd/conn_bsd.go b/internal/dhcpd/conn_bsd.go index bd7d48dd..e7e60396 100644 --- a/internal/dhcpd/conn_bsd.go +++ b/internal/dhcpd/conn_bsd.go @@ -16,18 +16,16 @@ import ( "github.com/insomniacslk/dhcp/dhcpv4" "github.com/insomniacslk/dhcp/dhcpv4/server4" "github.com/mdlayher/ethernet" - - //lint:ignore SA1019 See the TODO in go.mod. - "github.com/mdlayher/raw" + "github.com/mdlayher/packet" ) // dhcpUnicastAddr is the combination of MAC and IP addresses for responding to // the unconfigured host. type dhcpUnicastAddr struct { - // raw.Addr is embedded here to make *dhcpUcastAddr a net.Addr without + // packet.Addr is embedded here to make *dhcpUcastAddr a net.Addr without // actually implementing all methods. It also contains the client's // hardware address. - raw.Addr + packet.Addr // yiaddr is an IP address just allocated by server for the host. yiaddr net.IP @@ -53,7 +51,7 @@ type dhcpConn struct { // newDHCPConn creates the special connection for DHCP server. func (s *v4Server) newDHCPConn(iface *net.Interface) (c net.PacketConn, err error) { var ucast net.PacketConn - if ucast, err = raw.ListenPacket(iface, uint16(ethernet.EtherTypeIPv4), nil); err != nil { + if ucast, err = packet.Listen(iface, packet.Raw, int(ethernet.EtherTypeIPv4), nil); err != nil { return nil, fmt.Errorf("creating raw udp connection: %w", err) } @@ -259,7 +257,7 @@ func (s *v4Server) send(peer net.Addr, conn net.PacketConn, req, resp *dhcpv4.DH // Unicast DHCPOFFER and DHCPACK messages to the client's hardware // address and yiaddr. peer = &dhcpUnicastAddr{ - Addr: raw.Addr{HardwareAddr: req.ClientHWAddr}, + Addr: packet.Addr{HardwareAddr: req.ClientHWAddr}, yiaddr: resp.YourIPAddr, } default: diff --git a/internal/dhcpd/conn_bsd_internal_test.go b/internal/dhcpd/conn_bsd_internal_test.go index 9f3505b7..3cdee454 100644 --- a/internal/dhcpd/conn_bsd_internal_test.go +++ b/internal/dhcpd/conn_bsd_internal_test.go @@ -3,6 +3,7 @@ package dhcpd import ( + "github.com/mdlayher/packet" "net" "testing" @@ -12,9 +13,6 @@ import ( "github.com/insomniacslk/dhcp/dhcpv4" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - - //lint:ignore SA1019 See the TODO in go.mod. - "github.com/mdlayher/raw" ) func TestDHCPConn_WriteTo_common(t *testing.T) { @@ -57,7 +55,7 @@ func TestBuildEtherPkt(t *testing.T) { srcIP: net.IP{1, 2, 3, 4}, } peer := &dhcpUnicastAddr{ - Addr: raw.Addr{HardwareAddr: net.HardwareAddr{6, 5, 4, 3, 2, 1}}, + Addr: packet.Addr{HardwareAddr: net.HardwareAddr{6, 5, 4, 3, 2, 1}}, yiaddr: net.IP{4, 3, 2, 1}, } payload := (&dhcpv4.DHCPv4{}).ToBytes() @@ -102,7 +100,7 @@ func TestBuildEtherPkt(t *testing.T) { t.Run("serializing_error", func(t *testing.T) { // Create a peer with invalid MAC. badPeer := &dhcpUnicastAddr{ - Addr: raw.Addr{HardwareAddr: net.HardwareAddr{5, 4, 3, 2, 1}}, + Addr: packet.Addr{HardwareAddr: net.HardwareAddr{5, 4, 3, 2, 1}}, yiaddr: net.IP{4, 3, 2, 1}, } @@ -165,7 +163,7 @@ func TestV4Server_Send(t *testing.T) { req: &dhcpv4.DHCPv4{ClientHWAddr: knownMAC}, resp: &dhcpv4.DHCPv4{YourIPAddr: knownIP}, want: &dhcpUnicastAddr{ - Addr: raw.Addr{HardwareAddr: knownMAC}, + Addr: packet.Addr{HardwareAddr: knownMAC}, yiaddr: knownIP, }, }, {