From: Yu Watanabe Date: Fri, 1 Mar 2024 01:37:51 +0000 (+0900) Subject: sd-dhcp-server: also expose lease expiration timestamp in realtime X-Git-Tag: v256-rc1~571^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aa8200e971facc8412ebf3b24df543b7808d1ad6;p=thirdparty%2Fsystemd.git sd-dhcp-server: also expose lease expiration timestamp in realtime Here, we use map_clock_usec_raw(), instead of map_clock_usec() to reduce number of calls of now() -> clock_gettime(). --- diff --git a/src/libsystemd-network/sd-dhcp-server-lease.c b/src/libsystemd-network/sd-dhcp-server-lease.c index deec9356a1d..17160445632 100644 --- a/src/libsystemd-network/sd-dhcp-server-lease.c +++ b/src/libsystemd-network/sd-dhcp-server-lease.c @@ -219,11 +219,20 @@ static int dhcp_server_lease_append_json(sd_dhcp_server_lease *lease, JsonVarian int dhcp_server_bound_leases_append_json(sd_dhcp_server *server, JsonVariant **v) { _cleanup_(json_variant_unrefp) JsonVariant *array = NULL; sd_dhcp_server_lease *lease; + usec_t now_b, now_r; int r; assert(server); assert(v); + r = sd_event_now(server->event, CLOCK_BOOTTIME, &now_b); + if (r < 0) + return r; + + r = sd_event_now(server->event, CLOCK_REALTIME, &now_r); + if (r < 0) + return r; + HASHMAP_FOREACH(lease, server->bound_leases_by_client_id) { _cleanup_(json_variant_unrefp) JsonVariant *w = NULL; @@ -231,9 +240,12 @@ int dhcp_server_bound_leases_append_json(sd_dhcp_server *server, JsonVariant **v if (r < 0) return r; + usec_t exp_r = map_clock_usec_raw(lease->expiration, now_b, now_r); + r = json_variant_merge_objectb(&w, JSON_BUILD_OBJECT( - JSON_BUILD_PAIR_UNSIGNED("ExpirationUSec", lease->expiration))); + JSON_BUILD_PAIR_UNSIGNED("ExpirationUSec", lease->expiration), + JSON_BUILD_PAIR_UNSIGNED("ExpirationRealtimeUSec", exp_r))); if (r < 0) return r;