memset(&netdev_options, 0, sizeof netdev_options);
netdev_options.name = netdev_name;
netdev_options.ethertype = ETH_TYPE_IP;
- netdev_options.may_create = true;
- netdev_options.may_open = true;
error = netdev_open(&netdev_options, &netdev);
/* XXX install socket filter to catch only DHCP packets. */
dhclient_wait(struct dhclient *cli)
{
if (cli->min_timeout != UINT_MAX) {
- time_t now = time_now();
- unsigned int wake = sat_add(cli->state_entered, cli->min_timeout);
- if (wake <= now) {
- poll_immediate_wake();
- } else {
- poll_timer_wait(sat_mul(sat_sub(wake, now), 1000));
- }
+ long long int wake = sat_add(cli->state_entered, cli->min_timeout);
+ poll_timer_wait_until(wake * 1000);
}
/* Reset timeout to 1 second. This will have no effect ordinarily, because
* dhclient_run() will typically set it back to a higher value. If,
goto drained;
}
- flow_extract(&b, 0, &flow);
+ flow_extract(&b, 0, 0, &flow);
if (flow.dl_type != htons(ETH_TYPE_IP)
|| flow.nw_proto != IP_TYPE_UDP
|| flow.tp_dst != htons(DHCP_CLIENT_PORT)