sd_json_variant_type_from_string;
sd_json_variant_type_to_string;
sd_varlink_reset_fds;
+ sd_varlink_server_listen_name;
sd_device_enumerator_add_all_parents;
} LIBSYSTEMD_257;
return 0;
}
-_public_ int sd_varlink_server_listen_auto(sd_varlink_server *s) {
+_public_ int sd_varlink_server_listen_name(sd_varlink_server *s, const char *name) {
_cleanup_strv_free_ char **names = NULL;
int r, n = 0;
assert_return(s, -EINVAL);
+ assert_return(name, -EINVAL);
- /* Adds all passed fds marked as "varlink" to our varlink server. These fds can either refer to a
+ /* Adds all passed fds marked as "name" to our varlink server. These fds can either refer to a
* listening socket or to a connection socket.
*
* See https://varlink.org/#activation for the environment variables this is backed by and the
int b, fd;
socklen_t l = sizeof(b);
- if (!streq(names[i], "varlink"))
+ if (!streq(names[i], name))
continue;
fd = SD_LISTEN_FDS_START + i;
n++;
}
+ return n;
+}
+
+_public_ int sd_varlink_server_listen_auto(sd_varlink_server *s) {
+ int r, n;
+
+ assert_return(s, -EINVAL);
+
+ n = sd_varlink_server_listen_name(s, "varlink");
+
/* Let's listen on an explicitly specified address */
const char *e = secure_getenv("SYSTEMD_VARLINK_LISTEN");
if (e) {
int sd_varlink_server_listen_address(sd_varlink_server *s, const char *address, mode_t mode);
int sd_varlink_server_listen_fd(sd_varlink_server *s, int fd);
int sd_varlink_server_listen_auto(sd_varlink_server *s);
+int sd_varlink_server_listen_name(sd_varlink_server *s, const char *name);
int sd_varlink_server_add_connection(sd_varlink_server *s, int fd, sd_varlink **ret);
int sd_varlink_server_add_connection_pair(sd_varlink_server *s, int input_fd, int output_fd, const struct ucred *ucred_override, sd_varlink **ret);
int sd_varlink_server_add_connection_stdio(sd_varlink_server *s, sd_varlink **ret);