[systemd-devel] [PATCH 10/11] network: Add function to serialize an IPv6 address

Patrik Flykt patrik.flykt at linux.intel.com
Fri Jul 10 05:30:34 PDT 2015


---
 src/libsystemd-network/network-internal.c | 15 +++++++++++++++
 src/libsystemd-network/network-internal.h |  2 ++
 2 files changed, 17 insertions(+)

diff --git a/src/libsystemd-network/network-internal.c b/src/libsystemd-network/network-internal.c
index d579755..1db7dd2 100644
--- a/src/libsystemd-network/network-internal.c
+++ b/src/libsystemd-network/network-internal.c
@@ -32,6 +32,7 @@
 #include "conf-parser.h"
 #include "condition.h"
 #include "network-internal.h"
+#include "sd-icmp6-nd.h"
 
 const char *net_get_name(struct udev_device *device) {
         const char *name, *field;
@@ -384,6 +385,20 @@ int deserialize_in_addrs(struct in_addr **ret, const char *string) {
         return size;
 }
 
+void serialize_in6_addrs(FILE *f, const struct in6_addr *addresses,
+                         size_t size) {
+        unsigned i;
+
+        assert(f);
+        assert(addresses);
+        assert(size);
+
+        for (i = 0; i < size; i++)
+                fprintf(f, SD_ICMP6_ADDRESS_FORMAT_STR"%s",
+                        SD_ICMP6_ADDRESS_FORMAT_VAL(addresses[i]),
+                        (i < (size - 1)) ? " ": "");
+}
+
 int deserialize_in6_addrs(struct in6_addr **ret, const char *string) {
         _cleanup_free_ struct in6_addr *addresses = NULL;
         int size = 0;
diff --git a/src/libsystemd-network/network-internal.h b/src/libsystemd-network/network-internal.h
index 06aba89..4096eab 100644
--- a/src/libsystemd-network/network-internal.h
+++ b/src/libsystemd-network/network-internal.h
@@ -67,6 +67,8 @@ const char *net_get_name(struct udev_device *device);
 
 void serialize_in_addrs(FILE *f, const struct in_addr *addresses, size_t size);
 int deserialize_in_addrs(struct in_addr **addresses, const char *string);
+void serialize_in6_addrs(FILE *f, const struct in6_addr *addresses,
+                         size_t size);
 int deserialize_in6_addrs(struct in6_addr **addresses, const char *string);
 
 /* don't include "dhcp-lease-internal.h" as it causes conflicts between netinet/ip.h and linux/ip.h */
-- 
2.1.4



More information about the systemd-devel mailing list