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) {