Introduction
Introduction Statistics Contact Development Disclaimer Help
Ignore unexpected DHCP messages - sdhcp - simple dhcp client
git clone git://git.codemadness.org/sdhcp
Log
Files
Refs
LICENSE
---
commit f397bb3ea1de20c1cac1baf2e091f2ec8c79ec82
parent 219b8fe1c38097c37de89b0c8c2aa771ebe1daff
Author: Michael Forney <[email protected]>
Date: Wed, 14 Nov 2018 18:40:35 -0800
Ignore unexpected DHCP messages
Diffstat:
M sdhcp.c | 92 ++++++++++++++++-------------…
1 file changed, 47 insertions(+), 45 deletions(-)
---
diff --git a/sdhcp.c b/sdhcp.c
@@ -356,30 +356,30 @@ Init:
alarm(1);
goto Selecting;
Selecting:
- switch (dhcprecv()) {
- case DHCPoffer:
- alarm(0);
- memcpy(client, bp.yiaddr, sizeof(client));
- optget(&bp, server, ODserverid, sizeof(server));
- optget(&bp, mask, OBmask, sizeof(mask));
- optget(&bp, router, OBrouter, sizeof(router));
- optget(&bp, dns, OBdnsserver, sizeof(dns));
- optget(&bp, &t1, ODlease, sizeof(t1));
- t1 = ntohl(t1);
- dhcpsend(DHCPrequest, Broadcast);
- goto Requesting;
- case Timeout:
- goto Init;
- default:
- goto Selecting;
+ for (;;) {
+ switch (dhcprecv()) {
+ case DHCPoffer:
+ alarm(0);
+ memcpy(client, bp.yiaddr, sizeof(client));
+ optget(&bp, server, ODserverid, sizeof(server));
+ optget(&bp, mask, OBmask, sizeof(mask));
+ optget(&bp, router, OBrouter, sizeof(router));
+ optget(&bp, dns, OBdnsserver, sizeof(dns));
+ optget(&bp, &t1, ODlease, sizeof(t1));
+ t1 = ntohl(t1);
+ dhcpsend(DHCPrequest, Broadcast);
+ goto Requesting;
+ case Timeout:
+ goto Init;
+ }
}
Requesting:
- switch (dhcprecv()) {
- case DHCPoffer:
- goto Requesting; /* ignore other offers. */
- case DHCPack:
- acceptlease();
- goto Bound;
+ for (;;) {
+ switch (dhcprecv()) {
+ case DHCPack:
+ acceptlease();
+ goto Bound;
+ }
}
Bound:
fputs("Congrats! You should be on the 'net.\n", stdout);
@@ -388,33 +388,35 @@ Bound:
exit(0);
forked = 1;
}
- switch (dhcprecv()) {
- case DHCPoffer:
- case DHCPack:
- case DHCPnak:
- goto Bound; /* discard offer, ACK or NAK */
- case Timeout:
- dhcpsend(DHCPrequest, Unicast);
- goto Renewing;
+ for (;;) {
+ switch (dhcprecv()) {
+ case Timeout:
+ dhcpsend(DHCPrequest, Unicast);
+ goto Renewing;
+ }
}
Renewing:
- switch (dhcprecv()) {
- case DHCPack:
- acceptlease();
- goto Bound;
- case DHCPnak:
- goto Init;
- case Timeout:
- dhcpsend(DHCPrequest, Broadcast);
- goto Rebinding;
+ for (;;) {
+ switch (dhcprecv()) {
+ case DHCPack:
+ acceptlease();
+ goto Bound;
+ case DHCPnak:
+ goto Init;
+ case Timeout:
+ dhcpsend(DHCPrequest, Broadcast);
+ goto Rebinding;
+ }
}
Rebinding:
- switch (dhcprecv()) {
- case DHCPnak: /* lease expired */
- goto Init;
- case DHCPack:
- acceptlease();
- goto Bound;
+ for (;;) {
+ switch (dhcprecv()) {
+ case DHCPnak: /* lease expired */
+ goto Init;
+ case DHCPack:
+ acceptlease();
+ goto Bound;
+ }
}
}
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.