if ((c = tb[IFACE_ATTR_RA_MANAGEMENT]))
iface->managed = blobmsg_get_u32(c);
- else
+ else if (overwrite)
iface->managed = 1;
if ((c = tb[IFACE_ATTR_RA_OFFLINK]))
if ((c = tb[IFACE_ATTR_NDPROXY_ROUTING]))
iface->learn_routes = blobmsg_get_bool(c);
- else
+ else if (overwrite)
iface->learn_routes = true;
if ((c = tb[IFACE_ATTR_NDPROXY_SLAVE]))
if (!iface->static_ndp)
goto err;
+ if (iface->static_ndp_len)
+ iface->static_ndp[iface->static_ndp_len - 1] = ' ';
+
memcpy(&iface->static_ndp[iface->static_ndp_len], blobmsg_get_string(cur), len);
iface->static_ndp_len += len;
}
void odhcpd_reload(void)
{
struct uci_context *uci = uci_alloc_context();
- struct lease *l;
- list_for_each_entry(l, &leases, head) {
+ while (!list_empty(&leases)) {
+ struct lease *l = list_first_entry(&leases, struct lease, head);
list_del(&l->head);
free(l->duid);
free(l);