X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fodhcpd.git;a=blobdiff_plain;f=src%2Fconfig.c;h=a3cb2bec3e3ec5ec202b053e4ca577da3aef1207;hp=ef511129f64c3a9e290d6084830c5ec70332edd5;hb=4c89614ccf5d72ee0c0824e5050a8814748a32c3;hpb=e63a2837acfaf54c97a9db466bf485e9f7024fe8 diff --git a/src/config.c b/src/config.c index ef51112..a3cb2be 100644 --- a/src/config.c +++ b/src/config.c @@ -218,9 +218,10 @@ static void set_config(struct uci_section *s) } static double parse_leasetime(struct blob_attr *c) { - char *val = blobmsg_get_string(c), *endptr; - double time = strtod(val, &endptr); - if (time && endptr[0]) { + char *val = blobmsg_get_string(c), *endptr = NULL; + double time = strcmp(val, "infinite") ? strtod(val, &endptr) : UINT32_MAX; + + if (time && endptr && endptr[0]) { if (endptr[0] == 's') time *= 1; else if (endptr[0] == 'm') @@ -332,6 +333,11 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr return -1; strncpy(iface->name, name, sizeof(iface->name) - 1); + + /* Default settings */ + iface->managed = 1; + iface->learn_routes = true; + list_add(&iface->head, &interfaces); overwrite = true; } @@ -532,8 +538,6 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr if ((c = tb[IFACE_ATTR_RA_MANAGEMENT])) iface->managed = blobmsg_get_u32(c); - else if (overwrite) - iface->managed = 1; if ((c = tb[IFACE_ATTR_RA_OFFLINK])) iface->ra_not_onlink = blobmsg_get_bool(c); @@ -567,8 +571,6 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr if ((c = tb[IFACE_ATTR_NDPROXY_ROUTING])) iface->learn_routes = blobmsg_get_bool(c); - else if (overwrite) - iface->learn_routes = true; if ((c = tb[IFACE_ATTR_NDPROXY_SLAVE])) iface->external = blobmsg_get_bool(c);