diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-08-05 22:20:36 +0300 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-08-05 22:20:36 +0300 |
commit | b5a306ef73f9c31499f2d97f8b9d3db514b56a09 (patch) | |
tree | 9f1970d84dc720b7bc86824242d95cdedee784e1 /src/libsystemd-network/network-internal.c | |
parent | 8dbf626535136b6fe6e1cf7d4ff251b2f505087c (diff) | |
parent | 9b57d9aee48e78bb591baecea1c3dbafd974759f (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.c | 27 |
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); +} |