fix DHCP client and finish tests

This commit is contained in:
soypat
2025-06-20 13:51:10 -03:00
parent 2133966a16
commit 48f1fa9103
3 changed files with 22 additions and 8 deletions
+2 -2
View File
@@ -246,8 +246,8 @@ func (c *Client) setHeader(frm Frame) {
frm.SetXID(c.currentXID)
frm.SetHardware(1, 6, 0)
frm.SetSecs(1)
if c.state == StateBound {
// copy(frm.CIAddr()[:], c.offer[:])
if c.state == StateRequesting || c.state == StateSelecting || c.state == StateBound || c.state == StateRenewing {
copy(frm.CIAddr()[:], c.offer[:])
}
copy(frm.SIAddr()[:], c.svip[:])
copy(frm.YIAddr()[:], c.offer[:])
+19 -5
View File
@@ -32,7 +32,7 @@ func TestClientServer(t *testing.T) {
if err != nil {
t.Fatal(err)
} else if n == 0 {
t.Fatal("no data exchanged")
t.Fatal("no client discover")
}
assertClState(StateSelecting)
err = sv.Demux(buf[:n], 0)
@@ -44,23 +44,37 @@ func TestClientServer(t *testing.T) {
if err != nil {
t.Fatal(err)
} else if n == 0 {
t.Fatal("no data exchanged")
t.Fatal("no server offer")
}
err = cl.Demux(buf[:n], 0)
if err != nil {
t.Fatal(err)
}
assertClState(StateRequesting)
assertClState(StateSelecting)
// CLIENT SEND OUT ACK.
// CLIENT SEND OUT REQUEST.
n, err = cl.Encapsulate(buf[:], 0)
if err != nil {
t.Fatal(err)
} else if n == 0 {
t.Fatal("no data exchanged")
t.Fatal("no client request")
}
assertClState(StateRequesting)
err = sv.Demux(buf[:n], 0)
if err != nil {
t.Fatal(err)
}
// SERVER REPLIES WITH ACK.
n, err = sv.Encapsulate(buf[:], 0)
if err != nil {
t.Fatal(err)
} else if n == 0 {
t.Fatal("no server reply")
}
err = cl.Demux(buf[:n], 0)
if err != nil {
t.Fatal(err)
}
assertClState(StateBound)
}
+1 -1
View File
@@ -140,7 +140,7 @@ func (sv *Server) Demux(carrierData []byte, frameOffset int) error {
err = errors.New("DHCP request unexpected state")
break
}
client.state = StateBound
client.state = StateRequesting
sv.pending++
default: