#include "bus-get-properties.h"
#include "bus-message-util.h"
#include "bus-polkit.h"
+#include "log-link.h"
#include "parse-util.h"
#include "resolve-util.h"
#include "resolved-bus.h"
}
static int bus_link_method_set_dns_servers_internal(sd_bus_message *message, void *userdata, sd_bus_error *error, bool extended) {
+ _cleanup_free_ char *j = NULL;
struct in_addr_full **dns;
Link *l = userdata;
size_t n;
goto finalize;
}
+ for (size_t i = 0; i < n; i++) {
+ const char *s;
+
+ s = in_addr_full_to_string(dns[i]);
+ if (!s) {
+ r = -ENOMEM;
+ goto finalize;
+ }
+
+ if (!strextend_with_separator(&j, ", ", s, NULL)) {
+ r = -ENOMEM;
+ goto finalize;
+ }
+ }
+
dns_server_mark_all(l->dns_servers);
for (size_t i = 0; i < n; i++) {
(void) manager_write_resolv_conf(l->manager);
(void) manager_send_changed(l->manager, "DNS");
+ if (j)
+ log_link_info(l, "Bus client set DNS server list to: %s", j);
+ else
+ log_link_info(l, "Bus client reset DNS server list.");
+
r = sd_bus_reply_method_return(message, NULL);
finalize:
}
int bus_link_method_set_domains(sd_bus_message *message, void *userdata, sd_bus_error *error) {
+ _cleanup_free_ char *j = NULL;
Link *l = userdata;
int r;
return r;
for (;;) {
+ _cleanup_free_ char *prefixed = NULL;
const char *name;
int route_only;
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid search domain %s", name);
if (!route_only && dns_name_is_root(name))
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Root domain is not suitable as search domain");
+
+ if (route_only) {
+ prefixed = strjoin("~", name);
+ if (!prefixed)
+ return -ENOMEM;
+
+ name = prefixed;
+ }
+
+ if (!strextend_with_separator(&j, ", ", name, NULL))
+ return -ENOMEM;
}
r = sd_bus_message_rewind(message, false);
(void) link_save_user(l);
(void) manager_write_resolv_conf(l->manager);
+ if (j)
+ log_link_info(l, "Bus client set search domain list to: %s", j);
+ else
+ log_link_info(l, "Bus client reset search domain list.");
+
return sd_bus_reply_method_return(message, NULL);
clear:
(void) manager_write_resolv_conf(l->manager);
}
+ log_link_info(l, "Bus client set default route setting: %s", yes_no(b));
+
return sd_bus_reply_method_return(message, NULL);
}
(void) link_save_user(l);
+ log_link_info(l, "Bus client set LLMNR setting: %s", resolve_support_to_string(mode));
+
return sd_bus_reply_method_return(message, NULL);
}
(void) link_save_user(l);
+ log_link_info(l, "Bus client set MulticastDNS setting: %s", resolve_support_to_string(mode));
+
return sd_bus_reply_method_return(message, NULL);
}
(void) link_save_user(l);
+ log_link_info(l, "Bus client set DNSOverTLS setting: %s",
+ mode < 0 ? "default" : dns_over_tls_mode_to_string(mode));
+
return sd_bus_reply_method_return(message, NULL);
}
(void) link_save_user(l);
+ log_link_info(l, "Bus client set DNSSEC setting: %s",
+ mode < 0 ? "default" : dnssec_mode_to_string(mode));
+
return sd_bus_reply_method_return(message, NULL);
}
int bus_link_method_set_dnssec_negative_trust_anchors(sd_bus_message *message, void *userdata, sd_bus_error *error) {
_cleanup_set_free_free_ Set *ns = NULL;
_cleanup_strv_free_ char **ntas = NULL;
+ _cleanup_free_ char *j = NULL;
Link *l = userdata;
int r;
char **i;
r = set_put_strdup(&ns, *i);
if (r < 0)
return r;
+
+ if (!strextend_with_separator(&j, ", ", *i, NULL))
+ return -ENOMEM;
}
r = bus_verify_polkit_async(message, CAP_NET_ADMIN,
(void) link_save_user(l);
+ if (j)
+ log_link_info(l, "Bus client set NTA list to: %s", j);
+ else
+ log_link_info(l, "Bus client reset NTA list.");
+
return sd_bus_reply_method_return(message, NULL);
}