]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-varlink: add new sd_varlink_get_n_fds() helper
authorLennart Poettering <lennart@poettering.net>
Fri, 14 Feb 2025 13:33:48 +0000 (14:33 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 18 Feb 2025 12:17:54 +0000 (13:17 +0100)
This new call returns how many fds have been associated with the current
incoming message.

src/libsystemd/libsystemd.sym
src/libsystemd/sd-varlink/sd-varlink.c
src/systemd/sd-varlink.h

index 726a6bce12a4a96367b49d7f331762e0b7f6e3c3..07553359df930fc0df615c6debd926f26bd476bf 100644 (file)
@@ -1069,6 +1069,7 @@ global:
         sd_varlink_get_current_method;
         sd_varlink_get_description;
         sd_varlink_get_input_fd;
+        sd_varlink_get_n_fds;
         sd_varlink_get_output_fd;
         sd_varlink_reset_fds;
         sd_varlink_server_listen_name;
index d2ece7b2e6d3ea3ed44b0f887bd88b467b840f4a..cdfcb9935e85411170489027d7d2794b975e9b7e 100644 (file)
@@ -3183,6 +3183,15 @@ _public_ int sd_varlink_take_fd(sd_varlink *v, size_t i) {
         return TAKE_FD(v->input_fds[i]);
 }
 
+_public_ int sd_varlink_get_n_fds(sd_varlink *v) {
+        assert_return(v, -EINVAL);
+
+        if (!v->allow_fd_passing_input)
+                return -EPERM;
+
+        return (int) v->n_input_fds;
+}
+
 static int verify_unix_socket(sd_varlink *v) {
         assert(v);
 
index 528c20e829528dacd707b157a4c9068ac083a559..27e63a7fba10464f66ec1aa3c5137f3559271fa5 100644 (file)
@@ -195,6 +195,7 @@ int sd_varlink_reset_fds(sd_varlink *v);
 int sd_varlink_peek_fd(sd_varlink *v, size_t i);
 int sd_varlink_peek_dup_fd(sd_varlink *v, size_t i);
 int sd_varlink_take_fd(sd_varlink *v, size_t i);
+int sd_varlink_get_n_fds(sd_varlink *v);
 
 int sd_varlink_set_allow_fd_passing_input(sd_varlink *v, int b);
 int sd_varlink_set_allow_fd_passing_output(sd_varlink *v, int b);