<annotate key="org.freedesktop.policykit.owner">unix-user:systemd-resolve</annotate>
</action>
+ <action id="org.freedesktop.resolve1.flush-caches">
+ <description gettext-domain="systemd">Flush DNS caches</description>
+ <message gettext-domain="systemd">Authentication is required to flush DNS caches.</message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>auth_admin_keep</allow_active>
+ </defaults>
+ <annotate key="org.freedesktop.policykit.owner">unix-user:systemd-resolve</annotate>
+ </action>
+
+ <action id="org.freedesktop.resolve1.reset-server-features">
+ <description gettext-domain="systemd">Reset server features</description>
+ <message gettext-domain="systemd">Authentication is required to reset server features.</message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>auth_admin_keep</allow_active>
+ </defaults>
+ <annotate key="org.freedesktop.policykit.owner">unix-user:systemd-resolve</annotate>
+ </action>
+
</policyconfig>
static int bus_method_flush_caches(sd_bus_message *message, void *userdata, sd_bus_error *error) {
Manager *m = ASSERT_PTR(userdata);
+ int r;
assert(message);
+ r = bus_verify_polkit_async(
+ message,
+ "org.freedesktop.resolve1.flush-caches",
+ /* details= */ NULL,
+ &m->polkit_registry,
+ error);
+ if (r < 0)
+ return r;
+ if (r == 0)
+ return 1; /* Polkit will call us back */
+
bus_client_log(message, "cache flush");
manager_flush_caches(m, LOG_INFO);
static int bus_method_reset_server_features(sd_bus_message *message, void *userdata, sd_bus_error *error) {
Manager *m = ASSERT_PTR(userdata);
+ int r;
assert(message);
+ r = bus_verify_polkit_async(
+ message,
+ "org.freedesktop.resolve1.reset-server-features",
+ /* details= */ NULL,
+ &m->polkit_registry,
+ error);
+ if (r < 0)
+ return r;
+ if (r == 0)
+ return 1; /* Polkit will call us back */
+
bus_client_log(message, "server feature reset");
(void) dns_stream_disconnect_all(m);