diff options
Diffstat (limited to 'src/core/dns')
| -rw-r--r-- | src/core/dns/nm-dns-dnsconfd.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/core/dns/nm-dns-dnsconfd.c b/src/core/dns/nm-dns-dnsconfd.c index c17fb9cf..3789caf8 100644 --- a/src/core/dns/nm-dns-dnsconfd.c +++ b/src/core/dns/nm-dns-dnsconfd.c @@ -368,7 +368,8 @@ server_builder_append_base(GVariantBuilder *argument_builder, const char *address_string, const char *const *routing_domains, const char *const *search_domains, - const char *ca) + const char *ca, + int priority) { NMDnsServer dns_server; gsize addr_size; @@ -392,6 +393,12 @@ server_builder_append_base(GVariantBuilder *argument_builder, "{sv}", "name", g_variant_new("s", dns_server.servername)); + if (dns_server.port != NM_DNS_PORT_UNDEFINED) { + g_variant_builder_add(argument_builder, + "{sv}", + "port", + g_variant_new("i", dns_server.port)); + } if (routing_domains) { g_variant_builder_add(argument_builder, "{sv}", @@ -407,6 +414,9 @@ server_builder_append_base(GVariantBuilder *argument_builder, if (ca) { g_variant_builder_add(argument_builder, "{sv}", "ca", g_variant_new("s", ca)); } + /* dnsconfd defines priority as bigger number equals bigger priority, while NM + * uses the exact opposite, thus use -priority */ + g_variant_builder_add(argument_builder, "{sv}", "priority", g_variant_new("i", -priority)); return TRUE; } @@ -443,7 +453,8 @@ parse_global_config(const NMGlobalDnsConfig *global_config, servers[j], routing_domains, searches, - *ca)) { + *ca, + NM_DNS_PRIORITY_DEFAULT_NORMAL)) { g_variant_builder_close(argument_builder); } } @@ -560,7 +571,7 @@ dnsconfd_start_done(GObject *source_object, GAsyncResult *res, gpointer user_dat g_dbus_error_strip_remote_error(error); _LOGW("failed to start Dnsconfd %s", error->message); } else { - _LOGT("succesfully started Dnsconfd"); + _LOGT("successfully started Dnsconfd"); } /* No update maybe changed or state change, as this is handled by the name owner callbacks @@ -628,6 +639,7 @@ parse_all_interface_config(GVariantBuilder *argument_builder, NMDnsConfigIPData *ip_data; const char *const *dns_server_strings; guint nameserver_count; + int priority; const char *ifname; gboolean explicit_default = is_default_interface_explicit(ip_data_lst_head); @@ -648,6 +660,9 @@ parse_all_interface_config(GVariantBuilder *argument_builder, gather_interface_domains(ip_data, explicit_default, &routing_domains, &search_domains); get_networks(ip_data, &networks); + if (!nm_l3_config_data_get_dns_priority(ip_data->l3cd, ip_data->addr_family, &priority)) { + priority = NM_DNS_PRIORITY_DEFAULT_NORMAL; + } for (guint i = 0; i < nameserver_count; i++) { if (server_builder_append_base(argument_builder, @@ -655,7 +670,8 @@ parse_all_interface_config(GVariantBuilder *argument_builder, dns_server_strings[i], routing_domains, search_domains, - ca)) { + ca, + priority)) { server_builder_append_interface_info(argument_builder, ifname, networks); } } |