]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-varlink: expose api to get input/output fd separately
authorLennart Poettering <lennart@poettering.net>
Thu, 7 Nov 2024 10:49:33 +0000 (11:49 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 2 Jan 2025 15:35:42 +0000 (16:35 +0100)
src/libsystemd/libsystemd.sym
src/libsystemd/sd-varlink/sd-varlink.c
src/systemd/sd-varlink.h

index d2747537e69ec4e2cb85eefefcb3eeeae1da104a..ccb9398bcd1ebbbf11f7a401729c8edefe8a4dd4 100644 (file)
@@ -1062,9 +1062,12 @@ global:
 
 LIBSYSTEMD_258 {
 global:
+        sd_device_enumerator_add_all_parents;
+        sd_device_enumerator_add_all_parents;
         sd_json_variant_type_from_string;
         sd_json_variant_type_to_string;
+        sd_varlink_get_input_fd;
+        sd_varlink_get_output_fd;
         sd_varlink_reset_fds;
         sd_varlink_server_listen_name;
-        sd_device_enumerator_add_all_parents;
 } LIBSYSTEMD_257;
index aa5aaf8df8f2b855592e6805518061dbc408b3bf..59228cc08b8a09bbb8f0e65e9a92e0166d985f90 100644 (file)
@@ -1673,6 +1673,30 @@ _public_ int sd_varlink_get_fd(sd_varlink *v) {
         return v->input_fd;
 }
 
+_public_ int sd_varlink_get_input_fd(sd_varlink *v) {
+
+        assert_return(v, -EINVAL);
+
+        if (v->state == VARLINK_DISCONNECTED)
+                return varlink_log_errno(v, SYNTHETIC_ERRNO(ENOTCONN), "Not connected.");
+        if (v->input_fd < 0)
+                return varlink_log_errno(v, SYNTHETIC_ERRNO(EBADF), "No valid input fd.");
+
+        return v->input_fd;
+}
+
+_public_ int sd_varlink_get_output_fd(sd_varlink *v) {
+
+        assert_return(v, -EINVAL);
+
+        if (v->state == VARLINK_DISCONNECTED)
+                return varlink_log_errno(v, SYNTHETIC_ERRNO(ENOTCONN), "Not connected.");
+        if (v->output_fd < 0)
+                return varlink_log_errno(v, SYNTHETIC_ERRNO(EBADF), "No valid output fd.");
+
+        return v->output_fd;
+}
+
 _public_ int sd_varlink_get_events(sd_varlink *v) {
         int ret = 0;
 
index 083be6598d6458efe7cb177ac8ed9fbae9f2a2aa..223d02f4d7c97638d369bef6b360e9f333ef80ce 100644 (file)
@@ -96,6 +96,8 @@ sd_varlink* sd_varlink_ref(sd_varlink *link);
 sd_varlink* sd_varlink_unref(sd_varlink *v);
 
 int sd_varlink_get_fd(sd_varlink *v);
+int sd_varlink_get_input_fd(sd_varlink *v);
+int sd_varlink_get_output_fd(sd_varlink *v);
 int sd_varlink_get_events(sd_varlink *v);
 int sd_varlink_get_timeout(sd_varlink *v, uint64_t *ret);