X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fodhcpd.git;a=blobdiff_plain;f=src%2Fconfig.c;h=df0cbc4cb11f3c907540cb425c713f6c89783ee2;hp=69a3ad1a4db93ee5288d313003f81063a83e8cce;hb=e437ce9422c2f92752be5b6b3fd453e099a98a7e;hpb=a898ee5458950203d4b2f8fec28c85313c855b91 diff --git a/src/config.c b/src/config.c index 69a3ad1..df0cbc4 100644 --- a/src/config.c +++ b/src/config.c @@ -45,7 +45,9 @@ enum { 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, @@ -80,7 +82,9 @@ static const struct blobmsg_policy iface_attrs[IFACE_ATTR_MAX] = { [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 }, }; @@ -188,6 +192,10 @@ static void set_interface_defaults(struct interface *iface) { 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) @@ -281,10 +289,10 @@ static double parse_leasetime(struct blob_attr *c) { goto err; } - if (time >= 60) - return time; + if (time < 60) + time = 60; - return 0; + return time; err: return -1; @@ -344,8 +352,7 @@ static int set_lease(struct uci_section *s) if (time < 0) goto err; - if (time >= 60) - lease->dhcpv4_leasetime = time; + lease->dhcpv4_leasetime = time; } list_add(&lease->head, &leases); @@ -418,8 +425,7 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr if (time < 0) goto err; - if (time >= 60) - iface->dhcpv4_leasetime = time; + iface->dhcpv4_leasetime = time; } if ((c = tb[IFACE_ATTR_START])) { @@ -584,9 +590,15 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr 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);