mirror of
https://github.com/systemd/systemd
synced 2024-10-02 22:37:25 +00:00
sd-dhcp-client-id: introduce json_dispatch_client_id()
This commit is contained in:
parent
72278e62d9
commit
0705e05c3d
|
@ -4,6 +4,7 @@
|
|||
#include "sd-dhcp-client-id.h"
|
||||
|
||||
#include "dhcp-duid-internal.h"
|
||||
#include "json.h"
|
||||
#include "macro.h"
|
||||
#include "siphash24.h"
|
||||
#include "sparse-endian.h"
|
||||
|
@ -55,3 +56,5 @@ static inline bool client_id_data_size_is_valid(size_t size) {
|
|||
|
||||
void client_id_hash_func(const sd_dhcp_client_id *client_id, struct siphash *state);
|
||||
int client_id_compare_func(const sd_dhcp_client_id *a, const sd_dhcp_client_id *b);
|
||||
|
||||
int json_dispatch_client_id(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata);
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include "alloc-util.h"
|
||||
#include "dhcp-client-id-internal.h"
|
||||
#include "iovec-util.h"
|
||||
#include "unaligned.h"
|
||||
#include "utf8.h"
|
||||
|
||||
|
@ -177,3 +178,19 @@ int client_id_compare_func(const sd_dhcp_client_id *a, const sd_dhcp_client_id *
|
|||
|
||||
return memcmp_nn(a->raw, a->size, b->raw, b->size);
|
||||
}
|
||||
|
||||
int json_dispatch_client_id(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) {
|
||||
sd_dhcp_client_id *client_id = ASSERT_PTR(userdata);
|
||||
_cleanup_(iovec_done) struct iovec iov = {};
|
||||
int r;
|
||||
|
||||
r = json_dispatch_byte_array_iovec(name, variant, flags, &iov);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = sd_dhcp_client_id_set_raw(client_id, iov.iov_base, iov.iov_len);
|
||||
if (r < 0)
|
||||
return json_log(variant, flags, r, "Failed to set DHCP client ID from JSON field '%s': %m", strna(name));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue