4
4
Subject: [PATCH] dns: update dnsmasq nameservers via its DBus SetServers method
7
src/dns-manager/nm-dns-dnsmasq.c | 350 ++++++++++++++++++++++++---------------
7
src/dns-manager/nm-dns-dnsmasq.c | 354 ++++++++++++++++++++++++---------------
8
8
src/dns-manager/nm-dns-manager.c | 24 ++
9
9
src/dns-manager/nm-dns-plugin.c | 16 +
10
10
src/dns-manager/nm-dns-plugin.h | 1
11
4 files changed, 261 insertions(+), 130 deletions(-)
11
4 files changed, 265 insertions(+), 130 deletions(-)
13
13
Index: b/src/dns-manager/nm-dns-dnsmasq.c
14
14
===================================================================
80
80
- g_string_append_printf (str, "server=/%s/%s\n",
81
81
- nm_ip4_config_get_search (ip4, i),
83
+ char *search = nm_ip4_config_get_search (ip4, i);
83
84
+ dbus_message_append_args (message,
84
+ DBUS_TYPE_STRING, nm_ip4_config_get_search (ip4, i),
85
+ DBUS_TYPE_STRING, &search,
85
86
+ DBUS_TYPE_INVALID);
89
@@ -104,9 +113,9 @@ add_ip4_config (GString *str, NMIP4Confi
90
@@ -104,9 +114,10 @@ add_ip4_config (GString *str, NMIP4Confi
90
91
/* If not searches, use any domains */
91
92
n = nm_ip4_config_get_num_domains (ip4);
92
93
for (i = 0; i < n; i++) {
93
94
- g_string_append_printf (str, "server=/%s/%s\n",
94
95
- nm_ip4_config_get_domain (ip4, i),
97
+ char *domain = nm_ip4_config_get_domain (ip4, i);
96
98
+ dbus_message_append_args (message,
97
+ DBUS_TYPE_STRING, nm_ip4_config_get_domain (ip4, i),
99
+ DBUS_TYPE_STRING, &domain,
98
100
+ DBUS_TYPE_INVALID);
102
@@ -117,7 +126,9 @@ add_ip4_config (GString *str, NMIP4Confi
104
@@ -117,7 +128,9 @@ add_ip4_config (GString *str, NMIP4Confi
103
105
domains = nm_dns_utils_get_ip4_rdns_domains (ip4);
105
107
for (iter = domains; iter && *iter; iter++)
106
108
- g_string_append_printf (str, "server=/%s/%s\n", *iter, buf);
107
109
+ dbus_message_append_args (message,
108
+ DBUS_TYPE_STRING, *iter,
110
+ DBUS_TYPE_STRING, &(*iter),
109
111
+ DBUS_TYPE_INVALID);
110
112
g_strfreev (domains);
113
@@ -127,65 +138,18 @@ add_ip4_config (GString *str, NMIP4Confi
115
@@ -127,65 +140,18 @@ add_ip4_config (GString *str, NMIP4Confi
115
117
n = nm_ip4_config_get_num_nameservers (ip4);
116
118
for (i = 0; i < n; i++) {
182
184
const struct in6_addr *addr;
184
@@ -201,16 +165,31 @@ add_ip6_config (GString *str, NMIP6Confi
186
@@ -201,16 +167,32 @@ add_ip6_config (GString *str, NMIP6Confi
185
187
* the first nameserver here.
187
189
addr = nm_ip6_config_get_nameserver (ip6, 0);
213
215
- g_string_append_printf (str, "server=/%s/%s\n",
214
216
- nm_ip6_config_get_search (ip6, i),
218
+ char *search = nm_ip6_config_get_search (ip6, i);
216
219
+ dbus_message_append_args (message,
217
+ DBUS_TYPE_STRING, nm_ip6_config_get_search (ip6, i),
220
+ DBUS_TYPE_STRING, &search,
218
221
+ DBUS_TYPE_INVALID);
222
@@ -218,14 +197,12 @@ add_ip6_config (GString *str, NMIP6Confi
225
@@ -218,14 +200,13 @@ add_ip6_config (GString *str, NMIP6Confi
223
226
/* If not searches, use any domains */
224
227
n = nm_ip6_config_get_num_domains (ip6);
225
228
for (i = 0; i < n; i++) {
226
229
- g_string_append_printf (str, "server=/%s/%s\n",
227
230
- nm_ip6_config_get_domain (ip6, i),
232
+ char *domain = nm_ip6_config_get_domain (ip6, i);
229
233
+ dbus_message_append_args (message,
230
+ DBUS_TYPE_STRING, nm_ip6_config_get_domain (ip6, i),
234
+ DBUS_TYPE_STRING, &domain,
231
235
+ DBUS_TYPE_INVALID);
239
243
/* If no searches or domains, just add the namservers */
240
@@ -233,11 +210,24 @@ add_ip6_config (GString *str, NMIP6Confi
244
@@ -233,11 +214,24 @@ add_ip6_config (GString *str, NMIP6Confi
241
245
n = nm_ip6_config_get_num_nameservers (ip6);
242
246
for (i = 0; i < n; i++) {
243
247
addr = nm_ip6_config_get_nameserver (ip6, i);
334
338
update (NMDnsPlugin *plugin,
335
339
const GSList *vpn_configs,
336
340
const GSList *dev_configs,
337
@@ -253,23 +303,29 @@ update (NMDnsPlugin *plugin,
341
@@ -253,23 +307,29 @@ update (NMDnsPlugin *plugin,
338
342
const char *iface)
340
344
NMDnsDnsmasq *self = NM_DNS_DNSMASQ (plugin);
377
381
/* Work on a copy of the vpn_configs list because we might want to remove
378
382
* some items from it, yet not affect other DNS plugins that might run
379
@@ -286,9 +342,9 @@ update (NMDnsPlugin *plugin,
383
@@ -286,9 +346,9 @@ update (NMDnsPlugin *plugin,
380
384
might_default = !nm_ip6_config_get_never_default (iter->data);
381
385
if (might_default) {
382
386
if (NM_IS_IP4_CONFIG (iter->data))
388
392
vpn_configs_copy = g_slist_remove (vpn_configs_copy, iter->data);
391
@@ -297,9 +353,9 @@ update (NMDnsPlugin *plugin,
395
@@ -297,9 +357,9 @@ update (NMDnsPlugin *plugin,
392
396
/* Use split DNS for remaining VPN configs */
393
397
for (iter = (GSList *) vpn_configs_copy; iter; iter = g_slist_next (iter)) {
394
398
if (NM_IS_IP4_CONFIG (iter->data))
402
406
/* Now add interface configs without split DNS, unless some VPN
403
@@ -310,9 +366,9 @@ update (NMDnsPlugin *plugin,
407
@@ -310,9 +370,9 @@ update (NMDnsPlugin *plugin,
404
408
if (!might_default) {
405
409
for (iter = (GSList *) dev_configs; iter; iter = g_slist_next (iter)) {
406
410
if (NM_IS_IP4_CONFIG (iter->data))
415
@@ -321,48 +377,64 @@ update (NMDnsPlugin *plugin,
419
@@ -321,48 +381,64 @@ update (NMDnsPlugin *plugin,
417
421
for (iter = (GSList *) other_configs; iter; iter = g_slist_next (iter)) {
418
422
if (NM_IS_IP4_CONFIG (iter->data))