resolvectl: implement log-level with varlink methods

This commit is contained in:
Nick Rosbrook
2026-08-24 13:32:42 -04:00
parent 071f10991c
commit cf31d92de3
2 changed files with 25 additions and 5 deletions
+20 -5
View File
@@ -3171,16 +3171,31 @@ static int verb_revert_link(int argc, char *argv[], uintptr_t _data, void *userd
VERB(verb_log_level, "log-level", "[LEVEL]", VERB_ANY, 2, 0,
"Get/set logging threshold for systemd-resolved");
static int verb_log_level(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
int r;
r = acquire_bus(&bus);
_cleanup_(sd_varlink_unrefp) sd_varlink *vl = NULL;
r = sd_varlink_connect_address(&vl, "/run/systemd/resolve/io.systemd.Resolve");
if (r < 0)
return r;
return log_error_errno(r, "Failed to connect to /run/systemd/resolve/io.systemd.Resolve: %m");
assert(IN_SET(argc, 1, 2));
if (argc == 1) {
/* Show current log level */
_cleanup_free_ char *level_str = NULL;
r = varlink_get_log_level_string(vl, &level_str);
if (r < 0)
return r;
return verb_log_control_common(bus, "org.freedesktop.resolve1", argv[0], argc == 2 ? argv[1] : NULL);
puts(level_str);
} else if (argc == 2) {
/* Set new log level */
r = varlink_set_log_level_string(vl, argv[1]);
if (r < 0)
return r;
} else
assert_not_reached();
return 0;
}
static int parse_protocol(const char *arg) {
+5
View File
@@ -336,6 +336,11 @@ manual_testcase_01_resolvectl() {
assert_in '_localdnsstub' "$(dig @127.0.0.53 -x 127.0.0.53)"
assert_in '127.0.0.54' "$(dig @127.0.0.53 _localdnsproxy)"
assert_in '_localdnsproxy' "$(dig @127.0.0.53 -x 127.0.0.54)"
resolvectl log-level warning
assert_eq "$(resolvectl log-level)" "warning"
resolvectl log-level debug
assert_eq "$(resolvectl log-level)" "debug"
}
# Tests for mDNS and LLMNR settings