static const sd_bus_vtable resolve_vtable[] = {
SD_BUS_VTABLE_START(0),
- SD_BUS_PROPERTY("LLMNRHostname", "s", NULL, offsetof(Manager, llmnr_hostname), 0),
+ SD_BUS_PROPERTY("LLMNRHostname", "s", NULL, offsetof(Manager, llmnr_hostname), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
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),
static int on_hostname_change(sd_event_source *es, int fd, uint32_t revents, void *userdata) {
_cleanup_free_ char *full_hostname = NULL, *llmnr_hostname = NULL, *mdns_hostname = NULL;
Manager *m = userdata;
+ bool llmnr_hostname_changed;
int r;
assert(m);
if (r < 0)
return 0; /* ignore invalid hostnames */
+ llmnr_hostname_changed = !streq(llmnr_hostname, m->llmnr_hostname);
if (streq(full_hostname, m->full_hostname) &&
- streq(llmnr_hostname, m->llmnr_hostname) &&
+ !llmnr_hostname_changed &&
streq(mdns_hostname, m->mdns_hostname))
return 0;
free_and_replace(m->mdns_hostname, mdns_hostname);
manager_refresh_rrs(m);
+ (void) manager_send_changed(m, "LLMNRHostname");
return 0;
}
free_and_replace(m->mdns_hostname, k);
manager_refresh_rrs(m);
+ (void) manager_send_changed(m, "LLMNRHostname");
return 0;
}