diff options
Diffstat (limited to 'src/providers')
-rw-r--r-- | src/providers/data_provider.h | 1 | ||||
-rw-r--r-- | src/providers/data_provider_be.c | 43 | ||||
-rw-r--r-- | src/providers/data_provider_iface.xml | 38 | ||||
-rw-r--r-- | src/providers/data_provider_iface_generated.c | 86 | ||||
-rw-r--r-- | src/providers/data_provider_iface_generated.h | 55 | ||||
-rw-r--r-- | src/providers/proxy/proxy_child.c | 16 | ||||
-rw-r--r-- | src/providers/proxy/proxy_init.c | 16 |
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 }; |