]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-dhcp6-client: introduce direct getter and setter of DUID
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 15 Nov 2023 02:54:48 +0000 (11:54 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 22 Dec 2023 19:15:09 +0000 (04:15 +0900)
src/libsystemd-network/sd-dhcp6-client.c
src/systemd/sd-dhcp6-client.h

index ed173b1e09e6eb2a8f6936b619fe6bfec8d5b3b9..14f397a85ab3aefa46f7e14b0243d37cfc2ab472 100644 (file)
@@ -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) {
index 0ceadb8b8a8120cf5b9d0758340788d253d4408f..65392580da5c954e92fe0ba31d96a4323f1bf9e0 100644 (file)
@@ -24,6 +24,7 @@
 #include <sys/types.h>
 
 #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);