#include "pretty-print.h"
#include "utf8.h"
#include "varlink-io.systemd.BootControl.h"
+#include "varlink-util.h"
#include "verbs.h"
#include "virt.h"
/* Invocation as Varlink service */
- r = sd_varlink_server_new(&varlink_server, SD_VARLINK_SERVER_ROOT_ONLY);
+ r = varlink_server_new(&varlink_server, SD_VARLINK_SERVER_ROOT_ONLY, NULL);
if (r < 0)
return log_error_errno(r, "Failed to allocate Varlink server: %m");
if (!MANAGER_IS_SYSTEM(m))
return -EINVAL;
- r = sd_varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA);
+ r = varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA, m);
if (r < 0)
- return log_debug_errno(r, "Failed to allocate varlink server object: %m");
-
- sd_varlink_server_set_userdata(s, m);
+ return log_debug_errno(r, "Failed to allocate Varlink server: %m");
r = sd_varlink_server_add_interface_many(
s,
#include "user-util.h"
#include "varlink-io.systemd.Credentials.h"
#include "verbs.h"
+#include "varlink-util.h"
typedef enum TranscodeMode {
TRANSCODE_OFF,
/* Invocation as Varlink service */
- r = sd_varlink_server_new(&varlink_server, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA|SD_VARLINK_SERVER_INPUT_SENSITIVE);
+ 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");
#include "user-record.h"
#include "user-util.h"
#include "varlink-io.systemd.UserDatabase.h"
+#include "varlink-util.h"
/* Where to look for private/public keys that are used to sign the user records. We are not using
* CONF_PATHS_NULSTR() here since we want to insert /var/lib/systemd/home/ in the middle. And we insert that
assert(m);
assert(!m->varlink_server);
- r = sd_varlink_server_new(&m->varlink_server, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA|SD_VARLINK_SERVER_INPUT_SENSITIVE);
+ r = varlink_server_new(
+ &m->varlink_server,
+ SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA|SD_VARLINK_SERVER_INPUT_SENSITIVE,
+ m);
if (r < 0)
- return log_error_errno(r, "Failed to allocate varlink server object: %m");
-
- sd_varlink_server_set_userdata(m->varlink_server, m);
+ return log_error_errno(r, "Failed to allocate varlink server: %m");
r = sd_varlink_server_add_interface(m->varlink_server, &vl_interface_io_systemd_UserDatabase);
if (r < 0)
#include "user-util.h"
#include "utf8.h"
#include "varlink-io.systemd.Hostname.h"
+#include "varlink-util.h"
#include "virt.h"
#define VALID_DEPLOYMENT_CHARS (DIGITS LETTERS "-.:")
assert(c->event);
assert(!c->varlink_server);
- r = sd_varlink_server_new(&c->varlink_server, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA);
+ r = varlink_server_new(
+ &c->varlink_server,
+ SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA,
+ c);
if (r < 0)
return log_error_errno(r, "Failed to allocate Varlink server: %m");
- sd_varlink_server_set_userdata(c->varlink_server, c);
-
r = sd_varlink_server_add_interface(c->varlink_server, &vl_interface_io_systemd_Hostname);
if (r < 0)
return log_error_errno(r, "Failed to add Hostname interface to Varlink server: %m");
assert(m->event);
assert(!m->varlink_server);
- r = sd_varlink_server_new(&m->varlink_server, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA);
+ r = varlink_server_new(&m->varlink_server,
+ SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA,
+ m);
if (r < 0)
- return log_error_errno(r, "Failed to allocate Varlink server: %m");
-
- sd_varlink_server_set_userdata(m->varlink_server, m);
+ return log_error_errno(r, "Failed to allocate varlink server object: %m");
r = sd_varlink_server_add_interface(m->varlink_server, &vl_interface_io_systemd_Import);
if (r < 0)
#include "uid-classification.h"
#include "user-util.h"
#include "varlink-io.systemd.Journal.h"
+#include "varlink-util.h"
#define USER_JOURNALS_MAX 1024
assert(s);
- r = sd_varlink_server_new(&s->varlink_server, SD_VARLINK_SERVER_ROOT_ONLY|SD_VARLINK_SERVER_INHERIT_USERDATA);
+ r = varlink_server_new(
+ &s->varlink_server,
+ SD_VARLINK_SERVER_ROOT_ONLY|SD_VARLINK_SERVER_INHERIT_USERDATA,
+ s);
if (r < 0)
- return r;
-
- sd_varlink_server_set_userdata(s->varlink_server, s);
+ return log_error_errno(r, "Failed to allocate varlink server object: %m");
r = sd_varlink_server_add_interface(s->varlink_server, &vl_interface_io_systemd_Journal);
if (r < 0)
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include "alloc-util.h"
#include "errno-util.h"
+#include "string-util.h"
#include "varlink-internal.h"
#include "varlink-util.h"
+#include "version.h"
int varlink_get_peer_pidref(sd_varlink *v, PidRef *ret) {
int r;
return r;
}
+
+int varlink_set_info_systemd(sd_varlink_server *server) {
+ _cleanup_free_ char *product = NULL;
+
+ product = strjoin("systemd (", program_invocation_short_name, ")");
+ if (!product)
+ return -ENOMEM;
+
+ return sd_varlink_server_set_info(
+ server,
+ "The systemd Project",
+ product,
+ PROJECT_VERSION_FULL " (" GIT_VERSION ")",
+ "https://systemd.io/");
+}
+
+int varlink_server_new(
+ sd_varlink_server **ret,
+ sd_varlink_server_flags_t flags,
+ void *userdata) {
+
+ _cleanup_(sd_varlink_server_unrefp) sd_varlink_server *s = NULL;
+ int r;
+
+ r = sd_varlink_server_new(&s, flags);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to allocate varlink server object: %m");
+
+ r = varlink_set_info_systemd(s);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to configure varlink server object: %m");
+
+ sd_varlink_server_set_userdata(s, userdata);
+
+ *ret = TAKE_PTR(s);
+ return 0;
+}
varlink_many_notifyb((s), SD_JSON_BUILD_OBJECT(__VA_ARGS__))
int varlink_many_reply(Set *s, sd_json_variant *parameters);
int varlink_many_error(Set *s, const char *error_id, sd_json_variant *parameters);
+
+int varlink_set_info_systemd(sd_varlink_server *server);
+
+int varlink_server_new(
+ sd_varlink_server **ret,
+ sd_varlink_server_flags_t flags,
+ void *userdata);
#include "varlink-io.systemd.Machine.h"
#include "varlink-io.systemd.MachineImage.h"
#include "varlink-io.systemd.UserDatabase.h"
+#include "varlink-util.h"
typedef struct LookupParameters {
const char *user_name;
if (m->varlink_userdb_server)
return 0;
- r = sd_varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA);
+ r = varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA, m);
if (r < 0)
return log_error_errno(r, "Failed to allocate varlink server object: %m");
- sd_varlink_server_set_userdata(s, m);
-
r = sd_varlink_server_add_interface(s, &vl_interface_io_systemd_UserDatabase);
if (r < 0)
return log_error_errno(r, "Failed to add UserDatabase interface to varlink server: %m");
if (m->varlink_machine_server)
return 0;
- r = sd_varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA);
+ r = varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA, m);
if (r < 0)
return log_error_errno(r, "Failed to allocate varlink server object: %m");
- sd_varlink_server_set_userdata(s, m);
-
r = sd_varlink_server_add_interface_many(
s,
&vl_interface_io_systemd_Machine,
#include "stat-util.h"
#include "user-util.h"
#include "varlink-io.systemd.MountFileSystem.h"
+#include "varlink-util.h"
#define ITERATIONS_MAX 64U
#define RUNTIME_MAX_USEC (5 * USEC_PER_MINUTE)
if (r < 0)
return log_error_errno(r, "Failed to turn off non-blocking mode for listening socket: %m");
- r = sd_varlink_server_new(&server, SD_VARLINK_SERVER_INHERIT_USERDATA);
+ r = varlink_server_new(&server, SD_VARLINK_SERVER_INHERIT_USERDATA, NULL);
if (r < 0)
return log_error_errno(r, "Failed to allocate server: %m");
#include "networkd-manager-varlink.h"
#include "stat-util.h"
#include "varlink-io.systemd.Network.h"
+#include "varlink-util.h"
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);
if (m->varlink_server)
return 0;
- r = sd_varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA);
+ r = varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA, m);
if (r < 0)
return log_error_errno(r, "Failed to allocate varlink server object: %m");
- sd_varlink_server_set_userdata(s, m);
-
(void) sd_varlink_server_set_description(s, "varlink-api-network");
r = sd_varlink_server_add_interface(s, &vl_interface_io_systemd_Network);
#include "userns-restrict.h"
#include "varlink-io.systemd.NamespaceResource.h"
#include "varlink-io.systemd.UserDatabase.h"
+#include "varlink-util.h"
#define ITERATIONS_MAX 64U
#define RUNTIME_MAX_USEC (5 * USEC_PER_MINUTE)
if (r < 0)
return log_error_errno(r, "Failed to turn off non-blocking mode for listening socket: %m");
- r = sd_varlink_server_new(&server, SD_VARLINK_SERVER_INHERIT_USERDATA);
+ r = varlink_server_new(&server, SD_VARLINK_SERVER_INHERIT_USERDATA, NULL);
if (r < 0)
- return log_error_errno(r, "Failed to allocate server: %m");
+ return log_error_errno(r, "Failed to allocate varlink server: %m");
r = sd_varlink_server_add_interface_many(
server,
#include "path-util.h"
#include "percent-util.h"
#include "varlink-io.systemd.oom.h"
+#include "varlink-util.h"
typedef struct ManagedOOMMessage {
ManagedOOMMode mode;
assert(m);
assert(!m->varlink_server);
- r = sd_varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA);
+ r = varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA, m);
if (r < 0)
return log_error_errno(r, "Failed to allocate varlink server object: %m");
- sd_varlink_server_set_userdata(s, m);
-
r = sd_varlink_server_add_interface(s, &vl_interface_io_systemd_oom);
if (r < 0)
return log_error_errno(r, "Failed to add oom interface to varlink server: %m");
#include "tpm2-pcr.h"
#include "tpm2-util.h"
#include "varlink-io.systemd.PCRExtend.h"
+#include "varlink-util.h"
static bool arg_graceful = false;
static char *arg_tpm2_device = NULL;
/* Invocation as Varlink service */
- r = sd_varlink_server_new(&varlink_server, SD_VARLINK_SERVER_ROOT_ONLY);
+ r = varlink_server_new(&varlink_server, SD_VARLINK_SERVER_ROOT_ONLY, NULL);
if (r < 0)
return log_error_errno(r, "Failed to allocate Varlink server: %m");
#include "unit-name.h"
#include "utf8.h"
#include "varlink-io.systemd.PCRLock.h"
+#include "varlink-util.h"
#include "verbs.h"
typedef enum RecoveryPinMode {
/* Invocation as Varlink service */
- r = sd_varlink_server_new(&varlink_server, SD_VARLINK_SERVER_ROOT_ONLY);
+ r = varlink_server_new(&varlink_server, SD_VARLINK_SERVER_ROOT_ONLY, NULL);
if (r < 0)
return log_error_errno(r, "Failed to allocate Varlink server: %m");
#include "socket-netlink.h"
#include "varlink-io.systemd.Resolve.h"
#include "varlink-io.systemd.Resolve.Monitor.h"
+#include "varlink-util.h"
typedef struct LookupParameters {
int ifindex;
if (m->varlink_monitor_server)
return 0;
- r = sd_varlink_server_new(&server, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA);
+ r = varlink_server_new(&server, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA, m);
if (r < 0)
return log_error_errno(r, "Failed to allocate varlink server object: %m");
- sd_varlink_server_set_userdata(server, m);
-
r = sd_varlink_server_add_interface(server, &vl_interface_io_systemd_Resolve_Monitor);
if (r < 0)
return log_error_errno(r, "Failed to add Resolve.Monitor interface to varlink server: %m");
if (m->varlink_server)
return 0;
- r = sd_varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID);
+ r = varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID, m);
if (r < 0)
return log_error_errno(r, "Failed to allocate varlink server object: %m");
- sd_varlink_server_set_userdata(s, m);
-
r = sd_varlink_server_add_interface(s, &vl_interface_io_systemd_Resolve);
if (r < 0)
return log_error_errno(r, "Failed to add Resolve interface to varlink server: %m");
#include "terminal-util.h"
#include "user-util.h"
#include "varlink-io.systemd.sysext.h"
+#include "varlink-util.h"
#include "verbs.h"
typedef enum MutableMode {
/* Invocation as Varlink service */
- r = sd_varlink_server_new(&varlink_server, SD_VARLINK_SERVER_ROOT_ONLY);
+ r = varlink_server_new(&varlink_server, SD_VARLINK_SERVER_ROOT_ONLY, NULL);
if (r < 0)
return log_error_errno(r, "Failed to allocate Varlink server: %m");
#include "varlink-io.systemd.service.h"
#include "varlink-io.systemd.sysext.h"
#include "varlink-org.varlink.service.h"
+#include "varlink-util.h"
static SD_VARLINK_DEFINE_ENUM_TYPE(
EnumTest,
_cleanup_(sd_event_unrefp) sd_event *event = NULL;
assert_se(sd_varlink_server_new(&server, 0) >= 0);
+ assert_se(varlink_set_info_systemd(server) >= 0);
assert_se(sd_varlink_server_add_interface(server, &vl_interface_xyz) >= 0);
assert_se(sd_varlink_server_bind_method(server, "xyz.TestMethod", test_method) >= 0);
assert_se(sd_varlink_server_bind_method(server, "xyz.Done", done_method) >= 0);
#include "tests.h"
#include "tmpfile-util.h"
#include "user-util.h"
+#include "varlink-util.h"
/* Let's pick some high value, that is higher than the largest listen() backlog, but leaves enough room below
the typical RLIMIT_NOFILE value of 1024 so that we can process both sides of each socket in our
assert_se(sd_event_source_set_priority(block_event, SD_EVENT_PRIORITY_IMPORTANT) >= 0);
block_write_fd = TAKE_FD(block_fds[1]);
- assert_se(sd_varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID) >= 0);
+ assert_se(varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID, NULL) >= 0);
+ assert_se(sd_varlink_server_set_info(s, "Vendor", "Product", "Version", "URL") >= 0);
+ assert_se(varlink_set_info_systemd(s) >= 0);
assert_se(sd_varlink_server_set_description(s, "our-server") >= 0);
assert_se(sd_varlink_server_bind_method(s, "io.test.PassFD", method_passfd) >= 0);
#include "user-util.h"
#include "userdb.h"
#include "varlink-io.systemd.UserDatabase.h"
+#include "varlink-util.h"
#define ITERATIONS_MAX 64U
#define RUNTIME_MAX_USEC (5 * USEC_PER_MINUTE)
if (r < 0)
return log_error_errno(r, "Failed to turn off non-blocking mode for listening socket: %m");
- r = sd_varlink_server_new(&server, 0);
+ r = varlink_server_new(&server, 0, NULL);
if (r < 0)
- return log_error_errno(r, "Failed to allocate server: %m");
+ return log_error_errno(r, "Failed to allocate varlink server: %m");
r = sd_varlink_server_add_interface(server, &vl_interface_io_systemd_UserDatabase);
if (r < 0)