From: Nandakumar Raghavan Date: Wed, 2 Aug 2023 10:34:17 +0000 (+0000) Subject: networkd: Add T1 and T2 DHCPv6 options to expose in dbus API X-Git-Tag: v255-rc1~665 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a2fc6f2d5979ea6bb04635b994d64dad54ca689e;p=thirdparty%2Fsystemd.git networkd: Add T1 and T2 DHCPv6 options to expose in dbus API Include T1 and T2 DHCPv6 options to expose in dbus API. Introduced new field DHCPv6lease where these options are added. This will be added to the JSON output when we query org.freedesktop.network1.Manager object. --- diff --git a/src/libsystemd-network/dhcp6-lease-internal.h b/src/libsystemd-network/dhcp6-lease-internal.h index f4c12ca7c4a..470fc798709 100644 --- a/src/libsystemd-network/dhcp6-lease-internal.h +++ b/src/libsystemd-network/dhcp6-lease-internal.h @@ -10,6 +10,7 @@ #include "sd-dhcp6-lease.h" #include "dhcp6-option.h" +#include "dhcp6-protocol.h" #include "macro.h" #include "time-util.h" diff --git a/src/network/networkd-json.c b/src/network/networkd-json.c index bb83a359678..78bf8705070 100644 --- a/src/network/networkd-json.c +++ b/src/network/networkd-json.c @@ -3,6 +3,7 @@ #include #include "dhcp-server-internal.h" +#include "dhcp6-lease-internal.h" #include "dns-domain.h" #include "ip-protocol-list.h" #include "netif-util.h" @@ -1023,6 +1024,42 @@ static int dhcp_server_append_json(Link *link, JsonVariant **v) { return json_append_one(v, "DHCPServer", w); } +static int dhcp6_client_lease_append_json(Link *link, JsonVariant **v) { + _cleanup_(json_variant_unrefp) JsonVariant *w = NULL; + int r; + + assert(link); + assert(v); + + if (!link->dhcp6_lease) + return 0; + + r = json_build(&w, JSON_BUILD_OBJECT( + JSON_BUILD_PAIR_FINITE_USEC("T1", link->dhcp6_lease->lifetime_t1), + JSON_BUILD_PAIR_FINITE_USEC("T2", link->dhcp6_lease->lifetime_t2))); + if (r < 0) + return r; + + return json_append_one(v, "Lease", w); +} + +static int dhcp6_client_append_json(Link *link, JsonVariant **v) { + _cleanup_(json_variant_unrefp) JsonVariant *w = NULL; + int r; + + assert(link); + assert(v); + + if (!link->dhcp6_client) + return 0; + + r = dhcp6_client_lease_append_json(link, &w); + if (r < 0) + return r; + + return json_append_one(v, "DHCPv6Client", w); +} + int link_build_json(Link *link, JsonVariant **ret) { _cleanup_(json_variant_unrefp) JsonVariant *v = NULL; _cleanup_free_ char *type = NULL, *flags = NULL; @@ -1138,6 +1175,10 @@ int link_build_json(Link *link, JsonVariant **ret) { if (r < 0) return r; + r = dhcp6_client_append_json(link, &v); + if (r < 0) + return r; + *ret = TAKE_PTR(v); return 0; }