static void handle_dhcpv4(void *addr, void *data, size_t len,
- struct interface *iface);
+ struct interface *iface, void *dest_addr);
static struct dhcpv4_assignment* dhcpv4_lease(struct interface *iface,
enum dhcpv4_msg msg, const uint8_t *mac, struct in_addr reqaddr,
const char *hostname);
// Simple DHCPv6-server for information requests
static void handle_dhcpv4(void *addr, void *data, size_t len,
- struct interface *iface)
+ struct interface *iface, _unused void *dest_addr)
{
if (!iface->dhcpv4)
return;
}
}
- bool update_state = false;
if (msg == DHCPV4_MSG_DISCOVER || msg == DHCPV4_MSG_REQUEST) {
bool assigned = !!a;
size_t hostlen = strlen(hostname) + 1;
a = NULL;
}
- if (a)
- update_state = true;
-
if (assigned && a)
lease = a;
} else if (msg == DHCPV4_MSG_RELEASE) {
if (a) {
a->valid_until = 0;
- update_state = true;
}
} else if (msg == DHCPV4_MSG_DECLINE) {
memset(a->hwaddr, 0, sizeof(a->hwaddr));
a->valid_until = now + 3600; // Block address for 1h
- update_state = true;
}
- if (update_state)
- dhcpv6_write_statefile();
+ dhcpv6_write_statefile();
return lease;
}