70 lines
2.4 KiB
Diff
70 lines
2.4 KiB
Diff
|
From d0199162ba3426385535ff7bcef1955c8fc54e9b Mon Sep 17 00:00:00 2001
|
||
|
From: Yu Watanabe <watanabe.yu+github@gmail.com>
|
||
|
Date: Sat, 4 Jan 2025 21:18:42 +0900
|
||
|
Subject: [PATCH] sd-varlink: introduce sd_varlink_get_current_method()
|
||
|
|
||
|
(cherry picked from commit ffe292330337b4c78932cde808463752196f531f)
|
||
|
|
||
|
Resolves: RHEL-75774
|
||
|
---
|
||
|
src/libsystemd/libsystemd.sym | 5 +++++
|
||
|
src/libsystemd/sd-varlink/sd-varlink.c | 19 +++++++++++++++++++
|
||
|
src/systemd/sd-varlink.h | 1 +
|
||
|
3 files changed, 25 insertions(+)
|
||
|
|
||
|
diff --git a/src/libsystemd/libsystemd.sym b/src/libsystemd/libsystemd.sym
|
||
|
index a76dc7e4ae..4dbe4e3c76 100644
|
||
|
--- a/src/libsystemd/libsystemd.sym
|
||
|
+++ b/src/libsystemd/libsystemd.sym
|
||
|
@@ -1059,3 +1059,8 @@ global:
|
||
|
sd_device_monitor_get_timeout;
|
||
|
sd_device_monitor_receive;
|
||
|
} LIBSYSTEMD_256;
|
||
|
+
|
||
|
+LIBSYSTEMD_258 {
|
||
|
+global:
|
||
|
+ sd_varlink_get_current_method;
|
||
|
+} LIBSYSTEMD_257;
|
||
|
diff --git a/src/libsystemd/sd-varlink/sd-varlink.c b/src/libsystemd/sd-varlink/sd-varlink.c
|
||
|
index 7038cba5db..5f3b17199d 100644
|
||
|
--- a/src/libsystemd/sd-varlink/sd-varlink.c
|
||
|
+++ b/src/libsystemd/sd-varlink/sd-varlink.c
|
||
|
@@ -1542,6 +1542,25 @@ _public_ int sd_varlink_dispatch_again(sd_varlink *v) {
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
+_public_ int sd_varlink_get_current_method(sd_varlink *v, const char **ret) {
|
||
|
+ assert_return(v, -EINVAL);
|
||
|
+
|
||
|
+ if (!v->current)
|
||
|
+ return -ENODATA;
|
||
|
+
|
||
|
+ sd_json_variant *p = sd_json_variant_by_key(v->current, "method");
|
||
|
+ if (!p)
|
||
|
+ return -ENODATA;
|
||
|
+
|
||
|
+ const char *s = sd_json_variant_string(p);
|
||
|
+ if (!s)
|
||
|
+ return -ENODATA;
|
||
|
+
|
||
|
+ if (ret)
|
||
|
+ *ret = s;
|
||
|
+ return 0;
|
||
|
+}
|
||
|
+
|
||
|
_public_ int sd_varlink_get_current_parameters(sd_varlink *v, sd_json_variant **ret) {
|
||
|
sd_json_variant *p;
|
||
|
|
||
|
diff --git a/src/systemd/sd-varlink.h b/src/systemd/sd-varlink.h
|
||
|
index 17cf8b7386..9401d417b2 100644
|
||
|
--- a/src/systemd/sd-varlink.h
|
||
|
+++ b/src/systemd/sd-varlink.h
|
||
|
@@ -176,6 +176,7 @@ int sd_varlink_notifyb(sd_varlink *v, ...);
|
||
|
int sd_varlink_dispatch_again(sd_varlink *v);
|
||
|
|
||
|
/* Get the currently processed incoming message */
|
||
|
+int sd_varlink_get_current_method(sd_varlink *v, const char **ret);
|
||
|
int sd_varlink_get_current_parameters(sd_varlink *v, sd_json_variant **ret);
|
||
|
|
||
|
/* Parsing incoming data via json_dispatch() and generate a nice error on parse errors */
|