[En-Nut-Discussion] DHCP
Harald Kipp
harald.kipp at egnite.de
Fri Dec 2 10:12:08 CET 2011
Hi Michael,
On 02.12.2011 00:26, Michael Hellwig wrote:
> [1.DHCP-BOUND 12]
> [1.DHCP-BOUND 640]
> [1.DHCP-ERROR 1]
>
>
> After 640 seconds the dhcpc-thread reaches line 1476 and doesn't
> recover from the idle state anymore.
>
> if (dhcpApiTimeout <= tt) {
> dhcpError = DHCPERR_TIMEOUT;
> dhcpState = DHCPST_IDLE;
> continue;
> }
Confirmed. I used a simple test program with Nut/OS 4.8.9:
#include <dev/board.h>
#include <sys/version.h>
#include <sys/timer.h>
#include <sys/confnet.h>
#include <arpa/inet.h>
#include <pro/dhcp.h>
#include <stdio.h>
int main(void)
{
NutRegisterDevice(&DEV_DEBUG, 0, 0);
freopen(DEV_DEBUG_NAME, "w", stdout);
printf_P("DHCP-Test - Nut/OS %s\n", NutVersionString());
printf("Register...");
if (NutRegisterDevice(&DEV_ETHER, 0, 0)) {
puts("failed");
} else {
puts("OK");
}
/* NutRegister returns too fast on the EIR. */
NutSleep(3000);
printf("Configure...");
if (NutDhcpIfConfig("eth0", 0, 5000)) {
puts("failed");
} else {
puts("OK");
printf("IP: %s\n", inet_ntoa(confnet.cdn_ip_addr));
}
for (;;) {
NutSleep(5000);
}
return 0;
}
Here is the Makefile (note tabs below clean):
PROJ=testdhcp
include ../Makedefs
SRCS=$(PROJ).c dhcpc.c
OBJS=$(SRCS:.c=.o)
LIBS=$(LIBDIR)/nutinit.o -lnutpro -lnutnet -lnutos \
-lnutcrt -lnutdev -lnutarch
TARG=$(PROJ).hex
PARM=$(PROJ).eep
all: $(OBJS) $(TARG) $(ITARG) $(DTARG)
include ../Makerules
clean:
-rm -f $(OBJS)
-rm -f $(TARG) $(ITARG) $(DTARG)
-rm -f $(PROJ).map
-rm -f $(SRCS:.c=.lst)
Before running make, copy dhcpc.c into the application directory.
I got
[1.DHCP-INIT]
[1.DHCP-REBOOTING 192.168.192.207][DHCP-Send to
255.255.255.255][DHCP-Recv from 192.168.192.1][DHCP-Opt-
53][DHCP-Opt-1][DHCP-Opt-3][DHCP-Opt-6][DHCP-Opt-12][DHCP-Opt-15][DHCP-Opt-28][DHCP-Opt-38][DHCP-Opt-51]
[DHCP-Opt-54][DHCP-Opt-58][DHCP-Opt-59]
[2.DHCP-BOUND 0][DHCP-Config 192.168.192.207]
[1.DHCP-BOUND 0]OK
IP: 192.168.192.207
and after a while
[1.DHCP-BOUND 125]
[1.DHCP-ERROR 1]
Looks to me, that the dhcpApiTimeout needs to be cleared on DHCP-BOUND.
But I'm not yet sure.
Regards,
Harald
More information about the En-Nut-Discussion
mailing list