Introduction
Introduction Statistics Contact Development Disclaimer Help
Use parameters from DHCPACK, not DHCPOFFER - sdhcp - simple dhcp client
git clone git://git.codemadness.org/sdhcp
Log
Files
Refs
LICENSE
---
commit fafdfd63ff3595a27718bd3a44a35488f1282d33
parent 5506c81d9930e68cfb29960a4211454fd46262b9
Author: Michael Forney <[email protected]>
Date: Wed, 14 Nov 2018 18:40:40 -0800
Use parameters from DHCPACK, not DHCPOFFER
Also, don't bother sending back lease time to server in DHCPREQUEST.
Diffstat:
M sdhcp.c | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
---
diff --git a/sdhcp.c b/sdhcp.c
@@ -99,7 +99,6 @@ static unsigned char client[4];
static unsigned char mask[4];
static unsigned char router[4];
static unsigned char dns[4];
-static uint32_t renewaltime, rebindingtime, lease;
static int dflag = 1; /* change DNS in /etc/resolv.conf ? */
static int iflag = 1; /* set IP ? */
@@ -285,7 +284,6 @@ dhcpsend(int type, int how)
break;
case DHCPrequest:
/* memcpy(bp.ciaddr, client, sizeof bp.ciaddr); */
- p = hnoptput(p, ODlease, lease, sizeof(lease));
p = optput(p, ODipaddr, client, sizeof(client));
p = optput(p, ODserverid, server, sizeof(server));
break;
@@ -388,6 +386,7 @@ run(void)
{
int forked = 0, t;
struct itimerspec timeout = { 0 };
+ uint32_t renewaltime, rebindingtime, lease;
Init:
dhcpsend(DHCPdiscover, Broadcast);
@@ -401,15 +400,6 @@ Selecting:
case DHCPoffer:
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, &renewaltime, ODrenewaltime, sizeof(renewa…
- optget(&bp, &rebindingtime, ODrebindingtime, sizeof(re…
- optget(&bp, &lease, ODlease, sizeof(lease));
- renewaltime = ntohl(renewaltime);
- rebindingtime = ntohl(rebindingtime);
- lease = ntohl(lease);
goto Requesting;
case Timeout0:
goto Init;
@@ -437,6 +427,15 @@ Requesting:
/* no response from DHCPREQUEST after several attempts, go to INIT */
goto Init;
Bound:
+ optget(&bp, mask, OBmask, sizeof(mask));
+ optget(&bp, router, OBrouter, sizeof(router));
+ optget(&bp, dns, OBdnsserver, sizeof(dns));
+ optget(&bp, &renewaltime, ODrenewaltime, sizeof(renewaltime));
+ optget(&bp, &rebindingtime, ODrebindingtime, sizeof(rebindingtime));
+ optget(&bp, &lease, ODlease, sizeof(lease));
+ renewaltime = ntohl(renewaltime);
+ rebindingtime = ntohl(rebindingtime);
+ lease = ntohl(lease);
acceptlease();
fputs("Congrats! You should be on the 'net.\n", stdout);
if (!fflag && !forked) {
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.