Fix config parsing
[project/odhcpd.git] / src / config.c
index 5bb1a0e..9228a37 100644 (file)
@@ -331,7 +331,7 @@ int config_parse_interface(struct blob_attr *b, const char *name, bool overwrite
 
        if ((c = tb[IFACE_ATTR_UPSTREAM])) {
                struct blob_attr *cur;
-               int rem;
+               unsigned rem;
 
                blobmsg_for_each_attr(cur, c, rem) {
                        if (blobmsg_type(cur) != BLOBMSG_TYPE_STRING || !blobmsg_check_attr(cur, NULL))
@@ -344,25 +344,38 @@ int config_parse_interface(struct blob_attr *b, const char *name, bool overwrite
                }
        }
 
-       if ((c = tb[IFACE_ATTR_RA]))
-               if ((iface->ra = parse_mode(blobmsg_get_string(c))) < 0)
+       int mode;
+       if ((c = tb[IFACE_ATTR_RA])) {
+               if ((mode = parse_mode(blobmsg_get_string(c))) >= 0)
+                       iface->ra = mode;
+               else
                        goto err;
+       }
 
-       if ((c = tb[IFACE_ATTR_DHCPV4]))
-               if ((iface->dhcpv4 = parse_mode(blobmsg_get_string(c))) < 0)
+       if ((c = tb[IFACE_ATTR_DHCPV4])) {
+               if ((mode = parse_mode(blobmsg_get_string(c))) >= 0)
+                       iface->dhcpv4 = mode;
+               else
                        goto err;
+       }
 
-       if ((c = tb[IFACE_ATTR_DHCPV6]))
-               if ((iface->dhcpv6 = parse_mode(blobmsg_get_string(c))) < 0)
+       if ((c = tb[IFACE_ATTR_DHCPV6])) {
+               if ((mode = parse_mode(blobmsg_get_string(c))) >= 0)
+                       iface->dhcpv6 = mode;
+               else
                        goto err;
+       }
 
-       if ((c = tb[IFACE_ATTR_NDP]))
-               if ((iface->ndp = parse_mode(blobmsg_get_string(c))) < 0)
+       if ((c = tb[IFACE_ATTR_NDP])) {
+               if ((mode = parse_mode(blobmsg_get_string(c))) >= 0)
+                       iface->ndp = mode;
+               else
                        goto err;
+       }
 
        if ((c = tb[IFACE_ATTR_DNS])) {
                struct blob_attr *cur;
-               int rem;
+               unsigned rem;
 
                iface->always_rewrite_dns = true;
                blobmsg_for_each_attr(cur, c, rem) {
@@ -387,7 +400,7 @@ int config_parse_interface(struct blob_attr *b, const char *name, bool overwrite
 
        if ((c = tb[IFACE_ATTR_DOMAIN])) {
                struct blob_attr *cur;
-               int rem;
+               unsigned rem;
 
                blobmsg_for_each_attr(cur, c, rem) {
                        if (blobmsg_type(cur) != BLOBMSG_TYPE_STRING || !blobmsg_check_attr(cur, NULL))
@@ -437,7 +450,7 @@ int config_parse_interface(struct blob_attr *b, const char *name, bool overwrite
 
        if ((c = tb[IFACE_ATTR_NDPROXY_STATIC])) {
                struct blob_attr *cur;
-               int rem;
+               unsigned rem;
 
                blobmsg_for_each_attr(cur, c, rem) {
                        if (blobmsg_type(cur) != BLOBMSG_TYPE_STRING || !blobmsg_check_attr(cur, NULL))