config: set RFC defaults for preferred lifetime
[project/odhcpd.git] / src / ubus.c
index 72d47c42536fee15b9f7152d7059916dd88db5be..45b29a4e6459d86d46a6d6f2cd7961ab552fcd51 100644 (file)
@@ -145,7 +145,10 @@ static int handle_dhcpv6_leases(_unused struct ubus_context *ctx, _unused struct
                        blobmsg_add_u32(&b, "iaid", ntohl(a->iaid));
                        blobmsg_add_string(&b, "hostname", (a->hostname) ? a->hostname : "");
                        blobmsg_add_u8(&b, "accept-reconf", a->accept_reconf);
-                       blobmsg_add_u32(&b, "assigned", a->assigned);
+                       if (a->flags & OAF_DHCPV6_NA)
+                               blobmsg_add_u64(&b, "assigned", a->assigned_host_id);
+                       else
+                               blobmsg_add_u16(&b, "assigned", a->assigned_subnet_id);
 
                        m = blobmsg_open_array(&b, "flags");
                        if (a->flags & OAF_BOUND)
@@ -174,10 +177,20 @@ static int handle_dhcpv6_leases(_unused struct ubus_context *ctx, _unused struct
        return 0;
 }
 
+static int handle_add_lease(_unused struct ubus_context *ctx, _unused struct ubus_object *obj,
+               _unused struct ubus_request_data *req, _unused const char *method,
+               struct blob_attr *msg)
+{
+       if (!set_lease_from_blobmsg(msg))
+               return UBUS_STATUS_OK;
+
+       return UBUS_STATUS_INVALID_ARGUMENT;
+}
 
 static struct ubus_method main_object_methods[] = {
        {.name = "ipv4leases", .handler = handle_dhcpv4_leases},
        {.name = "ipv6leases", .handler = handle_dhcpv6_leases},
+       UBUS_METHOD("add_lease", handle_add_lease, lease_attrs),
 };
 
 static struct ubus_object_type main_object_type =