galileo: Add process to perform DHCP configuration
This patch adds a process that is started automatically to request DHCP configuration. It also moves the IP configuration ahead of autostart processes in case some autostart process depends on the IP configuration.
This commit is contained in:
parent
6947fc7381
commit
c276081150
2 changed files with 53 additions and 2 deletions
|
@ -65,10 +65,10 @@ app_main(void)
|
|||
process_init();
|
||||
procinit_init();
|
||||
ctimer_init();
|
||||
autostart_start(autostart_processes);
|
||||
|
||||
eth_init();
|
||||
|
||||
autostart_start(autostart_processes);
|
||||
|
||||
while(1) {
|
||||
process_run();
|
||||
}
|
||||
|
|
|
@ -29,8 +29,10 @@
|
|||
*/
|
||||
|
||||
#include "eth-conf.h"
|
||||
#include <stdio.h>
|
||||
#include "net/eth-proc.h"
|
||||
#include "contiki-net.h"
|
||||
#include "net/ip/dhcpc.h"
|
||||
#include "net/linkaddr.h"
|
||||
|
||||
#if NETSTACK_CONF_WITH_IPV6
|
||||
|
@ -44,6 +46,8 @@ const linkaddr_t linkaddr_null = { { 0, 0, 0, 0, 0, 0 } };
|
|||
#define NAMESERVER_IP GATEWAY_IP
|
||||
#endif
|
||||
|
||||
PROCESS(dhcp_process, "DHCP");
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
eth_init(void)
|
||||
|
@ -70,5 +74,52 @@ eth_init(void)
|
|||
#endif
|
||||
|
||||
process_start(ð_process, NULL);
|
||||
/* Comment out the following line to disable DHCP and simply use the static
|
||||
* IP configuration setup above.
|
||||
*/
|
||||
process_start(&dhcp_process, NULL);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
PROCESS_THREAD(dhcp_process, ev, data)
|
||||
{
|
||||
PROCESS_BEGIN();
|
||||
|
||||
dhcpc_init(uip_lladdr.addr, sizeof(uip_lladdr.addr));
|
||||
|
||||
printf("Requesting DHCP configuration...\n");
|
||||
dhcpc_request();
|
||||
|
||||
while(1) {
|
||||
PROCESS_WAIT_EVENT();
|
||||
|
||||
if(ev == tcpip_event || ev == PROCESS_EVENT_TIMER) {
|
||||
dhcpc_appcall(ev, data);
|
||||
} else if(ev == PROCESS_EVENT_EXIT) {
|
||||
process_exit(&dhcp_process);
|
||||
}
|
||||
}
|
||||
|
||||
PROCESS_END();
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
dhcpc_configured(const struct dhcpc_state *s)
|
||||
{
|
||||
uip_sethostaddr(&s->ipaddr);
|
||||
uip_setnetmask(&s->netmask);
|
||||
uip_setdraddr(&s->default_router);
|
||||
uip_nameserver_update(&s->dnsaddr, UIP_NAMESERVER_INFINITE_LIFETIME);
|
||||
printf("DHCP configured:\n");
|
||||
printf(" - Host IP: %d.%d.%d.%d\n", uip_ipaddr_to_quad(&s->ipaddr));
|
||||
printf(" - Netmask: %d.%d.%d.%d\n", uip_ipaddr_to_quad(&s->netmask));
|
||||
printf(" - Default router: %d.%d.%d.%d\n",
|
||||
uip_ipaddr_to_quad(&s->default_router));
|
||||
printf(" - DNS server: %d.%d.%d.%d\n", uip_ipaddr_to_quad(&s->dnsaddr));
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
dhcpc_unconfigured(const struct dhcpc_state *s)
|
||||
{
|
||||
printf("DHCP unconfigured.\n");
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
|
Loading…
Reference in a new issue