[klibc] PATCH: ipconfig may accept DHCPOFFER as DHCPACK
Άλκης Γεωργόπουλος
alkisg at gmail.com
Fri Jun 13 17:34:13 PDT 2008
Thank you Peter,
diff -ur ../ipconfig.old/dhcp_proto.c ./dhcp_proto.c
--- ../ipconfig.old/dhcp_proto.c 2008-06-14 01:52:11.000000000 +0300
+++ ./dhcp_proto.c 2008-06-14 02:28:32.000000000 +0300
@@ -71,6 +71,11 @@
/*
* Parse a DHCP response packet
+ * Returns:
+ * 0 = Not handled
+ * 2 = DHCPOFFER (from dhcp_proto.h)
+ * 5 = DHCPACK
+ * 6 = DHCPNACK
*/
static int
dhcp_parse(struct netdev *dev, struct bootp_hdr *hdr, uint8_t * exts,
int extlen)
@@ -101,19 +106,19 @@
switch (type) {
case DHCPOFFER:
- ret = bootp_parse(dev, hdr, exts, extlen);
- if (ret == 1 && serverid != INADDR_NONE)
+ ret = bootp_parse(dev, hdr, exts, extlen) ? DHCPOFFER : 0;
+ if (ret == DHCPOFFER && serverid != INADDR_NONE)
dev->serverid = serverid;
DEBUG(("\n dhcp offer\n"));
break;
case DHCPACK:
- ret = bootp_parse(dev, hdr, exts, extlen);
+ ret = bootp_parse(dev, hdr, exts, extlen) ? DHCPACK : 0;
DEBUG(("\n dhcp ack\n"));
break;
case DHCPNAK:
- ret = 2;
+ ret = DHCPNAK;
DEBUG(("\n dhcp nak\n"));
break;
}
@@ -122,6 +127,12 @@
/*
* Receive and parse a DHCP packet
+ * Returns:
+ *-1 = Error in packet_recv
+ * 0 = Not handled
+ * 2 = DHCPOFFER (from dhcp_proto.h)
+ * 5 = DHCPACK
+ * 6 = DHCPNACK
*/
static int dhcp_recv(struct netdev *dev)
{
diff -ur ../ipconfig.old/main.c ./main.c
--- ../ipconfig.old/main.c 2008-06-14 01:52:11.000000000 +0300
+++ ./main.c 2008-06-14 02:30:45.000000000 +0300
@@ -192,7 +192,7 @@
case -1:
s->state = DEVST_ERROR;
break;
- case 1: /* Offer received */
+ case DHCPOFFER: /* Offer received */
s->state = DEVST_DHCPREQ;
dhcp_send_request(s->dev);
break;
@@ -205,10 +205,10 @@
case -1: /* error */
s->state = DEVST_ERROR;
break;
- case 1: /* ACK received */
+ case DHCPACK: /* ACK received */
s->state = DEVST_COMPLETE;
break;
- case 2: /* NAK received */
+ case DHCPNAK: /* NAK received */
s->state = DEVST_DHCPDISC;
break;
}
More information about the klibc
mailing list