IFACE_ATTR_RA_OFFLINK,
IFACE_ATTR_RA_PREFERENCE,
IFACE_ATTR_RA_ADVROUTER,
+ IFACE_ATTR_RA_MININTERVAL,
IFACE_ATTR_RA_MAXINTERVAL,
+ IFACE_ATTR_RA_LIFETIME,
IFACE_ATTR_PD_MANAGER,
IFACE_ATTR_PD_CER,
IFACE_ATTR_NDPROXY_ROUTING,
[IFACE_ATTR_RA_OFFLINK] = { .name = "ra_offlink", .type = BLOBMSG_TYPE_BOOL },
[IFACE_ATTR_RA_PREFERENCE] = { .name = "ra_preference", .type = BLOBMSG_TYPE_STRING },
[IFACE_ATTR_RA_ADVROUTER] = { .name = "ra_advrouter", .type = BLOBMSG_TYPE_BOOL },
+ [IFACE_ATTR_RA_MININTERVAL] = { .name = "ra_mininterval", .type = BLOBMSG_TYPE_INT32 },
[IFACE_ATTR_RA_MAXINTERVAL] = { .name = "ra_maxinterval", .type = BLOBMSG_TYPE_INT32 },
+ [IFACE_ATTR_RA_LIFETIME] = { .name = "ra_lifetime", .type = BLOBMSG_TYPE_INT32 },
[IFACE_ATTR_NDPROXY_ROUTING] = { .name = "ndproxy_routing", .type = BLOBMSG_TYPE_BOOL },
[IFACE_ATTR_NDPROXY_SLAVE] = { .name = "ndproxy_slave", .type = BLOBMSG_TYPE_BOOL },
};
{
iface->managed = 1;
iface->learn_routes = 1;
+ iface->dhcpv4_leasetime = 43200;
+ iface->ra_maxinterval = 600;
+ iface->ra_mininterval = iface->ra_maxinterval/3;
+ iface->ra_lifetime = -1;
}
static void clean_interface(struct interface *iface)
goto err;
}
- if (time >= 60)
- return time;
+ if (time < 60)
+ time = 60;
- return 0;
+ return time;
err:
return -1;
if (time < 0)
goto err;
- if (time >= 60)
- lease->dhcpv4_leasetime = time;
+ lease->dhcpv4_leasetime = time;
}
list_add(&lease->head, &leases);
if (time < 0)
goto err;
- if (time >= 60)
- iface->dhcpv4_leasetime = time;
+ iface->dhcpv4_leasetime = time;
}
if ((c = tb[IFACE_ATTR_START])) {
if ((c = tb[IFACE_ATTR_RA_ADVROUTER]))
iface->ra_advrouter = blobmsg_get_bool(c);
+ if ((c = tb[IFACE_ATTR_RA_MININTERVAL]))
+ iface->ra_mininterval = blobmsg_get_u32(c);
+
if ((c = tb[IFACE_ATTR_RA_MAXINTERVAL]))
iface->ra_maxinterval = blobmsg_get_u32(c);
+ if ((c = tb[IFACE_ATTR_RA_LIFETIME]))
+ iface->ra_lifetime = blobmsg_get_u32(c);
+
if ((c = tb[IFACE_ATTR_RA_PREFERENCE])) {
const char *prio = blobmsg_get_string(c);