int setup_dhcpv4_interface(struct interface *iface, bool enable)
{
if (iface->dhcpv4_event.uloop.fd > 0) {
+ uloop_fd_delete(&iface->dhcpv4_event.uloop);
close(iface->dhcpv4_event.uloop.fd);
iface->dhcpv4_event.uloop.fd = -1;
}
setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val));
setsockopt(sock, IPPROTO_IP, IP_PKTINFO, &val, sizeof(val));
- val = IPTOS_CLASS_CS6;
+ val = IPTOS_PREC_INTERNETCONTROL;
setsockopt(sock, IPPROTO_IP, IP_TOS, &val, sizeof(val));
val = IP_PMTUDISC_DONT;
end = addr.s_addr & mask.s_addr;
if (ntohl(mask.s_addr) <= 0xffffff00) {
- iface->dhcpv4_start.s_addr = start | htonl(20);
- iface->dhcpv4_end.s_addr = end | htonl(199);
+ iface->dhcpv4_start.s_addr = start | htonl(100);
+ iface->dhcpv4_end.s_addr = end | htonl(250);
} else {
iface->dhcpv4_start.s_addr = start | htonl(10);
iface->dhcpv4_end.s_addr = end | htonl(59);
if (iface->dhcpv4_leasetime < 60)
- iface->dhcpv4_leasetime = 1800;
+ iface->dhcpv4_leasetime = 43200;
iface->dhcpv4_event.uloop.fd = sock;
iface->dhcpv4_event.handle_dgram = handle_dhcpv4;