mirror of
https://github.com/systemd/systemd.git
synced 2025-03-29 06:50:16 +03:00
tree-wide: several follow-ups for varlink methods (#36080)
Follow-ups for #35914.
This commit is contained in:
commit
a6fb250b50
@ -62,8 +62,9 @@ int vl_method_set_reboot_to_firmware(sd_varlink *link, sd_json_variant *paramete
|
||||
int vl_method_get_reboot_to_firmware(sd_varlink *link, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata) {
|
||||
int r;
|
||||
|
||||
if (sd_json_variant_elements(parameters) > 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
r = efi_get_reboot_to_firmware();
|
||||
if (ERRNO_IS_NEG_NOT_SUPPORTED(r))
|
||||
|
@ -876,8 +876,9 @@ int vl_method_list_boot_entries(sd_varlink *link, sd_json_variant *parameters, s
|
||||
|
||||
assert(link);
|
||||
|
||||
if (sd_json_variant_elements(parameters) > 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
if (!FLAGS_SET(flags, SD_VARLINK_METHOD_MORE))
|
||||
return sd_varlink_error(link, SD_VARLINK_ERROR_EXPECTED_MORE, NULL);
|
||||
|
@ -325,8 +325,9 @@ static int vl_method_subscribe_managed_oom_cgroups(
|
||||
if (!streq(u->id, "systemd-oomd.service"))
|
||||
return sd_varlink_error(link, SD_VARLINK_ERROR_PERMISSION_DENIED, NULL);
|
||||
|
||||
if (sd_json_variant_elements(parameters) > 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
/* We only take one subscriber for this method so return an error if there's already an existing one.
|
||||
* This shouldn't happen since systemd-oomd is the only client of this method. */
|
||||
|
@ -2223,8 +2223,9 @@ static int vl_method_synchronize(sd_varlink *link, sd_json_variant *parameters,
|
||||
|
||||
assert(link);
|
||||
|
||||
if (sd_json_variant_elements(parameters) > 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
log_info("Received client request to sync journal.");
|
||||
|
||||
@ -2259,11 +2260,13 @@ static int vl_method_synchronize(sd_varlink *link, sd_json_variant *parameters,
|
||||
|
||||
static int vl_method_rotate(sd_varlink *link, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata) {
|
||||
Server *s = ASSERT_PTR(userdata);
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
|
||||
if (sd_json_variant_elements(parameters) > 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
log_info("Received client request to rotate journal, rotating.");
|
||||
server_full_rotate(s);
|
||||
@ -2273,11 +2276,14 @@ static int vl_method_rotate(sd_varlink *link, sd_json_variant *parameters, sd_va
|
||||
|
||||
static int vl_method_flush_to_var(sd_varlink *link, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata) {
|
||||
Server *s = ASSERT_PTR(userdata);
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
|
||||
if (sd_json_variant_elements(parameters) > 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
if (s->namespace)
|
||||
return sd_varlink_error(link, "io.systemd.Journal.NotSupportedByNamespaces", NULL);
|
||||
|
||||
@ -2289,11 +2295,14 @@ static int vl_method_flush_to_var(sd_varlink *link, sd_json_variant *parameters,
|
||||
|
||||
static int vl_method_relinquish_var(sd_varlink *link, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata) {
|
||||
Server *s = ASSERT_PTR(userdata);
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
|
||||
if (sd_json_variant_elements(parameters) > 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
if (s->namespace)
|
||||
return sd_varlink_error(link, "io.systemd.Journal.NotSupportedByNamespaces", NULL);
|
||||
|
||||
|
@ -1197,8 +1197,9 @@ static int generic_method_get_info(
|
||||
assert(link);
|
||||
assert(link->server);
|
||||
|
||||
if (sd_json_variant_elements(parameters) != 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
sd_varlink_interface *interface;
|
||||
HASHMAP_FOREACH(interface, link->server->interfaces) {
|
||||
|
@ -17,11 +17,13 @@
|
||||
|
||||
static int vl_method_get_states(sd_varlink *link, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata) {
|
||||
Manager *m = ASSERT_PTR(userdata);
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
|
||||
if (sd_json_variant_elements(parameters) > 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
return sd_varlink_replybo(
|
||||
link,
|
||||
@ -40,8 +42,9 @@ static int vl_method_get_namespace_id(sd_varlink *link, sd_json_variant *paramet
|
||||
|
||||
assert(link);
|
||||
|
||||
if (sd_json_variant_elements(parameters) > 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
/* Network namespaces have two identifiers: the inode number (which all namespace types have), and
|
||||
* the "nsid" (aka the "cookie"), which only network namespaces know as a concept, and which is not
|
||||
|
@ -5269,8 +5269,9 @@ static int vl_method_read_event_log(sd_varlink *link, sd_json_variant *parameter
|
||||
|
||||
assert(link);
|
||||
|
||||
if (sd_json_variant_elements(parameters) > 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
el = event_log_new();
|
||||
if (!el)
|
||||
@ -5332,8 +5333,9 @@ static int vl_method_remove_policy(sd_varlink *link, sd_json_variant *parameters
|
||||
|
||||
assert(link);
|
||||
|
||||
if (sd_json_variant_elements(parameters) > 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
r = remove_policy();
|
||||
if (r < 0)
|
||||
|
@ -11,10 +11,13 @@
|
||||
#define UDEV_VARLINK_ADDRESS "/run/udev/io.systemd.Udev"
|
||||
|
||||
static int vl_method_reload(sd_varlink *link, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata) {
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
|
||||
if (sd_json_variant_elements(parameters) > 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
log_debug("Received io.systemd.service.Reload()");
|
||||
manager_reload(userdata, /* force = */ true);
|
||||
@ -87,8 +90,9 @@ static int vl_method_start_stop_exec_queue(sd_varlink *link, sd_json_variant *pa
|
||||
|
||||
assert(link);
|
||||
|
||||
if (sd_json_variant_elements(parameters) > 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
r = sd_varlink_get_current_method(link, &method);
|
||||
if (r < 0)
|
||||
@ -100,10 +104,13 @@ static int vl_method_start_stop_exec_queue(sd_varlink *link, sd_json_variant *pa
|
||||
}
|
||||
|
||||
static int vl_method_exit(sd_varlink *link, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata) {
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
|
||||
if (sd_json_variant_elements(parameters) > 0)
|
||||
return sd_varlink_error_invalid_parameter(link, parameters);
|
||||
r = sd_varlink_dispatch(link, parameters, /* dispatch_table = */ NULL, /* userdata = */ NULL);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
/* Refuse further connections. */
|
||||
_unused_ _cleanup_(sd_varlink_flush_close_unrefp) sd_varlink *v = sd_varlink_ref(link);
|
||||
@ -149,14 +156,15 @@ int manager_start_varlink_server(Manager *manager) {
|
||||
|
||||
r = sd_varlink_server_bind_method_many(
|
||||
v,
|
||||
"io.systemd.service.Ping", varlink_method_ping,
|
||||
"io.systemd.service.Reload", vl_method_reload,
|
||||
"io.systemd.service.SetLogLevel", vl_method_set_log_level,
|
||||
"io.systemd.Udev.SetChildrenMax", vl_method_set_children_max,
|
||||
"io.systemd.Udev.SetEnvironment", vl_method_set_environment,
|
||||
"io.systemd.Udev.StartExecQueue", vl_method_start_stop_exec_queue,
|
||||
"io.systemd.Udev.StopExecQueue", vl_method_start_stop_exec_queue,
|
||||
"io.systemd.Udev.Exit", vl_method_exit);
|
||||
"io.systemd.service.Ping", varlink_method_ping,
|
||||
"io.systemd.service.Reload", vl_method_reload,
|
||||
"io.systemd.service.SetLogLevel", vl_method_set_log_level,
|
||||
"io.systemd.service.GetEnvironment", varlink_method_get_environment,
|
||||
"io.systemd.Udev.SetChildrenMax", vl_method_set_children_max,
|
||||
"io.systemd.Udev.SetEnvironment", vl_method_set_environment,
|
||||
"io.systemd.Udev.StartExecQueue", vl_method_start_stop_exec_queue,
|
||||
"io.systemd.Udev.StopExecQueue", vl_method_start_stop_exec_queue,
|
||||
"io.systemd.Udev.Exit", vl_method_exit);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to bind Varlink methods: %m");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user