This way we preserve the order of preference.
const char *rvalue,
void *data,
void *userdata) {
- Set **dns = data;
+ Network *network = userdata;
+ Address *tail;
_cleanup_address_free_ Address *n = NULL;
int r;
assert(section);
assert(lvalue);
assert(rvalue);
- assert(data);
+ assert(network);
r = address_new_dynamic(&n);
if (r < 0)
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;
HASHMAP_FOREACH(link, m->links, i) {
if (link->network && link->network->dns) {
Address *address;
- Iterator j;
- SET_FOREACH(address, link->network->dns, j) {
+ LIST_FOREACH(addresses, address, link->network->dns) {
append_dns(f, &address->in_addr.in,
address->family, &count);
}
if (!network->routes_by_section)
return log_oom();
- network->dns = set_new(NULL, NULL);
- if (!network->dns)
- return log_oom();
-
network->filename = strdup(filename);
if (!network->filename)
return log_oom();
free(network->description);
- SET_FOREACH(address, network->dns, i)
+ while ((address = network->dns)) {
+ LIST_REMOVE(addresses, network->dns, address);
address_free(address);
-
- set_free(network->dns);
+ }
netdev_unref(network->bridge);
Hashmap *addresses_by_section;
Hashmap *routes_by_section;
- Set *dns;
+ LIST_HEAD(Address, dns);
LIST_FIELDS(Network, networks);
};