+static void serialize_addresses(FILE *f, const char *key, struct in_addr *addresses, size_t size) {
+ unsigned i;
+
+ assert(key);
+ assert(addresses);
+ assert(size);
+
+ fputs("DNS=", f);
+
+ for (i = 0; i < size; i++)
+ fprintf(f, "%s%s", inet_ntoa(addresses[i]),
+ (i < (size - 1)) ? " ": "");
+
+ fputs("\n", f);
+}
+
+static int deserialize_addresses(struct in_addr **addresses, size_t *size, const char *string) {
+ char *word, *state;
+ size_t len;
+
+ FOREACH_WORD(word, len, string, state) {
+ struct in_addr *new_addresses;
+ int r;
+
+ new_addresses = realloc(*addresses, (*size + 1) * sizeof(struct in_addr));
+ if (!new_addresses)
+ return -ENOMEM;
+
+ r = inet_aton(word, &(new_addresses[*size]));
+ if (r < 0)
+ continue;
+
+ *addresses = new_addresses;
+ (*size)++;
+ }
+
+ return 0;
+}
+