r = acquire_bus(&bus, &use_full_bus);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
n = acquire_boot_times(bus, &boot);
if (n < 0)
r = acquire_bus(&bus, NULL);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
n = acquire_time_data(bus, ×);
if (n <= 0)
r = acquire_bus(&bus, NULL);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
n = acquire_time_data(bus, ×);
if (n <= 0)
r = acquire_bus(&bus, NULL);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
r = pretty_boot_time(bus, &buf);
if (r < 0)
r = acquire_bus(&bus, NULL);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
r = expand_patterns(bus, strv_skip(argv, 1), &expanded_patterns);
if (r < 0)
r = acquire_bus(&bus, NULL);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
(void) pager_open(arg_pager_flags);
r = acquire_bus(&bus, NULL);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
return verb_log_control_common(bus, "org.freedesktop.systemd1", argv[0], argc == 2 ? argv[1] : NULL);
}
r = acquire_bus(&bus, NULL);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
if (argc == 1) {
/* get ServiceWatchdogs */
r = acquire_bus(&bus, NULL);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
(void) pager_open(arg_pager_flags);
if (arg_address)
r = sd_bus_set_address(bus, arg_address);
- else {
+ else
switch (arg_transport) {
case BUS_TRANSPORT_LOCAL:
default:
assert_not_reached();
}
- }
+
if (r < 0)
return bus_log_address_error(r, arg_transport);
r = sd_bus_start(bus);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
*ret = TAKE_PTR(bus);
arg_show_unit == SHOW_UNIT_USER,
&bus);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, BUS_TRANSPORT_LOCAL);
}
q = show_cgroup_get_unit_path_and_warn(bus, *name, &cgroup);
r = bus_connect_transport(arg_transport, arg_host, false, bus);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
(void) sd_bus_set_allow_interactive_authorization(*bus, arg_ask_password);
r = bus_connect_transport(arg_transport, arg_host, false, &bus);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
return hostnamectl_main(bus, argc, argv);
}
r = bus_connect_transport(arg_transport, arg_host, false, &bus);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
return localectl_main(bus, argc, argv);
}
r = sd_bus_default_system(&bus);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, BUS_TRANSPORT_LOCAL);
if (arg_action == ACTION_LIST)
return print_inhibitors(bus);
r = bus_connect_transport(arg_transport, arg_host, false, &bus);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
(void) sd_bus_set_allow_interactive_authorization(bus, arg_ask_password);
r = bus_connect_transport(arg_transport, arg_host, false, &bus);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
(void) sd_bus_set_allow_interactive_authorization(bus, arg_ask_password);
r = bus_connect_transport_systemd(arg_transport, arg_host, arg_user, &bus);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
if (arg_action == ACTION_UMOUNT)
return action_umount(bus, argc, argv);
r = bus_connect_transport(arg_transport, arg_host, false, bus);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
(void) sd_bus_set_allow_interactive_authorization(*bus, arg_ask_password);
else
r = bus_connect_transport_systemd(arg_transport, arg_host, arg_user, &bus);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
if (arg_scope)
r = start_transient_scope(bus);
"Failed to set bus address: %m");
}
-int bus_log_connect_error(int r) {
+int bus_log_connect_error(int r, BusTransport transport) {
+ bool hint_vars = transport == BUS_TRANSPORT_LOCAL && r == -ENOMEDIUM,
+ hint_addr = transport == BUS_TRANSPORT_LOCAL && ERRNO_IS_PRIVILEGE(r);
+
return log_error_errno(r,
- r == -ENOMEDIUM ? "Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined (consider using --machine=<user>@.host --user to connect to bus of other user)" :
- ERRNO_IS_PRIVILEGE(r) ? "Failed to connect to bus: Operation not permitted (consider using --machine=<user>@.host --user to connect to bus of other user)" :
- "Failed to connect to bus: %m");
+ r == hint_vars ? "Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined (consider using --machine=<user>@.host --user to connect to bus of other user)" :
+ r == hint_addr ? "Failed to connect to bus: Operation not permitted (consider using --machine=<user>@.host --user to connect to bus of other user)" :
+ "Failed to connect to bus: %m");
}
int bus_async_unregister_and_exit(sd_event *e, sd_bus *bus, const char *name) {
int bus_connect_transport_systemd(BusTransport transport, const char *host, bool user, sd_bus **bus);
int bus_log_address_error(int r, BusTransport transport);
-int bus_log_connect_error(int r);
+int bus_log_connect_error(int r, BusTransport transport);
#define bus_log_parse_error(r) \
log_error_errno(r, "Failed to parse bus message: %m")
r = bus_connect_transport_systemd(BUS_TRANSPORT_LOCAL, NULL, false, &bus);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, BUS_TRANSPORT_LOCAL);
r = show_cgroup_get_unit_path_and_warn(bus, unit, &root);
if (r < 0)
else
r = bus_connect_transport(arg_transport, arg_host, user, &buses[focus]);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
(void) sd_bus_set_allow_interactive_authorization(buses[focus], arg_ask_password);
}
r = bus_connect_transport(arg_transport, arg_host, false, &bus);
if (r < 0)
- return bus_log_connect_error(r);
+ return bus_log_connect_error(r, arg_transport);
return timedatectl_main(bus, argc, argv);
}