From c28d81680538506296aa8a6a6bbb0efaffabe106 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sat, 2 Jun 2018 10:15:50 +0200 Subject: [PATCH] update for dhcp4client changes --- internal/dhcp4/dhcp4.go | 9 +++------ internal/dhcp4/dhcp4_test.go | 5 ++--- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/internal/dhcp4/dhcp4.go b/internal/dhcp4/dhcp4.go index 61eb155..c0ec885 100644 --- a/internal/dhcp4/dhcp4.go +++ b/internal/dhcp4/dhcp4.go @@ -3,7 +3,6 @@ package dhcp4 import ( "bytes" - "crypto/rand" "encoding/binary" "fmt" "log" @@ -36,7 +35,7 @@ type Client struct { hardwareAddr net.HardwareAddr cfg Config timeNow func() time.Time - randRead func([]byte) (int, error) + generateXID func([]byte) // last DHCPACK packet for renewal/release ack dhcp4.Packet @@ -48,9 +47,6 @@ func (c *Client) ObtainOrRenew() bool { if c.timeNow == nil { c.timeNow = time.Now } - if c.randRead == nil { - c.randRead = rand.Read - } if c.connection == nil && c.Interface != nil { pktsock, err := dhcp4client.NewPacketSock(c.Interface.Index) if err != nil { @@ -71,14 +67,15 @@ func (c *Client) ObtainOrRenew() bool { dhcp4client.Timeout(5*time.Second), dhcp4client.Broadcast(false), dhcp4client.Connection(c.connection), + dhcp4client.GenerateXID(c.generateXID), ) if err != nil { c.err = err return } - dhcp.RandRead = c.randRead c.dhcp = dhcp }) + c.err = nil // clear previous error // TODO: renew if c.ack != nil, fall back if renewal fails ok, ack, err := c.dhcpRequest() if err != nil { diff --git a/internal/dhcp4/dhcp4_test.go b/internal/dhcp4/dhcp4_test.go index be48738..83aa3b8 100644 --- a/internal/dhcp4/dhcp4_test.go +++ b/internal/dhcp4/dhcp4_test.go @@ -64,13 +64,12 @@ func TestDHCP4(t *testing.T) { hardwareAddr: mac, timeNow: func() time.Time { return now }, connection: &replayer{pcapr: pcapr}, - randRead: func(b []byte) (n int, err error) { + generateXID: func(b []byte) { if got, want := len(b), 4; got != want { - return 0, fmt.Errorf("github.com/d2g/dhcp4client request unexpected amount of bytes: got %d, want %d", got, want) + t.Fatalf("github.com/d2g/dhcp4client request unexpected amount of bytes: got %d, want %d", got, want) } // TODO: read the transaction ID from the pcap file copy(b, []byte{0x77, 0x08, 0xd7, 0x24}) - return len(b), nil }, }