sd-varlink: add sd_varlink_server_listen_name (#35697)
This commit is contained in:
committed by
Luca Boccassi
parent
be9646c13e
commit
50994b2f91
@@ -1065,5 +1065,6 @@ global:
|
||||
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;
|
||||
|
||||
@@ -3660,13 +3660,14 @@ _public_ int sd_varlink_server_add_connection_stdio(sd_varlink_server *s, sd_var
|
||||
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
|
||||
@@ -3680,7 +3681,7 @@ _public_ int sd_varlink_server_listen_auto(sd_varlink_server *s) {
|
||||
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;
|
||||
@@ -3700,6 +3701,16 @@ _public_ int sd_varlink_server_listen_auto(sd_varlink_server *s) {
|
||||
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) {
|
||||
|
||||
@@ -230,6 +230,7 @@ int sd_varlink_server_set_info(
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user