summaryrefslogtreecommitdiffstats
path: root/src/sss_iface/sbus_sss_client_sync.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 05:31:45 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 05:31:45 +0000
commit74aa0bc6779af38018a03fd2cf4419fe85917904 (patch)
tree9cb0681aac9a94a49c153d5823e7a55d1513d91f /src/sss_iface/sbus_sss_client_sync.c
parentInitial commit. (diff)
downloadsssd-74aa0bc6779af38018a03fd2cf4419fe85917904.tar.xz
sssd-74aa0bc6779af38018a03fd2cf4419fe85917904.zip
Adding upstream version 2.9.4.upstream/2.9.4
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/sss_iface/sbus_sss_client_sync.c')
-rw-r--r--src/sss_iface/sbus_sss_client_sync.c303
1 files changed, 303 insertions, 0 deletions
diff --git a/src/sss_iface/sbus_sss_client_sync.c b/src/sss_iface/sbus_sss_client_sync.c
new file mode 100644
index 0000000..32d6ef8
--- /dev/null
+++ b/src/sss_iface/sbus_sss_client_sync.c
@@ -0,0 +1,303 @@
+/*
+ Generated by sbus code generator
+
+ Copyright (C) 2017 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <errno.h>
+#include <talloc.h>
+#include <dbus/dbus.h>
+
+#include "sbus/sbus_sync.h"
+#include "sbus/sbus_sync_private.h"
+#include "sbus/sbus_message.h"
+#include "sbus/interface/sbus_iterator_readers.h"
+#include "sbus/interface_dbus/sbus_dbus_client_sync.h"
+#include "sss_iface/sbus_sss_arguments.h"
+#include "sss_iface/sbus_sss_client_properties.h"
+
+static errno_t
+sbus_method_in_ss_out_o
+ (TALLOC_CTX *mem_ctx,
+ struct sbus_sync_connection *conn,
+ const char *bus,
+ const char *path,
+ const char *iface,
+ const char *method,
+ const char * arg0,
+ const char * arg1,
+ const char ** _arg0)
+{
+ TALLOC_CTX *tmp_ctx;
+ struct _sbus_sss_invoker_args_ss in;
+ struct _sbus_sss_invoker_args_o *out;
+ DBusMessage *reply;
+ errno_t ret;
+
+ tmp_ctx = talloc_new(NULL);
+ if (tmp_ctx == NULL) {
+ DEBUG(SSSDBG_FATAL_FAILURE, "Out of memory!\n");
+ return ENOMEM;
+ }
+
+ out = talloc_zero(tmp_ctx, struct _sbus_sss_invoker_args_o);
+ if (out == NULL) {
+ DEBUG(SSSDBG_CRIT_FAILURE,
+ "Unable to allocate space for output parameters!\n");
+ ret = ENOMEM;
+ goto done;
+ }
+
+ in.arg0 = arg0;
+ in.arg1 = arg1;
+
+ ret = sbus_sync_call_method(tmp_ctx, conn, NULL,
+ (sbus_invoker_writer_fn)_sbus_sss_invoker_write_ss,
+ bus, path, iface, method, &in, &reply);
+ if (ret != EOK) {
+ goto done;
+ }
+
+ ret = sbus_read_output(out, reply, (sbus_invoker_reader_fn)_sbus_sss_invoker_read_o, out);
+ if (ret != EOK) {
+ goto done;
+ }
+
+ *_arg0 = talloc_steal(mem_ctx, out->arg0);
+
+ ret = EOK;
+
+done:
+ talloc_free(tmp_ctx);
+
+ return ret;
+}
+
+errno_t
+sbus_call_systemd_RestartUnit
+ (TALLOC_CTX *mem_ctx,
+ struct sbus_sync_connection *conn,
+ const char *busname,
+ const char *object_path,
+ const char * arg_name,
+ const char * arg_mode,
+ const char ** _arg_job)
+{
+ return sbus_method_in_ss_out_o(mem_ctx, conn,
+ busname, object_path, "org.freedesktop.systemd1.Manager", "RestartUnit", arg_name, arg_mode,
+ _arg_job);
+}
+
+errno_t
+sbus_call_systemd_StartUnit
+ (TALLOC_CTX *mem_ctx,
+ struct sbus_sync_connection *conn,
+ const char *busname,
+ const char *object_path,
+ const char * arg_name,
+ const char * arg_mode,
+ const char ** _arg_job)
+{
+ return sbus_method_in_ss_out_o(mem_ctx, conn,
+ busname, object_path, "org.freedesktop.systemd1.Manager", "StartUnit", arg_name, arg_mode,
+ _arg_job);
+}
+
+errno_t
+sbus_call_systemd_StopUnit
+ (TALLOC_CTX *mem_ctx,
+ struct sbus_sync_connection *conn,
+ const char *busname,
+ const char *object_path,
+ const char * arg_name,
+ const char * arg_mode,
+ const char ** _arg_job)
+{
+ return sbus_method_in_ss_out_o(mem_ctx, conn,
+ busname, object_path, "org.freedesktop.systemd1.Manager", "StopUnit", arg_name, arg_mode,
+ _arg_job);
+}
+
+static errno_t
+sbus_get_u
+ (struct sbus_sync_connection *conn,
+ const char *bus,
+ const char *path,
+ const char *iface,
+ const char *property,
+ uint32_t* _value)
+{
+ TALLOC_CTX *tmp_ctx;
+ struct _sbus_sss_invoker_args_u *out;
+ sbus_value_reader_fn reader;
+ sbus_value_reader_talloc_fn reader_talloc;
+ DBusMessage *reply;
+ errno_t ret;
+
+ tmp_ctx = talloc_new(NULL);
+ if (tmp_ctx == NULL) {
+ DEBUG(SSSDBG_FATAL_FAILURE, "Out of memory!\n");
+ return ENOMEM;
+ }
+
+ out = talloc_zero(tmp_ctx, struct _sbus_sss_invoker_args_u);
+ if (out == NULL) {
+ DEBUG(SSSDBG_CRIT_FAILURE,
+ "Unable to allocate space for output parameters!\n");
+ ret = ENOMEM;
+ goto done;
+ }
+
+ ret = sbus_call_DBusProperties_Get(tmp_ctx, conn,
+ bus, path, iface, property, &reply);
+ if (ret != EOK) {
+ goto done;
+ }
+
+ reader = (sbus_value_reader_fn)sbus_iterator_read_u;
+ reader_talloc = NULL;
+ ret = sbus_parse_get_message(out, reader, reader_talloc, reply, &out->arg0);
+ if (ret != EOK) {
+ goto done;
+ }
+
+ *_value = out->arg0;
+
+ ret = EOK;
+
+done:
+ talloc_free(tmp_ctx);
+
+ return ret;
+}
+
+static errno_t
+sbus_set_u
+ (struct sbus_sync_connection *conn,
+ const char *bus,
+ const char *path,
+ const char *iface,
+ const char *property,
+ uint32_t value)
+{
+ TALLOC_CTX *tmp_ctx;
+ struct _sbus_sss_invoker_args_u in;
+ DBusMessage *raw_message;
+ errno_t ret;
+
+ tmp_ctx = talloc_new(NULL);
+ if (tmp_ctx == NULL) {
+ DEBUG(SSSDBG_FATAL_FAILURE, "Out of memory!\n");
+ return ENOMEM;
+ }
+
+ in.arg0 = value;
+
+ raw_message = sbus_create_set_call(tmp_ctx,
+ (sbus_invoker_writer_fn)_sbus_sss_invoker_write_u,
+ bus, path, iface, property,
+ "u", &in);
+ if (raw_message == NULL) {
+ ret = ENOMEM;
+ goto done;
+ }
+
+ ret = sbus_call_DBusProperties_Set(conn, raw_message);
+ if (ret != EOK) {
+ goto done;
+ }
+
+ ret = EOK;
+
+done:
+ talloc_free(tmp_ctx);
+
+ return ret;
+}
+
+errno_t
+sbus_get_service_debug_level
+ (struct sbus_sync_connection *conn,
+ const char *busname,
+ const char *object_path,
+ uint32_t* _value)
+{
+ return sbus_get_u(conn, busname, object_path,
+ "sssd.service", "debug_level", _value);
+}
+
+errno_t
+sbus_set_service_debug_level
+ (struct sbus_sync_connection *conn,
+ const char *busname,
+ const char *object_path,
+ uint32_t value)
+{
+ return sbus_set_u(conn, busname, object_path,
+ "sssd.service", "debug_level", value);
+}
+
+errno_t
+sbus_getall_service
+ (TALLOC_CTX *mem_ctx,
+ struct sbus_sync_connection *conn,
+ const char *busname,
+ const char *object_path,
+ struct sbus_all_service **_properties)
+{
+ TALLOC_CTX *tmp_ctx;
+ struct sbus_all_service *properties;
+ DBusMessage *reply;
+ errno_t ret;
+
+ tmp_ctx = talloc_new(NULL);
+ if (tmp_ctx == NULL) {
+ DEBUG(SSSDBG_FATAL_FAILURE, "Out of memory!\n");
+ return ENOMEM;
+ }
+
+ properties = talloc_zero(tmp_ctx, struct sbus_all_service);
+ if (properties == NULL) {
+ ret = ENOMEM;
+ goto done;
+ }
+
+ struct sbus_parse_getall_table table[] = {
+ {"debug_level", (sbus_value_reader_fn)sbus_iterator_read_u, NULL,
+ &properties->debug_level.value, &properties->debug_level.is_set},
+ {NULL, NULL, NULL, NULL, NULL}
+ };
+
+ ret = sbus_call_DBusProperties_GetAll(tmp_ctx, conn,
+ busname, object_path, "sssd.service", &reply);
+ if (ret != EOK) {
+ goto done;
+ }
+
+ ret = sbus_parse_getall_message(properties, table, reply);
+ if (ret != EOK) {
+ goto done;
+ }
+
+ *_properties = talloc_steal(mem_ctx, properties);
+
+ ret = EOK;
+
+done:
+ talloc_free(tmp_ctx);
+
+ return ret;
+}