summaryrefslogtreecommitdiffstats
path: root/src/providers
diff options
context:
space:
mode:
Diffstat (limited to 'src/providers')
-rw-r--r--src/providers/data_provider.h1
-rw-r--r--src/providers/data_provider_be.c43
-rw-r--r--src/providers/data_provider_iface.xml38
-rw-r--r--src/providers/data_provider_iface_generated.c86
-rw-r--r--src/providers/data_provider_iface_generated.h55
-rw-r--r--src/providers/proxy/proxy_child.c16
-rw-r--r--src/providers/proxy/proxy_init.c16
7 files changed, 221 insertions, 34 deletions
diff --git a/src/providers/data_provider.h b/src/providers/data_provider.h
index c33445c9e..714983032 100644
--- a/src/providers/data_provider.h
+++ b/src/providers/data_provider.h
@@ -43,6 +43,7 @@
#include "sbus/sbus_client.h"
#include "sss_client/sss_cli.h"
#include "util/authtok.h"
+#include "providers/data_provider_iface_generated.h"
#define DATA_PROVIDER_VERSION 0x0001
#define DATA_PROVIDER_PIPE "private/sbus-dp"
diff --git a/src/providers/data_provider_be.c b/src/providers/data_provider_be.c
index 2e6422693..67d521032 100644
--- a/src/providers/data_provider_be.c
+++ b/src/providers/data_provider_be.c
@@ -63,20 +63,21 @@ static int data_provider_reset_offline(DBusMessage *message,
static int data_provider_logrotate(DBusMessage *message,
struct sbus_connection *conn);
-struct sbus_method monitor_be_methods[] = {
- { MON_CLI_METHOD_PING, monitor_common_pong },
- { MON_CLI_METHOD_RES_INIT, data_provider_res_init },
- { MON_CLI_METHOD_OFFLINE, data_provider_go_offline },
- { MON_CLI_METHOD_RESET_OFFLINE, data_provider_reset_offline },
- { MON_CLI_METHOD_ROTATE, data_provider_logrotate },
- { NULL, NULL }
+struct mon_cli_iface monitor_be_methods = {
+ { &mon_cli_iface_meta, 0 },
+ .ping = monitor_common_pong,
+ .resInit = data_provider_res_init,
+ .shutDown = NULL,
+ .goOffline = data_provider_go_offline,
+ .resetOffline = data_provider_reset_offline,
+ .rotateLogs = data_provider_logrotate,
+ .clearMemcache = NULL,
+ .clearEnumCache = NULL,
};
struct sbus_interface monitor_be_interface = {
- MONITOR_INTERFACE,
MONITOR_PATH,
- SBUS_DEFAULT_VTABLE,
- monitor_be_methods,
+ &monitor_be_methods.vtable,
NULL
};
@@ -88,22 +89,20 @@ static int be_autofs_handler(DBusMessage *message, struct sbus_connection *conn)
static int be_host_handler(DBusMessage *message, struct sbus_connection *conn);
static int be_get_subdomains(DBusMessage *message, struct sbus_connection *conn);
-struct sbus_method be_methods[] = {
- { DP_METHOD_REGISTER, client_registration },
- { DP_METHOD_GETACCTINFO, be_get_account_info },
- { DP_METHOD_PAMHANDLER, be_pam_handler },
- { DP_METHOD_SUDOHANDLER, be_sudo_handler },
- { DP_METHOD_AUTOFSHANDLER, be_autofs_handler },
- { DP_METHOD_HOSTHANDLER, be_host_handler },
- { DP_METHOD_GETDOMAINS, be_get_subdomains },
- { NULL, NULL }
+struct data_provider_iface be_methods = {
+ { &data_provider_iface_meta, 0 },
+ .RegisterService = client_registration,
+ .pamHandler = be_pam_handler,
+ .sudoHandler = be_sudo_handler,
+ .autofsHandler = be_autofs_handler,
+ .hostHandler = be_host_handler,
+ .getDomains = be_get_subdomains,
+ .getAccountInfo = be_get_account_info,
};
struct sbus_interface be_interface = {
- DP_INTERFACE,
DP_PATH,
- SBUS_DEFAULT_VTABLE,
- be_methods,
+ &be_methods.vtable,
NULL
};
diff --git a/src/providers/data_provider_iface.xml b/src/providers/data_provider_iface.xml
new file mode 100644
index 000000000..1f3496493
--- /dev/null
+++ b/src/providers/data_provider_iface.xml
@@ -0,0 +1,38 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<node>
+ <interface name="org.freedesktop.sssd.dataprovider">
+ <annotation value="data_provider_iface" name="org.freedesktop.DBus.GLib.CSymbol"/>
+ <method name="RegisterService">
+ <!-- arguments parsed manually -->
+ </method>
+ <method name="pamHandler">
+ <!-- arguments parsed manually -->
+ </method>
+ <method name="sudoHandler">
+ <!-- arguments parsed manually -->
+ </method>
+ <method name="autofsHandler">
+ <!-- arguments parsed manually -->
+ </method>
+ <method name="hostHandler">
+ <!-- arguments parsed manually -->
+ </method>
+ <method name="getDomains">
+ <!-- arguments parsed manually -->
+ </method>
+ <method name="getAccountInfo">
+ <!-- arguments parsed manually -->
+ </method>
+ </interface>
+
+ <interface name="org.freedesktop.sssd.dataprovider_rev">
+ <annotation value="data_provider_rev_iface" name="org.freedesktop.DBus.GLib.CSymbol"/>
+ <method name="updateCache">
+ <!-- manual argument parsing -->
+ </method>
+ <method name="initgrCheck">
+ <!-- manual argument parsing -->
+ </method>
+ </interface>
+</node>
diff --git a/src/providers/data_provider_iface_generated.c b/src/providers/data_provider_iface_generated.c
new file mode 100644
index 000000000..517b7adfe
--- /dev/null
+++ b/src/providers/data_provider_iface_generated.c
@@ -0,0 +1,86 @@
+/* The following definitions are auto-generated from data_provider_iface.xml */
+
+#include "util/util.h"
+#include "sbus/sssd_dbus.h"
+#include "sbus/sssd_dbus_meta.h"
+#include "data_provider_iface_generated.h"
+
+/* methods for org.freedesktop.sssd.dataprovider */
+const struct sbus_method_meta data_provider_iface__methods[] = {
+ {
+ "RegisterService", /* name */
+ NULL, /* no in_args */
+ NULL, /* no out_args */
+ offsetof(struct data_provider_iface, RegisterService),
+ },
+ {
+ "pamHandler", /* name */
+ NULL, /* no in_args */
+ NULL, /* no out_args */
+ offsetof(struct data_provider_iface, pamHandler),
+ },
+ {
+ "sudoHandler", /* name */
+ NULL, /* no in_args */
+ NULL, /* no out_args */
+ offsetof(struct data_provider_iface, sudoHandler),
+ },
+ {
+ "autofsHandler", /* name */
+ NULL, /* no in_args */
+ NULL, /* no out_args */
+ offsetof(struct data_provider_iface, autofsHandler),
+ },
+ {
+ "hostHandler", /* name */
+ NULL, /* no in_args */
+ NULL, /* no out_args */
+ offsetof(struct data_provider_iface, hostHandler),
+ },
+ {
+ "getDomains", /* name */
+ NULL, /* no in_args */
+ NULL, /* no out_args */
+ offsetof(struct data_provider_iface, getDomains),
+ },
+ {
+ "getAccountInfo", /* name */
+ NULL, /* no in_args */
+ NULL, /* no out_args */
+ offsetof(struct data_provider_iface, getAccountInfo),
+ },
+ { NULL, }
+};
+
+/* interface info for org.freedesktop.sssd.dataprovider */
+const struct sbus_interface_meta data_provider_iface_meta = {
+ "org.freedesktop.sssd.dataprovider", /* name */
+ data_provider_iface__methods,
+ NULL, /* no signals */
+ NULL, /* no propetries */
+};
+
+/* methods for org.freedesktop.sssd.dataprovider_rev */
+const struct sbus_method_meta data_provider_rev_iface__methods[] = {
+ {
+ "updateCache", /* name */
+ NULL, /* no in_args */
+ NULL, /* no out_args */
+ offsetof(struct data_provider_rev_iface, updateCache),
+ },
+ {
+ "initgrCheck", /* name */
+ NULL, /* no in_args */
+ NULL, /* no out_args */
+ offsetof(struct data_provider_rev_iface, initgrCheck),
+ },
+ { NULL, }
+};
+
+/* interface info for org.freedesktop.sssd.dataprovider_rev */
+const struct sbus_interface_meta data_provider_rev_iface_meta = {
+ "org.freedesktop.sssd.dataprovider_rev", /* name */
+ data_provider_rev_iface__methods,
+ NULL, /* no signals */
+ NULL, /* no propetries */
+};
diff --git a/src/providers/data_provider_iface_generated.h b/src/providers/data_provider_iface_generated.h
new file mode 100644
index 000000000..0851964b1
--- /dev/null
+++ b/src/providers/data_provider_iface_generated.h
@@ -0,0 +1,55 @@
+/* The following declarations are auto-generated from data_provider_iface.xml */
+
+#ifndef __DATA_PROVIDER_IFACE_XML__
+#define __DATA_PROVIDER_IFACE_XML__
+
+#include "sbus/sssd_dbus.h"
+
+/* ------------------------------------------------------------------------
+ * DBus Vtable handler structures
+ *
+ * These structures are filled in by implementors of the different
+ * dbus interfaces to handle method calls.
+ *
+ * Handler functions of type sbus_msg_handler_fn accept raw messages,
+ * other handlers will be typed appropriately. If a handler that is
+ * set to NULL is invoked it will result in a
+ * org.freedesktop.DBus.Error.NotSupported error for the caller.
+ */
+
+/* vtable for org.freedesktop.sssd.dataprovider */
+struct data_provider_iface {
+ struct sbus_vtable vtable; /* derive from sbus_vtable */
+ sbus_msg_handler_fn RegisterService;
+ sbus_msg_handler_fn pamHandler;
+ sbus_msg_handler_fn sudoHandler;
+ sbus_msg_handler_fn autofsHandler;
+ sbus_msg_handler_fn hostHandler;
+ sbus_msg_handler_fn getDomains;
+ sbus_msg_handler_fn getAccountInfo;
+};
+
+/* vtable for org.freedesktop.sssd.dataprovider_rev */
+struct data_provider_rev_iface {
+ struct sbus_vtable vtable; /* derive from sbus_vtable */
+ sbus_msg_handler_fn updateCache;
+ sbus_msg_handler_fn initgrCheck;
+};
+
+/* ------------------------------------------------------------------------
+ * DBus Interface Metadata
+ *
+ * These structure definitions are filled in with the information about
+ * the interfaces, methods, properties and so on.
+ *
+ * The actual definitions are found in the accompanying C file next
+ * to this header.
+ */
+
+/* interface info for org.freedesktop.sssd.dataprovider */
+extern const struct sbus_interface_meta data_provider_iface_meta;
+
+/* interface info for org.freedesktop.sssd.dataprovider_rev */
+extern const struct sbus_interface_meta data_provider_rev_iface_meta;
+
+#endif /* __DATA_PROVIDER_IFACE_XML__ */
diff --git a/src/providers/proxy/proxy_child.c b/src/providers/proxy/proxy_child.c
index 52968651b..737b0cfd6 100644
--- a/src/providers/proxy/proxy_child.c
+++ b/src/providers/proxy/proxy_child.c
@@ -49,16 +49,20 @@
static int pc_pam_handler(DBusMessage *message, struct sbus_connection *conn);
-struct sbus_method pc_methods[] = {
- { DP_METHOD_PAMHANDLER, pc_pam_handler },
- { NULL, NULL }
+struct data_provider_iface pc_methods = {
+ { &data_provider_iface_meta, 0 },
+ .RegisterService = NULL,
+ .pamHandler = pc_pam_handler,
+ .sudoHandler = NULL,
+ .autofsHandler = NULL,
+ .hostHandler = NULL,
+ .getDomains = NULL,
+ .getAccountInfo = NULL,
};
struct sbus_interface pc_interface = {
- DP_INTERFACE,
DP_PATH,
- SBUS_DEFAULT_VTABLE,
- pc_methods,
+ &pc_methods.vtable,
NULL
};
diff --git a/src/providers/proxy/proxy_init.c b/src/providers/proxy/proxy_init.c
index ae73fe702..60ae4a950 100644
--- a/src/providers/proxy/proxy_init.c
+++ b/src/providers/proxy/proxy_init.c
@@ -30,16 +30,20 @@
static int client_registration(DBusMessage *message,
struct sbus_connection *conn);
-static struct sbus_method proxy_methods[] = {
- { DP_METHOD_REGISTER, client_registration },
- { NULL, NULL }
+static struct data_provider_iface proxy_methods = {
+ { &data_provider_iface_meta, 0 },
+ .RegisterService = client_registration,
+ .pamHandler = NULL,
+ .sudoHandler = NULL,
+ .autofsHandler = NULL,
+ .hostHandler = NULL,
+ .getDomains = NULL,
+ .getAccountInfo = NULL,
};
struct sbus_interface proxy_interface = {
- DP_INTERFACE,
DP_PATH,
- SBUS_DEFAULT_VTABLE,
- proxy_methods,
+ &proxy_methods.vtable,
NULL
};