From: Yu Watanabe Date: Wed, 15 Nov 2023 02:54:48 +0000 (+0900) Subject: sd-dhcp6-client: introduce direct getter and setter of DUID X-Git-Tag: v256-rc1~1353^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ce9bd2061602848710ba303bdeeadd06dd7a03cc;p=thirdparty%2Fsystemd.git sd-dhcp6-client: introduce direct getter and setter of DUID --- diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c index ed173b1e09e..14f397a85ab 100644 --- a/src/libsystemd-network/sd-dhcp6-client.c +++ b/src/libsystemd-network/sd-dhcp6-client.c @@ -268,6 +268,26 @@ int sd_dhcp6_client_set_duid_raw(sd_dhcp6_client *client, uint16_t duid_type, co return 0; } +int sd_dhcp6_client_set_duid(sd_dhcp6_client *client, const sd_dhcp_duid *duid) { + assert_return(client, -EINVAL); + assert_return(!sd_dhcp6_client_is_running(client), -EBUSY); + assert_return(sd_dhcp_duid_is_set(duid), -EINVAL); + + client->duid = *duid; + return 0; +} + +int sd_dhcp6_client_get_duid(sd_dhcp6_client *client, const sd_dhcp_duid **ret) { + assert_return(client, -EINVAL); + assert_return(ret, -EINVAL); + + if (!sd_dhcp_duid_is_set(&client->duid)) + return -ENODATA; + + *ret = &client->duid; + return 0; +} + int sd_dhcp6_client_duid_as_string( sd_dhcp6_client *client, char **duid) { diff --git a/src/systemd/sd-dhcp6-client.h b/src/systemd/sd-dhcp6-client.h index 0ceadb8b8a8..65392580da5 100644 --- a/src/systemd/sd-dhcp6-client.h +++ b/src/systemd/sd-dhcp6-client.h @@ -24,6 +24,7 @@ #include #include "sd-device.h" +#include "sd-dhcp-duid.h" #include "sd-dhcp6-lease.h" #include "sd-dhcp6-option.h" #include "sd-event.h" @@ -68,6 +69,8 @@ int sd_dhcp6_client_set_duid_ll(sd_dhcp6_client *client); int sd_dhcp6_client_set_duid_en(sd_dhcp6_client *client); int sd_dhcp6_client_set_duid_uuid(sd_dhcp6_client *client); int sd_dhcp6_client_set_duid_raw(sd_dhcp6_client *client, uint16_t duid_type, const uint8_t *duid, size_t duid_len); +int sd_dhcp6_client_set_duid(sd_dhcp6_client *client, const sd_dhcp_duid *duid); +int sd_dhcp6_client_get_duid(sd_dhcp6_client *client, const sd_dhcp_duid **ret); int sd_dhcp6_client_set_iaid( sd_dhcp6_client *client, uint32_t iaid);