resolved: send out notifications about DNS property
Notifications are only sent for the top object, and not for individual links. This should be enough for the most obvious cases where somebody just cares about the effective set of servers. Fixes #13721.
This commit is contained in:
parent
8e97dc676f
commit
5f3340ca5b
|
@ -13,6 +13,7 @@
|
|||
#include "resolved-dnssd.h"
|
||||
#include "resolved-link-bus.h"
|
||||
#include "stdio-util.h"
|
||||
#include "strv.h"
|
||||
#include "user-util.h"
|
||||
#include "utf8.h"
|
||||
|
||||
|
@ -1838,7 +1839,7 @@ static const sd_bus_vtable resolve_vtable[] = {
|
|||
SD_BUS_PROPERTY("LLMNR", "s", bus_property_get_resolve_support, offsetof(Manager, llmnr_support), 0),
|
||||
SD_BUS_PROPERTY("MulticastDNS", "s", bus_property_get_resolve_support, offsetof(Manager, mdns_support), 0),
|
||||
SD_BUS_PROPERTY("DNSOverTLS", "s", bus_property_get_dns_over_tls_mode, 0, 0),
|
||||
SD_BUS_PROPERTY("DNS", "a(iiay)", bus_property_get_dns_servers, 0, 0),
|
||||
SD_BUS_PROPERTY("DNS", "a(iiay)", bus_property_get_dns_servers, 0, SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
|
||||
SD_BUS_PROPERTY("FallbackDNS", "a(iiay)", bus_property_get_fallback_dns_servers, offsetof(Manager, fallback_dns_servers), SD_BUS_VTABLE_PROPERTY_CONST),
|
||||
SD_BUS_PROPERTY("CurrentDNSServer", "(iiay)", bus_property_get_current_dns_server, offsetof(Manager, current_dns_server), 0),
|
||||
SD_BUS_PROPERTY("Domains", "a(isb)", bus_property_get_domains, 0, 0),
|
||||
|
@ -1950,3 +1951,18 @@ int manager_connect_bus(Manager *m) {
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _manager_send_changed(Manager *manager, const char *property, ...) {
|
||||
assert(manager);
|
||||
|
||||
char **l = strv_from_stdarg_alloca(property);
|
||||
|
||||
int r = sd_bus_emit_properties_changed_strv(
|
||||
manager->bus,
|
||||
"/org/freedesktop/resolve1",
|
||||
"org.freedesktop.resolve1.Manager",
|
||||
l);
|
||||
if (r < 0)
|
||||
log_notice_errno(r, "Failed to emit notification about changed property %s: %m", property);
|
||||
return r;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
#include "resolved-manager.h"
|
||||
|
||||
int manager_connect_bus(Manager *m);
|
||||
int _manager_send_changed(Manager *manager, const char *property, ...) _sentinel_;
|
||||
#define manager_send_changed(manager, ...) _manager_send_changed(manager, __VA_ARGS__, NULL)
|
||||
int bus_dns_server_append(sd_bus_message *reply, DnsServer *s, bool with_ifindex);
|
||||
int bus_property_get_resolve_support(sd_bus *bus, const char *path, const char *interface,
|
||||
const char *property, sd_bus_message *reply,
|
||||
|
|
|
@ -296,6 +296,7 @@ int bus_link_method_set_dns_servers(sd_bus_message *message, void *userdata, sd_
|
|||
|
||||
(void) link_save_user(l);
|
||||
(void) manager_write_resolv_conf(l->manager);
|
||||
(void) manager_send_changed(l->manager, "DNS");
|
||||
|
||||
return sd_bus_reply_method_return(message, NULL);
|
||||
|
||||
|
@ -675,6 +676,7 @@ int bus_link_method_revert(sd_bus_message *message, void *userdata, sd_bus_error
|
|||
|
||||
(void) link_save_user(l);
|
||||
(void) manager_write_resolv_conf(l->manager);
|
||||
(void) manager_send_changed(l->manager, "DNS");
|
||||
|
||||
return sd_bus_reply_method_return(message, NULL);
|
||||
}
|
||||
|
|
|
@ -282,6 +282,7 @@ static int on_network_event(sd_event_source *s, int fd, uint32_t revents, void *
|
|||
}
|
||||
|
||||
(void) manager_write_resolv_conf(m);
|
||||
(void) manager_send_changed(m, "DNS");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue