I'm trying to speed up and simplify IP address acquisition in muvm.
Signed-off-by: Stefano Brivio
---
dhcp.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/dhcp.c b/dhcp.c
index 387aee3..732eb06 100644
--- a/dhcp.c
+++ b/dhcp.c
@@ -342,10 +342,17 @@ int dhcp(const struct ctx *c, const struct pool *p)
opt_off += *olen + 2;
}
+ opts[80].slen = -1;
if (opts[53].clen > 0 && opts[53].c[0] == DHCPDISCOVER) {
- info("DHCP: offer to discover");
- opts[53].s[0] = DHCPOFFER;
- } else if (opts[53].clen <= 0 || opts[53].c[0] == DHCPREQUEST) {
+ if (opts[80].clen == -1) {
+ info("DHCP: offer to discover");
+ opts[53].s[0] = DHCPOFFER;
+ } else {
+ info("DHCP: ack to discover (Rapid Commit)");
+ opts[53].s[0] = DHCPACK;
+ opts[80].slen = 0;
+ }
+ } else if (opts[53].clen <= 0 && opts[53].c[0] == DHCPREQUEST) {
info("%s: ack to request", /* DHCP needs a valid message type */
(opts[53].clen <= 0) ? "BOOTP" : "DHCP");
opts[53].s[0] = DHCPACK;
--
2.43.0