return sd_varlink_reply(link, reply);
}
-static int run(int argc, char *argv[]) {
+static int vl_server(void) {
+ _cleanup_(sd_varlink_server_unrefp) sd_varlink_server *varlink_server = NULL;
+ _cleanup_hashmap_free_ Hashmap *polkit_registry = NULL;
int r;
- log_setup();
+ /* Invocation as Varlink service */
- r = parse_argv(argc, argv);
- if (r <= 0)
- return r;
+ r = varlink_server_new(
+ &varlink_server,
+ SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA|SD_VARLINK_SERVER_INPUT_SENSITIVE,
+ &polkit_registry);
+ if (r < 0)
+ return log_error_errno(r, "Failed to allocate Varlink server: %m");
- if (arg_varlink) {
- _cleanup_(sd_varlink_server_unrefp) sd_varlink_server *varlink_server = NULL;
- _cleanup_hashmap_free_ Hashmap *polkit_registry = NULL;
+ r = sd_varlink_server_add_interface(varlink_server, &vl_interface_io_systemd_Credentials);
+ if (r < 0)
+ return log_error_errno(r, "Failed to add Varlink interface: %m");
- /* Invocation as Varlink service */
+ r = sd_varlink_server_bind_method_many(
+ varlink_server,
+ "io.systemd.Credentials.Encrypt", vl_method_encrypt,
+ "io.systemd.Credentials.Decrypt", vl_method_decrypt);
+ if (r < 0)
+ return log_error_errno(r, "Failed to bind Varlink methods: %m");
- r = varlink_server_new(
- &varlink_server,
- SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA|SD_VARLINK_SERVER_INPUT_SENSITIVE,
- NULL);
- if (r < 0)
- return log_error_errno(r, "Failed to allocate Varlink server: %m");
+ r = sd_varlink_server_loop_auto(varlink_server);
+ if (r < 0)
+ return log_error_errno(r, "Failed to run Varlink event loop: %m");
- r = sd_varlink_server_add_interface(varlink_server, &vl_interface_io_systemd_Credentials);
- if (r < 0)
- return log_error_errno(r, "Failed to add Varlink interface: %m");
+ return 0;
+}
- r = sd_varlink_server_bind_method_many(
- varlink_server,
- "io.systemd.Credentials.Encrypt", vl_method_encrypt,
- "io.systemd.Credentials.Decrypt", vl_method_decrypt);
- if (r < 0)
- return log_error_errno(r, "Failed to bind Varlink methods: %m");
+static int run(int argc, char *argv[]) {
+ int r;
- sd_varlink_server_set_userdata(varlink_server, &polkit_registry);
+ log_setup();
- r = sd_varlink_server_loop_auto(varlink_server);
- if (r < 0)
- return log_error_errno(r, "Failed to run Varlink event loop: %m");
+ r = parse_argv(argc, argv);
+ if (r <= 0)
+ return r;
- return 0;
- }
+ if (arg_varlink)
+ return vl_server();
return creds_main(argc, argv);
}