Revert "Respect interface "ignore" settings as documented."
[project/odhcpd.git] / src / config.c
index ef51112..a3cb2be 100644 (file)
@@ -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);