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.SetXID(c.currentXID)
frm.SetHardware(1, 6, 0) frm.SetHardware(1, 6, 0)
frm.SetSecs(1) frm.SetSecs(1)
if c.state == StateBound { if c.state == StateRequesting || c.state == StateSelecting || c.state == StateBound || c.state == StateRenewing {
// copy(frm.CIAddr()[:], c.offer[:]) copy(frm.CIAddr()[:], c.offer[:])
} }
copy(frm.SIAddr()[:], c.svip[:]) copy(frm.SIAddr()[:], c.svip[:])
copy(frm.YIAddr()[:], c.offer[:]) copy(frm.YIAddr()[:], c.offer[:])
+19 -5
View File
@@ -32,7 +32,7 @@ func TestClientServer(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} else if n == 0 { } else if n == 0 {
t.Fatal("no data exchanged") t.Fatal("no client discover")
} }
assertClState(StateSelecting) assertClState(StateSelecting)
err = sv.Demux(buf[:n], 0) err = sv.Demux(buf[:n], 0)
@@ -44,23 +44,37 @@ func TestClientServer(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} else if n == 0 { } else if n == 0 {
t.Fatal("no data exchanged") t.Fatal("no server offer")
} }
err = cl.Demux(buf[:n], 0) err = cl.Demux(buf[:n], 0)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
assertClState(StateRequesting) assertClState(StateSelecting)
// CLIENT SEND OUT ACK. // CLIENT SEND OUT REQUEST.
n, err = cl.Encapsulate(buf[:], 0) n, err = cl.Encapsulate(buf[:], 0)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} else if n == 0 { } else if n == 0 {
t.Fatal("no data exchanged") t.Fatal("no client request")
} }
assertClState(StateRequesting)
err = sv.Demux(buf[:n], 0) err = sv.Demux(buf[:n], 0)
if err != nil { if err != nil {
t.Fatal(err) 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") err = errors.New("DHCP request unexpected state")
break break
} }
client.state = StateBound client.state = StateRequesting
sv.pending++ sv.pending++
default: default: