From: Lennart Poettering Date: Thu, 7 Nov 2024 10:49:33 +0000 (+0100) Subject: sd-varlink: expose api to get input/output fd separately X-Git-Tag: v258-rc1~1751^2~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=107986a33e8fc356ddeda256d730921836f4b521;p=thirdparty%2Fsystemd.git sd-varlink: expose api to get input/output fd separately --- diff --git a/src/libsystemd/libsystemd.sym b/src/libsystemd/libsystemd.sym index d2747537e69..ccb9398bcd1 100644 --- a/src/libsystemd/libsystemd.sym +++ b/src/libsystemd/libsystemd.sym @@ -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; diff --git a/src/libsystemd/sd-varlink/sd-varlink.c b/src/libsystemd/sd-varlink/sd-varlink.c index aa5aaf8df8f..59228cc08b8 100644 --- a/src/libsystemd/sd-varlink/sd-varlink.c +++ b/src/libsystemd/sd-varlink/sd-varlink.c @@ -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; diff --git a/src/systemd/sd-varlink.h b/src/systemd/sd-varlink.h index 083be6598d6..223d02f4d7c 100644 --- a/src/systemd/sd-varlink.h +++ b/src/systemd/sd-varlink.h @@ -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);