diff options
author | Pavel Březina <pbrezina@redhat.com> | 2016-01-15 13:00:45 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2016-06-20 14:48:47 +0200 |
commit | d3dee2a07f1a8ee9ae6f94e149ced754ef76c248 (patch) | |
tree | dcb92cf97dd70a4183d05258b9db0414b91d60a8 /src/providers/data_provider/dp_iface_generated.h | |
parent | 565b9955cc439ade58cc24a98168060a60f33e7a (diff) | |
download | sssd-d3dee2a07f1a8ee9ae6f94e149ced754ef76c248.tar.gz sssd-d3dee2a07f1a8ee9ae6f94e149ced754ef76c248.tar.xz sssd-d3dee2a07f1a8ee9ae6f94e149ced754ef76c248.zip |
DP: Introduce new interface for backend
Terminology:
* Backend: Implemenation of domain
* Data Provider: interface between backend and responders
* Module: ldap/ipa/ad/... dlopened library that implements dp interface
* Target: id/autofs/sudo/... functionality of module
Benefits over current code:
* data provider is a black box completely separated from backend
* method handlers are just simple tevent requests on backend side
* no need of spy on be_client
* simplified and error proof adding of new responders
* simplified adding of new methods
* reply to D-Bus message is completely handled by DP code
* each target can have several methods defined
* properties can be added on objects
* each method can have output parameters
* modules now support constructor
* improved debugging
* clear memory hierarchy
* ability to chain requests
* type safe private data
Reviewed-by: Sumit Bose <sbose@redhat.com>
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Diffstat (limited to 'src/providers/data_provider/dp_iface_generated.h')
-rw-r--r-- | src/providers/data_provider/dp_iface_generated.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/providers/data_provider/dp_iface_generated.h b/src/providers/data_provider/dp_iface_generated.h new file mode 100644 index 000000000..f1bcf17d0 --- /dev/null +++ b/src/providers/data_provider/dp_iface_generated.h @@ -0,0 +1,93 @@ +/* The following declarations are auto-generated from dp_iface.xml */ + +#ifndef __DP_IFACE_XML__ +#define __DP_IFACE_XML__ + +#include "sbus/sssd_dbus.h" + +/* ------------------------------------------------------------------------ + * DBus Constants + * + * Various constants of interface and method names mostly for use by clients + */ + +/* constants for org.freedesktop.sssd.DataProvider.Client */ +#define IFACE_DP_CLIENT "org.freedesktop.sssd.DataProvider.Client" +#define IFACE_DP_CLIENT_REGISTER "Register" + +/* constants for org.freedesktop.sssd.dataprovider */ +#define IFACE_DP "org.freedesktop.sssd.dataprovider" +#define IFACE_DP_PAMHANDLER "pamHandler" +#define IFACE_DP_SUDOHANDLER "sudoHandler" +#define IFACE_DP_AUTOFSHANDLER "autofsHandler" +#define IFACE_DP_HOSTHANDLER "hostHandler" +#define IFACE_DP_GETDOMAINS "getDomains" +#define IFACE_DP_GETACCOUNTINFO "getAccountInfo" + +/* ------------------------------------------------------------------------ + * DBus handlers + * + * 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 are 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. + * + * Handlers have a matching xxx_finish() function (unless the method has + * accepts raw messages). These finish functions the + * sbus_request_return_and_finish() with the appropriate arguments to + * construct a valid reply. Once a finish function has been called, the + * @dbus_req it was called with is freed and no longer valid. + */ + +/* vtable for org.freedesktop.sssd.DataProvider.Client */ +struct iface_dp_client { + struct sbus_vtable vtable; /* derive from sbus_vtable */ + int (*Register)(struct sbus_request *req, void *data, const char *arg_Name); +}; + +/* finish function for Register */ +int iface_dp_client_Register_finish(struct sbus_request *req); + +/* vtable for org.freedesktop.sssd.dataprovider */ +struct iface_dp { + struct sbus_vtable vtable; /* derive from sbus_vtable */ + sbus_msg_handler_fn pamHandler; + sbus_msg_handler_fn sudoHandler; + int (*autofsHandler)(struct sbus_request *req, void *data, uint32_t arg_dp_flags, const char *arg_mapname); + int (*hostHandler)(struct sbus_request *req, void *data, uint32_t arg_dp_flags, const char *arg_name, const char *arg_alias); + int (*getDomains)(struct sbus_request *req, void *data, const char *arg_domain_hint); + int (*getAccountInfo)(struct sbus_request *req, void *data, uint32_t arg_dp_flags, uint32_t arg_entry_type, uint32_t arg_attr_type, const char *arg_filter, const char *arg_domain, const char *arg_extra); +}; + +/* finish function for autofsHandler */ +int iface_dp_autofsHandler_finish(struct sbus_request *req, uint16_t arg_dp_error, uint32_t arg_error, const char *arg_error_message); + +/* finish function for hostHandler */ +int iface_dp_hostHandler_finish(struct sbus_request *req, uint16_t arg_dp_error, uint32_t arg_error, const char *arg_error_message); + +/* finish function for getDomains */ +int iface_dp_getDomains_finish(struct sbus_request *req, uint16_t arg_dp_error, uint32_t arg_error, const char *arg_error_message); + +/* finish function for getAccountInfo */ +int iface_dp_getAccountInfo_finish(struct sbus_request *req, uint16_t arg_dp_error, uint32_t arg_error, const char *arg_error_message); + +/* ------------------------------------------------------------------------ + * 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.Client */ +extern const struct sbus_interface_meta iface_dp_client_meta; + +/* interface info for org.freedesktop.sssd.dataprovider */ +extern const struct sbus_interface_meta iface_dp_meta; + +#endif /* __DP_IFACE_XML__ */ |