resolvectl: implement log-level with varlink methods
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user