Make hostid more convenient
[project/odhcpd.git] / src / config.c
index db5ca3b..068d1a7 100644 (file)
@@ -255,10 +255,12 @@ static int set_lease(struct uci_section *s)
                lease->duid_len = len;
        }
 
-       if ((c = tb[LEASE_ATTR_HOSTID]))
-               if (odhcpd_unhexlify((uint8_t*)&lease->hostid, sizeof(lease->hostid),
-                               blobmsg_get_string(c)) < 0)
+       if ((c = tb[LEASE_ATTR_HOSTID])) {
+               errno = 0;
+               lease->hostid = strtoul(blobmsg_get_string(c), NULL, 16);
+               if (errno)
                        goto err;
+       }
 
        list_add(&lease->head, &leases);
        return 0;
@@ -447,7 +449,13 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr
                                continue;
 
                        uint8_t buf[256];
-                       int len = dn_comp(blobmsg_get_string(cur), buf, sizeof(buf), NULL, NULL);
+                       char *domain = blobmsg_get_string(cur);
+                       size_t domainlen = strlen(domain);
+                       if (domainlen > 0 && domain[domainlen - 1] == '.')
+                               domain[domainlen - 1] = 0;
+
+                       int len = dn_comp(domain, buf, sizeof(buf), NULL, NULL);
+                       free(domain);
                        if (len <= 0)
                                goto err;