From fd409ff0e0d0449e298cc8c6ff915e29a0f36033 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 9 Dec 2024 20:23:29 +0100 Subject: [PATCH] various: set info on varlink server object The values that were previously hardcoded in sd-varlink.c are now defined in new varlink_set_info_systemd() and that function is called everywhere where we create a server. --- src/bootctl/bootctl.c | 3 +- src/core/core-varlink.c | 6 ++-- src/creds/creds.c | 6 +++- src/home/homed-manager.c | 10 +++--- src/hostname/hostnamed.c | 8 +++-- src/import/importd.c | 8 ++--- src/journal/journald-server.c | 10 +++--- src/libsystemd/sd-varlink/varlink-util.c | 40 ++++++++++++++++++++++++ src/libsystemd/sd-varlink/varlink-util.h | 7 +++++ src/machine/machined-varlink.c | 9 ++---- src/mountfsd/mountwork.c | 3 +- src/network/networkd-manager-varlink.c | 5 ++- src/nsresourced/nsresourcework.c | 5 +-- src/oom/oomd-manager.c | 5 ++- src/pcrextend/pcrextend.c | 3 +- src/pcrlock/pcrlock.c | 3 +- src/resolve/resolved-varlink.c | 9 ++---- src/sysext/sysext.c | 3 +- src/test/test-varlink-idl.c | 2 ++ src/test/test-varlink.c | 5 ++- src/userdb/userwork.c | 5 +-- 21 files changed, 107 insertions(+), 48 deletions(-) diff --git a/src/bootctl/bootctl.c b/src/bootctl/bootctl.c index 98721347f4e..7befb8c6e25 100644 --- a/src/bootctl/bootctl.c +++ b/src/bootctl/bootctl.c @@ -27,6 +27,7 @@ #include "pretty-print.h" #include "utf8.h" #include "varlink-io.systemd.BootControl.h" +#include "varlink-util.h" #include "verbs.h" #include "virt.h" @@ -656,7 +657,7 @@ static int run(int argc, char *argv[]) { /* 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"); diff --git a/src/core/core-varlink.c b/src/core/core-varlink.c index 352fd28b0db..4f0563a1c09 100644 --- a/src/core/core-varlink.c +++ b/src/core/core-varlink.c @@ -582,11 +582,9 @@ int manager_setup_varlink_server(Manager *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, diff --git a/src/creds/creds.c b/src/creds/creds.c index b24a84eaa64..7635aee37ca 100644 --- a/src/creds/creds.c +++ b/src/creds/creds.c @@ -32,6 +32,7 @@ #include "user-util.h" #include "varlink-io.systemd.Credentials.h" #include "verbs.h" +#include "varlink-util.h" typedef enum TranscodeMode { TRANSCODE_OFF, @@ -1378,7 +1379,10 @@ static int run(int argc, char *argv[]) { /* 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"); diff --git a/src/home/homed-manager.c b/src/home/homed-manager.c index 6f5b6feda2d..de7c3d8dbe1 100644 --- a/src/home/homed-manager.c +++ b/src/home/homed-manager.c @@ -55,6 +55,7 @@ #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 @@ -1004,11 +1005,12 @@ static int manager_bind_varlink(Manager *m) { 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) diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index cc538ce979e..ba50b59f922 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -40,6 +40,7 @@ #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 "-.:") @@ -1648,12 +1649,13 @@ static int connect_varlink(Context *c) { 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"); diff --git a/src/import/importd.c b/src/import/importd.c index a0c40cc3d03..db081205ab7 100644 --- a/src/import/importd.c +++ b/src/import/importd.c @@ -1969,11 +1969,11 @@ static int manager_connect_varlink(Manager *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) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 9377ff8c795..bebc1e584c5 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -64,6 +64,7 @@ #include "uid-classification.h" #include "user-util.h" #include "varlink-io.systemd.Journal.h" +#include "varlink-util.h" #define USER_JOURNALS_MAX 1024 @@ -2326,11 +2327,12 @@ static int server_open_varlink(Server *s, const char *socket, int fd) { 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) diff --git a/src/libsystemd/sd-varlink/varlink-util.c b/src/libsystemd/sd-varlink/varlink-util.c index b16d4bddb6c..765108515c4 100644 --- a/src/libsystemd/sd-varlink/varlink-util.c +++ b/src/libsystemd/sd-varlink/varlink-util.c @@ -1,8 +1,11 @@ /* 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; @@ -133,3 +136,40 @@ int varlink_many_error(Set *s, const char *error_id, sd_json_variant *parameters 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; +} diff --git a/src/libsystemd/sd-varlink/varlink-util.h b/src/libsystemd/sd-varlink/varlink-util.h index 3f532bf140b..351f3951b07 100644 --- a/src/libsystemd/sd-varlink/varlink-util.h +++ b/src/libsystemd/sd-varlink/varlink-util.h @@ -18,3 +18,10 @@ int varlink_many_notifyb(Set *s, ...); 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); diff --git a/src/machine/machined-varlink.c b/src/machine/machined-varlink.c index 616b972b379..3385aa8a178 100644 --- a/src/machine/machined-varlink.c +++ b/src/machine/machined-varlink.c @@ -17,6 +17,7 @@ #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; @@ -712,12 +713,10 @@ static int manager_varlink_init_userdb(Manager *m) { 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"); @@ -753,12 +752,10 @@ static int manager_varlink_init_machine(Manager *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, diff --git a/src/mountfsd/mountwork.c b/src/mountfsd/mountwork.c index 6ffb36167af..af46287fcf8 100644 --- a/src/mountfsd/mountwork.c +++ b/src/mountfsd/mountwork.c @@ -23,6 +23,7 @@ #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) @@ -595,7 +596,7 @@ static int run(int argc, char *argv[]) { 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"); diff --git a/src/network/networkd-manager-varlink.c b/src/network/networkd-manager-varlink.c index 9fe8e607698..546dae0739e 100644 --- a/src/network/networkd-manager-varlink.c +++ b/src/network/networkd-manager-varlink.c @@ -12,6 +12,7 @@ #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); @@ -270,12 +271,10 @@ int manager_connect_varlink(Manager *m) { 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); diff --git a/src/nsresourced/nsresourcework.c b/src/nsresourced/nsresourcework.c index e8929ad6b3c..21fc2d9088c 100644 --- a/src/nsresourced/nsresourcework.c +++ b/src/nsresourced/nsresourcework.c @@ -44,6 +44,7 @@ #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) @@ -1689,9 +1690,9 @@ static int run(int argc, char *argv[]) { 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, diff --git a/src/oom/oomd-manager.c b/src/oom/oomd-manager.c index 7437a6e889b..baa88a2f2a0 100644 --- a/src/oom/oomd-manager.c +++ b/src/oom/oomd-manager.c @@ -18,6 +18,7 @@ #include "path-util.h" #include "percent-util.h" #include "varlink-io.systemd.oom.h" +#include "varlink-util.h" typedef struct ManagedOOMMessage { ManagedOOMMode mode; @@ -720,12 +721,10 @@ static int manager_varlink_init(Manager *m, int fd) { 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"); diff --git a/src/pcrextend/pcrextend.c b/src/pcrextend/pcrextend.c index 1bf39caf43d..6bdb5418b53 100644 --- a/src/pcrextend/pcrextend.c +++ b/src/pcrextend/pcrextend.c @@ -20,6 +20,7 @@ #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; @@ -312,7 +313,7 @@ static int run(int argc, char *argv[]) { /* 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"); diff --git a/src/pcrlock/pcrlock.c b/src/pcrlock/pcrlock.c index d824914ae79..25d76151b10 100644 --- a/src/pcrlock/pcrlock.c +++ b/src/pcrlock/pcrlock.c @@ -53,6 +53,7 @@ #include "unit-name.h" #include "utf8.h" #include "varlink-io.systemd.PCRLock.h" +#include "varlink-util.h" #include "verbs.h" typedef enum RecoveryPinMode { @@ -5352,7 +5353,7 @@ static int run(int argc, char *argv[]) { /* 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"); diff --git a/src/resolve/resolved-varlink.c b/src/resolve/resolved-varlink.c index 456347fd7ed..107f722e7d8 100644 --- a/src/resolve/resolved-varlink.c +++ b/src/resolve/resolved-varlink.c @@ -9,6 +9,7 @@ #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; @@ -1361,12 +1362,10 @@ static int varlink_monitor_server_init(Manager *m) { 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"); @@ -1407,12 +1406,10 @@ static int varlink_main_server_init(Manager *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"); diff --git a/src/sysext/sysext.c b/src/sysext/sysext.c index a87e4afcb37..6401fc4c0ff 100644 --- a/src/sysext/sysext.c +++ b/src/sysext/sysext.c @@ -52,6 +52,7 @@ #include "terminal-util.h" #include "user-util.h" #include "varlink-io.systemd.sysext.h" +#include "varlink-util.h" #include "verbs.h" typedef enum MutableMode { @@ -2568,7 +2569,7 @@ static int run(int argc, char *argv[]) { /* 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"); diff --git a/src/test/test-varlink-idl.c b/src/test/test-varlink-idl.c index c54b24aa8b4..182d59bd206 100644 --- a/src/test/test-varlink-idl.c +++ b/src/test/test-varlink-idl.c @@ -29,6 +29,7 @@ #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, @@ -378,6 +379,7 @@ static void* server_thread(void *userdata) { _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); diff --git a/src/test/test-varlink.c b/src/test/test-varlink.c index 40d972b6b64..bd1d9405851 100644 --- a/src/test/test-varlink.c +++ b/src/test/test-varlink.c @@ -16,6 +16,7 @@ #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 @@ -359,7 +360,9 @@ TEST(chat) { 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); diff --git a/src/userdb/userwork.c b/src/userdb/userwork.c index b7a2bf798c5..1e36face408 100644 --- a/src/userdb/userwork.c +++ b/src/userdb/userwork.c @@ -20,6 +20,7 @@ #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) @@ -489,9 +490,9 @@ static int run(int argc, char *argv[]) { 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) -- 2.47.3