summaryrefslogtreecommitdiff
path: root/src/libsystemd-network/network-internal.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2015-08-05 22:20:36 +0300
committerLennart Poettering <lennart@poettering.net>2015-08-05 22:20:36 +0300
commitb5a306ef73f9c31499f2d97f8b9d3db514b56a09 (patch)
tree9f1970d84dc720b7bc86824242d95cdedee784e1 /src/libsystemd-network/network-internal.c
parent8dbf626535136b6fe6e1cf7d4ff251b2f505087c (diff)
parent9b57d9aee48e78bb591baecea1c3dbafd974759f (diff)
Merge pull request #877 from crawford/dhcp-private-options-v4
networkd: save private-zone DHCP options
Diffstat (limited to 'src/libsystemd-network/network-internal.c')
-rw-r--r--src/libsystemd-network/network-internal.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/libsystemd-network/network-internal.c b/src/libsystemd-network/network-internal.c
index d579755cc8..3d78bf8b35 100644
--- a/src/libsystemd-network/network-internal.c
+++ b/src/libsystemd-network/network-internal.c
@@ -509,3 +509,30 @@ int deserialize_dhcp_routes(struct sd_dhcp_route **ret, size_t *ret_size, size_t
return 0;
}
+
+int serialize_dhcp_option(FILE *f, const char *key, const uint8_t *data, size_t size) {
+ _cleanup_free_ char *hex_buf = NULL;
+
+ assert(f);
+ assert(key);
+ assert(data);
+
+ hex_buf = hexmem(data, size);
+ if (hex_buf == NULL)
+ return -ENOMEM;
+
+ fprintf(f, "%s=%s\n", key, hex_buf);
+
+ return 0;
+}
+
+int deserialize_dhcp_option(uint8_t **data, size_t *data_len, const char *string) {
+ assert(data);
+ assert(data_len);
+ assert(string);
+
+ if (strlen(string) % 2)
+ return -EINVAL;
+
+ return unhexmem(string, strlen(string), (void **)data, data_len);
+}