sd-dhcp-client: refactor DNS support

Rather than keeping an array of pointers to addresses, just keep an array of addresses.
This commit is contained in:
Tom Gundersen
2014-01-16 20:32:08 +01:00
parent 1346b1f038
commit 7ae4ef6d23
4 changed files with 22 additions and 31 deletions
+3 -2
View File
@@ -491,7 +491,8 @@ static void dhcp_handler(sd_dhcp_client *client, int event, void *userdata) {
if (event == DHCP_EVENT_IP_CHANGE || event == DHCP_EVENT_IP_ACQUIRE) {
_cleanup_address_free_ Address *addr = NULL;
_cleanup_route_free_ Route *rt = NULL;
struct in_addr **nameservers;
struct in_addr *nameservers;
size_t nameservers_size;
log_struct_link(LOG_INFO, link,
"MESSAGE=%s: DHCPv4 address %u.%u.%u.%u/%u via %u.%u.%u.%u",
@@ -535,7 +536,7 @@ static void dhcp_handler(sd_dhcp_client *client, int event, void *userdata) {
rt = NULL;
if (link->network->dhcp_dns) {
r = sd_dhcp_client_get_dns(client, &nameservers);
r = sd_dhcp_client_get_dns(client, &nameservers, &nameservers_size);
if (r >= 0) {
r = manager_update_resolv_conf(link->manager);
if (r < 0)
+5 -4
View File
@@ -338,14 +338,15 @@ int manager_update_resolv_conf(Manager *m) {
HASHMAP_FOREACH(link, m->links, i) {
if (link->dhcp) {
struct in_addr **nameservers;
struct in_addr *nameservers;
size_t nameservers_size;
r = sd_dhcp_client_get_dns(link->dhcp, &nameservers);
r = sd_dhcp_client_get_dns(link->dhcp, &nameservers, &nameservers_size);
if (r >= 0) {
unsigned j;
for (j = 0; nameservers[j]; j++)
append_dns(f, nameservers[j], AF_INET, &count);
for (j = 0; j < nameservers_size; j++)
append_dns(f, &nameservers[j], AF_INET, &count);
}
}
}