chiark / gitweb /
networkd: network - store DNS servers in List rather than Set
[elogind.git] / src / network / networkd-address.c
index 87688a5ae60db115dbc465963a3f50f986ed33aa..6977fe7947ed08eabf988eb92f7e9566d190b0b9 100644 (file)
@@ -59,7 +59,7 @@ int address_new_static(Network *network, unsigned section, Address **ret) {
 
         address->network = network;
 
-        LIST_PREPEND(static_addresses, network->static_addresses, address);
+        LIST_PREPEND(addresses, network->static_addresses, address);
 
         if (section) {
                 address->section = section;
@@ -92,7 +92,7 @@ void address_free(Address *address) {
                 return;
 
         if (address->network) {
-                LIST_REMOVE(static_addresses, address->network->static_addresses, address);
+                LIST_REMOVE(addresses, address->network->static_addresses, address);
 
                 if (address->section)
                         hashmap_remove(address->network->addresses_by_section,
@@ -313,7 +313,8 @@ int config_parse_dns(const char *unit,
                 const char *rvalue,
                 void *data,
                 void *userdata) {
-        Set **dns = data;
+        Network *network = userdata;
+        Address *tail;
         _cleanup_address_free_ Address *n = NULL;
         int r;
 
@@ -321,7 +322,7 @@ int config_parse_dns(const char *unit,
         assert(section);
         assert(lvalue);
         assert(rvalue);
-        assert(data);
+        assert(network);
 
         r = address_new_dynamic(&n);
         if (r < 0)
@@ -334,7 +335,8 @@ int config_parse_dns(const char *unit,
                 return 0;
         }
 
-        set_put(*dns, n);
+        LIST_FIND_TAIL(addresses, network->dns, tail);
+        LIST_INSERT_AFTER(addresses, network->dns, tail, n);
         n = NULL;
 
         return 0;