Blame SOURCES/0100-DP-Remove-old-data-provider-interface.patch

b2d430
From c2fe5c54faa92c670161d65fe5a1ff62acd4ac91 Mon Sep 17 00:00:00 2001
b2d430
From: =?UTF-8?q?Pavel=20B=C5=99ezina?= <pbrezina@redhat.com>
b2d430
Date: Tue, 19 Jul 2016 14:24:16 +0200
b2d430
Subject: [PATCH 100/102] DP: Remove old data provider interface
b2d430
MIME-Version: 1.0
b2d430
Content-Type: text/plain; charset=UTF-8
b2d430
Content-Transfer-Encoding: 8bit
b2d430
b2d430
Reverse data provider interface is moved to a better location in
b2d430
NSS responder. All responders now can have an sbus interface
b2d430
defined per data provider connection. The unused old data provider
b2d430
interface is removed.
b2d430
b2d430
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
b2d430
(cherry picked from commit 04e870d99e72aa3160bdb6ab05d986fb4005c3ed)
b2d430
---
b2d430
 Makefile.am                                   | 11 +--
b2d430
 src/providers/data_provider.h                 |  1 -
b2d430
 src/providers/data_provider/dp_target_id.c    |  7 +-
b2d430
 src/providers/data_provider_iface.xml         | 53 ---------------
b2d430
 src/providers/data_provider_iface_generated.c | 98 ---------------------------
b2d430
 src/providers/data_provider_iface_generated.h | 82 ----------------------
b2d430
 src/responder/autofs/autofssrv.c              | 13 +---
b2d430
 src/responder/common/responder.h              |  8 +--
b2d430
 src/responder/common/responder_common.c       | 16 +++--
b2d430
 src/responder/common/responder_get_domains.c  |  4 +-
b2d430
 src/responder/ifp/ifpsrv.c                    | 13 +---
b2d430
 src/responder/nss/nss_iface.c                 | 38 +++++++++++
b2d430
 src/responder/nss/nss_iface.h                 | 30 ++++++++
b2d430
 src/responder/nss/nss_iface.xml               | 12 ++++
b2d430
 src/responder/nss/nss_iface_generated.c       | 69 +++++++++++++++++++
b2d430
 src/responder/nss/nss_iface_generated.h       | 58 ++++++++++++++++
b2d430
 src/responder/nss/nsssrv.c                    | 39 ++++-------
b2d430
 src/responder/nss/nsssrv.h                    |  7 ++
b2d430
 src/responder/pac/pacsrv.c                    | 13 +---
b2d430
 src/responder/pam/pamsrv.c                    | 13 +---
b2d430
 src/responder/pam/pamsrv_dp.c                 |  4 +-
b2d430
 src/responder/ssh/sshsrv.c                    | 13 +---
b2d430
 src/responder/sudo/sudosrv.c                  | 13 +---
b2d430
 src/tests/cwrap/Makefile.am                   |  1 -
b2d430
 24 files changed, 259 insertions(+), 357 deletions(-)
b2d430
 delete mode 100644 src/providers/data_provider_iface.xml
b2d430
 delete mode 100644 src/providers/data_provider_iface_generated.c
b2d430
 delete mode 100644 src/providers/data_provider_iface_generated.h
b2d430
 create mode 100644 src/responder/nss/nss_iface.c
b2d430
 create mode 100644 src/responder/nss/nss_iface.h
b2d430
 create mode 100644 src/responder/nss/nss_iface.xml
b2d430
 create mode 100644 src/responder/nss/nss_iface_generated.c
b2d430
 create mode 100644 src/responder/nss/nss_iface_generated.h
b2d430
b2d430
diff --git a/Makefile.am b/Makefile.am
b2d430
index 5d54838659e44fa446fc921d014e48ac91469b25..e2e4c4c08f66ef15684e1b3b1fe17bfae4e4131b 100644
b2d430
--- a/Makefile.am
b2d430
+++ b/Makefile.am
b2d430
@@ -492,7 +492,6 @@ SSSD_RESPONDER_OBJ = \
b2d430
     src/responder/common/data_provider/rdp_message.c \
b2d430
     src/responder/common/data_provider/rdp_client.c \
b2d430
     src/monitor/monitor_iface_generated.c \
b2d430
-    src/providers/data_provider_iface_generated.c \
b2d430
     src/providers/data_provider_req.c
b2d430
 
b2d430
 SSSD_TOOLS_OBJ = \
b2d430
@@ -610,6 +609,8 @@ dist_noinst_HEADERS = \
b2d430
     src/responder/nss/nsssrv_netgroup.h \
b2d430
     src/responder/nss/nsssrv_services.h \
b2d430
     src/responder/nss/nsssrv_mmap_cache.h \
b2d430
+    src/responder/nss/nss_iface_generated.h \
b2d430
+    src/responder/nss/nss_iface.h \
b2d430
     src/responder/pac/pacsrv.h \
b2d430
     src/responder/common/negcache_files.h \
b2d430
     src/responder/common/negcache.h \
b2d430
@@ -647,7 +648,6 @@ dist_noinst_HEADERS = \
b2d430
     src/confdb/confdb_setup.h \
b2d430
     src/providers/data_provider.h \
b2d430
     src/providers/data_provider_req.h \
b2d430
-    src/providers/data_provider_iface_generated.h \
b2d430
     src/providers/data_provider/dp.h \
b2d430
     src/providers/data_provider/dp_flags.h \
b2d430
     src/providers/data_provider/dp_responder_iface.h \
b2d430
@@ -1196,10 +1196,10 @@ endif
b2d430
 CODEGEN_XML = \
b2d430
     $(srcdir)/src/tests/sbus_codegen_tests.xml \
b2d430
     $(srcdir)/src/monitor/monitor_iface.xml \
b2d430
-    $(srcdir)/src/providers/data_provider_iface.xml \
b2d430
     $(srcdir)/src/providers/data_provider/dp_iface.xml \
b2d430
     $(srcdir)/src/providers/proxy/proxy_iface.xml \
b2d430
-    $(srcdir)/src/responder/ifp/ifp_iface.xml
b2d430
+    $(srcdir)/src/responder/ifp/ifp_iface.xml \
b2d430
+    $(srcdir)/src/responder/nss/nss_iface.xml
b2d430
 
b2d430
 SBUS_CODEGEN = src/sbus/sbus_codegen
b2d430
 
b2d430
@@ -1248,6 +1248,8 @@ sssd_nss_SOURCES = \
b2d430
     src/responder/nss/nsssrv_netgroup.c \
b2d430
     src/responder/nss/nsssrv_services.c \
b2d430
     src/responder/nss/nsssrv_mmap_cache.c \
b2d430
+    src/responder/nss/nss_iface_generated.c \
b2d430
+    src/responder/nss/nss_iface.c \
b2d430
     $(SSSD_RESPONDER_OBJ)
b2d430
 sssd_nss_LDADD = \
b2d430
     $(TDB_LIBS) \
b2d430
@@ -1411,7 +1413,6 @@ sssd_be_SOURCES = \
b2d430
     src/providers/be_ptask.c \
b2d430
     src/providers/be_refresh.c \
b2d430
     src/monitor/monitor_iface_generated.c \
b2d430
-    src/providers/data_provider_iface_generated.c \
b2d430
     src/providers/data_provider/dp.c \
b2d430
     src/providers/data_provider/dp_modules.c \
b2d430
     src/providers/data_provider/dp_targets.c \
b2d430
diff --git a/src/providers/data_provider.h b/src/providers/data_provider.h
b2d430
index b0b6876d984d7c6574baaa8d130e374ba2e6f0c4..14a0902c265850d91fa7d29cc2708e70b060ec18 100644
b2d430
--- a/src/providers/data_provider.h
b2d430
+++ b/src/providers/data_provider.h
b2d430
@@ -44,7 +44,6 @@
b2d430
 #include "sss_client/sss_cli.h"
b2d430
 #include "util/authtok.h"
b2d430
 #include "providers/data_provider_req.h"
b2d430
-#include "providers/data_provider_iface_generated.h"
b2d430
 
b2d430
 #define DATA_PROVIDER_VERSION 0x0001
b2d430
 #define DATA_PROVIDER_PIPE "private/sbus-dp"
b2d430
diff --git a/src/providers/data_provider/dp_target_id.c b/src/providers/data_provider/dp_target_id.c
b2d430
index 1b06cbe5b96f56c33dd048cf6211b7c97819db8c..938651545ea995091d0aaf29da12bbb8110c9add 100644
b2d430
--- a/src/providers/data_provider/dp_target_id.c
b2d430
+++ b/src/providers/data_provider/dp_target_id.c
b2d430
@@ -25,6 +25,7 @@
b2d430
 #include "providers/data_provider/dp_private.h"
b2d430
 #include "providers/data_provider/dp_iface.h"
b2d430
 #include "providers/backend.h"
b2d430
+#include "responder/nss/nss_iface.h"
b2d430
 #include "util/util.h"
b2d430
 
b2d430
 #define FILTER_TYPE(str, type) {str "=", sizeof(str "=") - 1, type}
b2d430
@@ -168,9 +169,9 @@ static void dp_req_initgr_pp(const char *req_name,
b2d430
     }
b2d430
 
b2d430
     msg = dbus_message_new_method_call(NULL,
b2d430
-                                       DP_PATH,
b2d430
-                                       DATA_PROVIDER_REV_IFACE,
b2d430
-                                       DATA_PROVIDER_REV_IFACE_INITGRCHECK);
b2d430
+                                       NSS_MEMORYCACHE_PATH,
b2d430
+                                       IFACE_NSS_MEMORYCACHE,
b2d430
+                                       IFACE_NSS_MEMORYCACHE_UPDATEINITGROUPS);
b2d430
     if (msg == NULL) {
b2d430
         DEBUG(SSSDBG_CRIT_FAILURE, "Out of memory?!\n");
b2d430
         return;
b2d430
diff --git a/src/providers/data_provider_iface.xml b/src/providers/data_provider_iface.xml
b2d430
deleted file mode 100644
b2d430
index 143975633081ce2ae5690c4036e7169e41d776fc..0000000000000000000000000000000000000000
b2d430
--- a/src/providers/data_provider_iface.xml
b2d430
+++ /dev/null
b2d430
@@ -1,53 +0,0 @@
b2d430
-
b2d430
- "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
b2d430
-<node>
b2d430
-    <interface name="org.freedesktop.sssd.dataprovider">
b2d430
-        <annotation value="data_provider_iface" name="org.freedesktop.DBus.GLib.CSymbol"/>
b2d430
-        <method name="RegisterService">
b2d430
-            
b2d430
-            <annotation name="org.freedesktop.sssd.RawHandler" value="true"/>
b2d430
-        </method>
b2d430
-        <method name="pamHandler">
b2d430
-            
b2d430
-            <annotation name="org.freedesktop.sssd.RawHandler" value="true"/>
b2d430
-        </method>
b2d430
-        <method name="sudoHandler">
b2d430
-            
b2d430
-            <annotation name="org.freedesktop.sssd.RawHandler" value="true"/>
b2d430
-        </method>
b2d430
-        <method name="autofsHandler">
b2d430
-            
b2d430
-            <annotation name="org.freedesktop.sssd.RawHandler" value="true"/>
b2d430
-        </method>
b2d430
-        <method name="hostHandler">
b2d430
-            
b2d430
-            <annotation name="org.freedesktop.sssd.RawHandler" value="true"/>
b2d430
-        </method>
b2d430
-        <method name="getDomains">
b2d430
-            
b2d430
-            <annotation name="org.freedesktop.sssd.RawHandler" value="true"/>
b2d430
-        </method>
b2d430
-        <method name="getAccountInfo">
b2d430
-            
b2d430
-            <annotation name="org.freedesktop.sssd.RawHandler" value="true"/>
b2d430
-        </method>
b2d430
-    </interface>
b2d430
-
b2d430
-    
b2d430
-      this is a reverse method sent from providers to
b2d430
-      the nss responder to tell it to update the mmap
b2d430
-      cache
b2d430
-    -->
b2d430
-
b2d430
-    <interface name="org.freedesktop.sssd.dataprovider_rev">
b2d430
-        <annotation value="data_provider_rev_iface" name="org.freedesktop.DBus.GLib.CSymbol"/>
b2d430
-        <method name="updateCache">
b2d430
-            
b2d430
-            <annotation name="org.freedesktop.sssd.RawHandler" value="true"/>
b2d430
-        </method>
b2d430
-        <method name="initgrCheck">
b2d430
-            
b2d430
-            <annotation name="org.freedesktop.sssd.RawHandler" value="true"/>
b2d430
-        </method>
b2d430
-    </interface>
b2d430
-</node>
b2d430
diff --git a/src/providers/data_provider_iface_generated.c b/src/providers/data_provider_iface_generated.c
b2d430
deleted file mode 100644
b2d430
index bdd6a4d76d18bbb44530d816fce14009736b6f6d..0000000000000000000000000000000000000000
b2d430
--- a/src/providers/data_provider_iface_generated.c
b2d430
+++ /dev/null
b2d430
@@ -1,98 +0,0 @@
b2d430
-/* The following definitions are auto-generated from data_provider_iface.xml */
b2d430
-
b2d430
-#include "util/util.h"
b2d430
-#include "sbus/sssd_dbus.h"
b2d430
-#include "sbus/sssd_dbus_meta.h"
b2d430
-#include "sbus/sssd_dbus_invokers.h"
b2d430
-#include "data_provider_iface_generated.h"
b2d430
-
b2d430
-/* methods for org.freedesktop.sssd.dataprovider */
b2d430
-const struct sbus_method_meta data_provider_iface__methods[] = {
b2d430
-    {
b2d430
-        "RegisterService", /* name */
b2d430
-        NULL, /* no in_args */
b2d430
-        NULL, /* no out_args */
b2d430
-        offsetof(struct data_provider_iface, RegisterService),
b2d430
-        NULL, /* no invoker */
b2d430
-    },
b2d430
-    {
b2d430
-        "pamHandler", /* name */
b2d430
-        NULL, /* no in_args */
b2d430
-        NULL, /* no out_args */
b2d430
-        offsetof(struct data_provider_iface, pamHandler),
b2d430
-        NULL, /* no invoker */
b2d430
-    },
b2d430
-    {
b2d430
-        "sudoHandler", /* name */
b2d430
-        NULL, /* no in_args */
b2d430
-        NULL, /* no out_args */
b2d430
-        offsetof(struct data_provider_iface, sudoHandler),
b2d430
-        NULL, /* no invoker */
b2d430
-    },
b2d430
-    {
b2d430
-        "autofsHandler", /* name */
b2d430
-        NULL, /* no in_args */
b2d430
-        NULL, /* no out_args */
b2d430
-        offsetof(struct data_provider_iface, autofsHandler),
b2d430
-        NULL, /* no invoker */
b2d430
-    },
b2d430
-    {
b2d430
-        "hostHandler", /* name */
b2d430
-        NULL, /* no in_args */
b2d430
-        NULL, /* no out_args */
b2d430
-        offsetof(struct data_provider_iface, hostHandler),
b2d430
-        NULL, /* no invoker */
b2d430
-    },
b2d430
-    {
b2d430
-        "getDomains", /* name */
b2d430
-        NULL, /* no in_args */
b2d430
-        NULL, /* no out_args */
b2d430
-        offsetof(struct data_provider_iface, getDomains),
b2d430
-        NULL, /* no invoker */
b2d430
-    },
b2d430
-    {
b2d430
-        "getAccountInfo", /* name */
b2d430
-        NULL, /* no in_args */
b2d430
-        NULL, /* no out_args */
b2d430
-        offsetof(struct data_provider_iface, getAccountInfo),
b2d430
-        NULL, /* no invoker */
b2d430
-    },
b2d430
-    { NULL, }
b2d430
-};
b2d430
-
b2d430
-/* interface info for org.freedesktop.sssd.dataprovider */
b2d430
-const struct sbus_interface_meta data_provider_iface_meta = {
b2d430
-    "org.freedesktop.sssd.dataprovider", /* name */
b2d430
-    data_provider_iface__methods,
b2d430
-    NULL, /* no signals */
b2d430
-    NULL, /* no properties */
b2d430
-    sbus_invoke_get_all, /* GetAll invoker */
b2d430
-};
b2d430
-
b2d430
-/* methods for org.freedesktop.sssd.dataprovider_rev */
b2d430
-const struct sbus_method_meta data_provider_rev_iface__methods[] = {
b2d430
-    {
b2d430
-        "updateCache", /* name */
b2d430
-        NULL, /* no in_args */
b2d430
-        NULL, /* no out_args */
b2d430
-        offsetof(struct data_provider_rev_iface, updateCache),
b2d430
-        NULL, /* no invoker */
b2d430
-    },
b2d430
-    {
b2d430
-        "initgrCheck", /* name */
b2d430
-        NULL, /* no in_args */
b2d430
-        NULL, /* no out_args */
b2d430
-        offsetof(struct data_provider_rev_iface, initgrCheck),
b2d430
-        NULL, /* no invoker */
b2d430
-    },
b2d430
-    { NULL, }
b2d430
-};
b2d430
-
b2d430
-/* interface info for org.freedesktop.sssd.dataprovider_rev */
b2d430
-const struct sbus_interface_meta data_provider_rev_iface_meta = {
b2d430
-    "org.freedesktop.sssd.dataprovider_rev", /* name */
b2d430
-    data_provider_rev_iface__methods,
b2d430
-    NULL, /* no signals */
b2d430
-    NULL, /* no properties */
b2d430
-    sbus_invoke_get_all, /* GetAll invoker */
b2d430
-};
b2d430
diff --git a/src/providers/data_provider_iface_generated.h b/src/providers/data_provider_iface_generated.h
b2d430
deleted file mode 100644
b2d430
index 976e42b89c6aaf9523b16999b8f5103a1e6f8e66..0000000000000000000000000000000000000000
b2d430
--- a/src/providers/data_provider_iface_generated.h
b2d430
+++ /dev/null
b2d430
@@ -1,82 +0,0 @@
b2d430
-/* The following declarations are auto-generated from data_provider_iface.xml */
b2d430
-
b2d430
-#ifndef __DATA_PROVIDER_IFACE_XML__
b2d430
-#define __DATA_PROVIDER_IFACE_XML__
b2d430
-
b2d430
-#include "sbus/sssd_dbus.h"
b2d430
-
b2d430
-/* ------------------------------------------------------------------------
b2d430
- * DBus Constants
b2d430
- *
b2d430
- * Various constants of interface and method names mostly for use by clients
b2d430
- */
b2d430
-
b2d430
-/* constants for org.freedesktop.sssd.dataprovider */
b2d430
-#define DATA_PROVIDER_IFACE "org.freedesktop.sssd.dataprovider"
b2d430
-#define DATA_PROVIDER_IFACE_REGISTERSERVICE "RegisterService"
b2d430
-#define DATA_PROVIDER_IFACE_PAMHANDLER "pamHandler"
b2d430
-#define DATA_PROVIDER_IFACE_SUDOHANDLER "sudoHandler"
b2d430
-#define DATA_PROVIDER_IFACE_AUTOFSHANDLER "autofsHandler"
b2d430
-#define DATA_PROVIDER_IFACE_HOSTHANDLER "hostHandler"
b2d430
-#define DATA_PROVIDER_IFACE_GETDOMAINS "getDomains"
b2d430
-#define DATA_PROVIDER_IFACE_GETACCOUNTINFO "getAccountInfo"
b2d430
-
b2d430
-/* constants for org.freedesktop.sssd.dataprovider_rev */
b2d430
-#define DATA_PROVIDER_REV_IFACE "org.freedesktop.sssd.dataprovider_rev"
b2d430
-#define DATA_PROVIDER_REV_IFACE_UPDATECACHE "updateCache"
b2d430
-#define DATA_PROVIDER_REV_IFACE_INITGRCHECK "initgrCheck"
b2d430
-
b2d430
-/* ------------------------------------------------------------------------
b2d430
- * DBus handlers
b2d430
- *
b2d430
- * These structures are filled in by implementors of the different
b2d430
- * dbus interfaces to handle method calls.
b2d430
- *
b2d430
- * Handler functions of type sbus_msg_handler_fn accept raw messages,
b2d430
- * other handlers are typed appropriately. If a handler that is
b2d430
- * set to NULL is invoked it will result in a
b2d430
- * org.freedesktop.DBus.Error.NotSupported error for the caller.
b2d430
- *
b2d430
- * Handlers have a matching xxx_finish() function (unless the method has
b2d430
- * accepts raw messages). These finish functions the
b2d430
- * sbus_request_return_and_finish() with the appropriate arguments to
b2d430
- * construct a valid reply. Once a finish function has been called, the
b2d430
- * @dbus_req it was called with is freed and no longer valid.
b2d430
- */
b2d430
-
b2d430
-/* vtable for org.freedesktop.sssd.dataprovider */
b2d430
-struct data_provider_iface {
b2d430
-    struct sbus_vtable vtable; /* derive from sbus_vtable */
b2d430
-    sbus_msg_handler_fn RegisterService;
b2d430
-    sbus_msg_handler_fn pamHandler;
b2d430
-    sbus_msg_handler_fn sudoHandler;
b2d430
-    sbus_msg_handler_fn autofsHandler;
b2d430
-    sbus_msg_handler_fn hostHandler;
b2d430
-    sbus_msg_handler_fn getDomains;
b2d430
-    sbus_msg_handler_fn getAccountInfo;
b2d430
-};
b2d430
-
b2d430
-/* vtable for org.freedesktop.sssd.dataprovider_rev */
b2d430
-struct data_provider_rev_iface {
b2d430
-    struct sbus_vtable vtable; /* derive from sbus_vtable */
b2d430
-    sbus_msg_handler_fn updateCache;
b2d430
-    sbus_msg_handler_fn initgrCheck;
b2d430
-};
b2d430
-
b2d430
-/* ------------------------------------------------------------------------
b2d430
- * DBus Interface Metadata
b2d430
- *
b2d430
- * These structure definitions are filled in with the information about
b2d430
- * the interfaces, methods, properties and so on.
b2d430
- *
b2d430
- * The actual definitions are found in the accompanying C file next
b2d430
- * to this header.
b2d430
- */
b2d430
-
b2d430
-/* interface info for org.freedesktop.sssd.dataprovider */
b2d430
-extern const struct sbus_interface_meta data_provider_iface_meta;
b2d430
-
b2d430
-/* interface info for org.freedesktop.sssd.dataprovider_rev */
b2d430
-extern const struct sbus_interface_meta data_provider_rev_iface_meta;
b2d430
-
b2d430
-#endif /* __DATA_PROVIDER_IFACE_XML__ */
b2d430
diff --git a/src/responder/autofs/autofssrv.c b/src/responder/autofs/autofssrv.c
b2d430
index c72f3c1f7aee81a9986076975086cdd88e968edb..826a36e9bc0e2afedfda17104d15b86c5fc1b7e1 100644
b2d430
--- a/src/responder/autofs/autofssrv.c
b2d430
+++ b/src/responder/autofs/autofssrv.c
b2d430
@@ -44,17 +44,6 @@ struct mon_cli_iface monitor_autofs_methods = {
b2d430
     .sysbusReconnect = NULL,
b2d430
 };
b2d430
 
b2d430
-static struct data_provider_iface autofs_dp_methods = {
b2d430
-    { &data_provider_iface_meta, 0 },
b2d430
-    .RegisterService = NULL,
b2d430
-    .pamHandler = NULL,
b2d430
-    .sudoHandler = NULL,
b2d430
-    .autofsHandler = NULL,
b2d430
-    .hostHandler = NULL,
b2d430
-    .getDomains = NULL,
b2d430
-    .getAccountInfo = NULL,
b2d430
-};
b2d430
-
b2d430
 static errno_t
b2d430
 autofs_get_config(struct autofs_ctx *actx,
b2d430
                   struct confdb_ctx *cdb)
b2d430
@@ -130,7 +119,7 @@ autofs_process_init(TALLOC_CTX *mem_ctx,
b2d430
                            SSS_AUTOFS_SBUS_SERVICE_VERSION,
b2d430
                            &monitor_autofs_methods,
b2d430
                            "autofs",
b2d430
-                           &autofs_dp_methods.vtable,
b2d430
+                           NULL,
b2d430
                            autofs_connection_setup,
b2d430
                            &rctx);
b2d430
     if (ret != EOK) {
b2d430
diff --git a/src/responder/common/responder.h b/src/responder/common/responder.h
b2d430
index 335b313ce1a6bc7c0e0ba332786e2e9f39a04ff1..9e3b2fdbda4e30b859df597374fc7d490b1720e5 100644
b2d430
--- a/src/responder/common/responder.h
b2d430
+++ b/src/responder/common/responder.h
b2d430
@@ -163,11 +163,7 @@ struct mon_cli_iface;
b2d430
 typedef int (*connection_setup_t)(struct cli_ctx *cctx);
b2d430
 
b2d430
 int sss_connection_setup(struct cli_ctx *cctx);
b2d430
-/*
b2d430
- * NOTE: We would like to use more strong typing for the @dp_vtable argument
b2d430
- * but can't since it accepts either a struct data_provider_iface
b2d430
- * or struct data_provider_rev_iface. So pass the base struct: sbus_vtable
b2d430
- */
b2d430
+
b2d430
 int sss_process_init(TALLOC_CTX *mem_ctx,
b2d430
                      struct tevent_context *ev,
b2d430
                      struct confdb_ctx *cdb,
b2d430
@@ -181,7 +177,7 @@ int sss_process_init(TALLOC_CTX *mem_ctx,
b2d430
                      uint16_t svc_version,
b2d430
                      struct mon_cli_iface *monitor_intf,
b2d430
                      const char *cli_name,
b2d430
-                     struct sbus_vtable *dp_intf,
b2d430
+                     struct sbus_iface_map *sbus_iface,
b2d430
                      connection_setup_t conn_setup,
b2d430
                      struct resp_ctx **responder_ctx);
b2d430
 
b2d430
diff --git a/src/responder/common/responder_common.c b/src/responder/common/responder_common.c
b2d430
index 7f6264ae70e5073063b5cfcd73098eefad2ce653..c604c64a652221521ec7114b8588186f087eb11a 100644
b2d430
--- a/src/responder/common/responder_common.c
b2d430
+++ b/src/responder/common/responder_common.c
b2d430
@@ -549,7 +549,7 @@ void idle_handler(struct tevent_context *ev,
b2d430
 }
b2d430
 
b2d430
 static int sss_dp_init(struct resp_ctx *rctx,
b2d430
-                       struct sbus_vtable *dp_intf,
b2d430
+                       struct sbus_iface_map *sbus_iface,
b2d430
                        const char *cli_name,
b2d430
                        struct sss_domain_info *domain)
b2d430
 {
b2d430
@@ -577,10 +577,12 @@ static int sss_dp_init(struct resp_ctx *rctx,
b2d430
         return ret;
b2d430
     }
b2d430
 
b2d430
-    ret = sbus_conn_register_iface(be_conn->conn, dp_intf, DP_PATH, rctx);
b2d430
-    if (ret != EOK) {
b2d430
-        DEBUG(SSSDBG_FATAL_FAILURE, "Failed to export data provider.\n");
b2d430
-        return ret;
b2d430
+    if (sbus_iface != NULL) {
b2d430
+        ret = sbus_conn_register_iface_map(be_conn->conn, sbus_iface, rctx);
b2d430
+        if (ret != EOK) {
b2d430
+            DEBUG(SSSDBG_FATAL_FAILURE, "Failed to register D-Bus interface.\n");
b2d430
+            return ret;
b2d430
+        }
b2d430
     }
b2d430
 
b2d430
     DLIST_ADD_END(rctx->be_conns, be_conn, struct be_conn *);
b2d430
@@ -925,7 +927,7 @@ int sss_process_init(TALLOC_CTX *mem_ctx,
b2d430
                      uint16_t svc_version,
b2d430
                      struct mon_cli_iface *monitor_intf,
b2d430
                      const char *cli_name,
b2d430
-                     struct sbus_vtable *dp_intf,
b2d430
+                     struct sbus_iface_map *sbus_iface,
b2d430
                      connection_setup_t conn_setup,
b2d430
                      struct resp_ctx **responder_ctx)
b2d430
 {
b2d430
@@ -1040,7 +1042,7 @@ int sss_process_init(TALLOC_CTX *mem_ctx,
b2d430
             continue;
b2d430
         }
b2d430
 
b2d430
-        ret = sss_dp_init(rctx, dp_intf, cli_name, dom);
b2d430
+        ret = sss_dp_init(rctx, sbus_iface, cli_name, dom);
b2d430
         if (ret != EOK) {
b2d430
             DEBUG(SSSDBG_FATAL_FAILURE,
b2d430
                   "fatal error setting up backend connector\n");
b2d430
diff --git a/src/responder/common/responder_get_domains.c b/src/responder/common/responder_get_domains.c
b2d430
index 6b354d8b2251f3a5cf576a58ae191fd99f307dd7..cc7b99f30046569547a08f83e46cbbe9d6c19897 100644
b2d430
--- a/src/responder/common/responder_get_domains.c
b2d430
+++ b/src/responder/common/responder_get_domains.c
b2d430
@@ -88,8 +88,8 @@ sss_dp_get_domains_msg(void *pvt)
b2d430
 
b2d430
     msg = dbus_message_new_method_call(NULL,
b2d430
                                        DP_PATH,
b2d430
-                                       DATA_PROVIDER_IFACE,
b2d430
-                                       DATA_PROVIDER_IFACE_GETDOMAINS);
b2d430
+                                       IFACE_DP,
b2d430
+                                       IFACE_DP_GETDOMAINS);
b2d430
     if (msg == NULL) {
b2d430
         DEBUG(SSSDBG_CRIT_FAILURE, "Out of memory?!\n");
b2d430
         return NULL;
b2d430
diff --git a/src/responder/ifp/ifpsrv.c b/src/responder/ifp/ifpsrv.c
b2d430
index a2137ecb218824909325df6c7052dbbbcb144679..0555c00167045707b7d455d28df368749b9b84f6 100644
b2d430
--- a/src/responder/ifp/ifpsrv.c
b2d430
+++ b/src/responder/ifp/ifpsrv.c
b2d430
@@ -58,17 +58,6 @@ struct mon_cli_iface monitor_ifp_methods = {
b2d430
     .sysbusReconnect = ifp_sysbus_reconnect,
b2d430
 };
b2d430
 
b2d430
-static struct data_provider_iface ifp_dp_methods = {
b2d430
-    { &data_provider_iface_meta, 0 },
b2d430
-    .RegisterService = NULL,
b2d430
-    .pamHandler = NULL,
b2d430
-    .sudoHandler = NULL,
b2d430
-    .autofsHandler = NULL,
b2d430
-    .hostHandler = NULL,
b2d430
-    .getDomains = NULL,
b2d430
-    .getAccountInfo = NULL,
b2d430
-};
b2d430
-
b2d430
 struct sss_cmd_table *get_ifp_cmds(void)
b2d430
 {
b2d430
     static struct sss_cmd_table ifp_cmds[] = {
b2d430
@@ -238,7 +227,7 @@ int ifp_process_init(TALLOC_CTX *mem_ctx,
b2d430
                            SSS_IFP_SBUS_SERVICE_VERSION,
b2d430
                            &monitor_ifp_methods,
b2d430
                            "InfoPipe",
b2d430
-                           &ifp_dp_methods.vtable,
b2d430
+                           NULL,
b2d430
                            sss_connection_setup,
b2d430
                            &rctx);
b2d430
     if (ret != EOK) {
b2d430
diff --git a/src/responder/nss/nss_iface.c b/src/responder/nss/nss_iface.c
b2d430
new file mode 100644
b2d430
index 0000000000000000000000000000000000000000..b01732e086c5fc5c7018ec84c3438e19ed812fef
b2d430
--- /dev/null
b2d430
+++ b/src/responder/nss/nss_iface.c
b2d430
@@ -0,0 +1,38 @@
b2d430
+/*
b2d430
+    Authors:
b2d430
+        Pavel Březina <pbrezina@redhat.com>
b2d430
+
b2d430
+    Copyright (C) 2016 Red Hat
b2d430
+
b2d430
+    This program is free software; you can redistribute it and/or modify
b2d430
+    it under the terms of the GNU General Public License as published by
b2d430
+    the Free Software Foundation; either version 3 of the License, or
b2d430
+    (at your option) any later version.
b2d430
+
b2d430
+    This program is distributed in the hope that it will be useful,
b2d430
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
b2d430
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
b2d430
+    GNU General Public License for more details.
b2d430
+
b2d430
+    You should have received a copy of the GNU General Public License
b2d430
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
b2d430
+*/
b2d430
+
b2d430
+#include "sbus/sssd_dbus.h"
b2d430
+#include "responder/nss/nss_iface.h"
b2d430
+#include "responder/nss/nsssrv.h"
b2d430
+
b2d430
+struct iface_nss_memorycache iface_nss_memorycache = {
b2d430
+    { &iface_nss_memorycache_meta, 0 },
b2d430
+    .UpdateInitgroups = nss_memorycache_update_initgroups
b2d430
+};
b2d430
+
b2d430
+static struct sbus_iface_map iface_map[] = {
b2d430
+    { NSS_MEMORYCACHE_PATH, &iface_nss_memorycache.vtable },
b2d430
+    { NULL, NULL }
b2d430
+};
b2d430
+
b2d430
+struct sbus_iface_map *nss_get_sbus_interface()
b2d430
+{
b2d430
+    return iface_map;
b2d430
+}
b2d430
diff --git a/src/responder/nss/nss_iface.h b/src/responder/nss/nss_iface.h
b2d430
new file mode 100644
b2d430
index 0000000000000000000000000000000000000000..ab59928c3e2dac62cea6f793ff774d9e0f8da6db
b2d430
--- /dev/null
b2d430
+++ b/src/responder/nss/nss_iface.h
b2d430
@@ -0,0 +1,30 @@
b2d430
+/*
b2d430
+    Authors:
b2d430
+        Pavel Březina <pbrezina@redhat.com>
b2d430
+
b2d430
+    Copyright (C) 2016 Red Hat
b2d430
+
b2d430
+    This program is free software; you can redistribute it and/or modify
b2d430
+    it under the terms of the GNU General Public License as published by
b2d430
+    the Free Software Foundation; either version 3 of the License, or
b2d430
+    (at your option) any later version.
b2d430
+
b2d430
+    This program is distributed in the hope that it will be useful,
b2d430
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
b2d430
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
b2d430
+    GNU General Public License for more details.
b2d430
+
b2d430
+    You should have received a copy of the GNU General Public License
b2d430
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
b2d430
+*/
b2d430
+
b2d430
+#ifndef _NSS_IFACE_H_
b2d430
+#define _NSS_IFACE_H_
b2d430
+
b2d430
+#include "responder/nss/nss_iface_generated.h"
b2d430
+
b2d430
+#define NSS_MEMORYCACHE_PATH "/org/freedesktop/sssd/nss/memcache"
b2d430
+
b2d430
+struct sbus_iface_map *nss_get_sbus_interface(void);
b2d430
+
b2d430
+#endif /* _NSS_IFACE_H_ */
b2d430
diff --git a/src/responder/nss/nss_iface.xml b/src/responder/nss/nss_iface.xml
b2d430
new file mode 100644
b2d430
index 0000000000000000000000000000000000000000..b7cc4deb77135a592bad2ca62570f206231129b7
b2d430
--- /dev/null
b2d430
+++ b/src/responder/nss/nss_iface.xml
b2d430
@@ -0,0 +1,12 @@
b2d430
+
b2d430
+ "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
b2d430
+<node>
b2d430
+    <interface name="org.freedesktop.sssd.nss.MemoryCache">
b2d430
+        <annotation value="iface_nss_memorycache" name="org.freedesktop.DBus.GLib.CSymbol"/>
b2d430
+        <method name="UpdateInitgroups">
b2d430
+            <arg name="user" type="s" direction="in" />
b2d430
+            <arg name="domain" type="s" direction="in" />
b2d430
+            <arg name="groups" type="au" direction="in" />
b2d430
+        </method>
b2d430
+    </interface>
b2d430
+</node>
b2d430
diff --git a/src/responder/nss/nss_iface_generated.c b/src/responder/nss/nss_iface_generated.c
b2d430
new file mode 100644
b2d430
index 0000000000000000000000000000000000000000..2d0031090e33df9c9e9d9fbf1a18825026509803
b2d430
--- /dev/null
b2d430
+++ b/src/responder/nss/nss_iface_generated.c
b2d430
@@ -0,0 +1,69 @@
b2d430
+/* The following definitions are auto-generated from nss_iface.xml */
b2d430
+
b2d430
+#include "util/util.h"
b2d430
+#include "sbus/sssd_dbus.h"
b2d430
+#include "sbus/sssd_dbus_meta.h"
b2d430
+#include "sbus/sssd_dbus_invokers.h"
b2d430
+#include "nss_iface_generated.h"
b2d430
+
b2d430
+/* invokes a handler with a 'ssau' DBus signature */
b2d430
+static int invoke_ssau_method(struct sbus_request *dbus_req, void *function_ptr);
b2d430
+
b2d430
+/* arguments for org.freedesktop.sssd.nss.MemoryCache.UpdateInitgroups */
b2d430
+const struct sbus_arg_meta iface_nss_memorycache_UpdateInitgroups__in[] = {
b2d430
+    { "user", "s" },
b2d430
+    { "domain", "s" },
b2d430
+    { "groups", "au" },
b2d430
+    { NULL, }
b2d430
+};
b2d430
+
b2d430
+int iface_nss_memorycache_UpdateInitgroups_finish(struct sbus_request *req)
b2d430
+{
b2d430
+   return sbus_request_return_and_finish(req,
b2d430
+                                         DBUS_TYPE_INVALID);
b2d430
+}
b2d430
+
b2d430
+/* methods for org.freedesktop.sssd.nss.MemoryCache */
b2d430
+const struct sbus_method_meta iface_nss_memorycache__methods[] = {
b2d430
+    {
b2d430
+        "UpdateInitgroups", /* name */
b2d430
+        iface_nss_memorycache_UpdateInitgroups__in,
b2d430
+        NULL, /* no out_args */
b2d430
+        offsetof(struct iface_nss_memorycache, UpdateInitgroups),
b2d430
+        invoke_ssau_method,
b2d430
+    },
b2d430
+    { NULL, }
b2d430
+};
b2d430
+
b2d430
+/* interface info for org.freedesktop.sssd.nss.MemoryCache */
b2d430
+const struct sbus_interface_meta iface_nss_memorycache_meta = {
b2d430
+    "org.freedesktop.sssd.nss.MemoryCache", /* name */
b2d430
+    iface_nss_memorycache__methods,
b2d430
+    NULL, /* no signals */
b2d430
+    NULL, /* no properties */
b2d430
+    sbus_invoke_get_all, /* GetAll invoker */
b2d430
+};
b2d430
+
b2d430
+/* invokes a handler with a 'ssau' DBus signature */
b2d430
+static int invoke_ssau_method(struct sbus_request *dbus_req, void *function_ptr)
b2d430
+{
b2d430
+    const char * arg_0;
b2d430
+    const char * arg_1;
b2d430
+    uint32_t *arg_2;
b2d430
+    int len_2;
b2d430
+    int (*handler)(struct sbus_request *, void *, const char *, const char *, uint32_t[], int) = function_ptr;
b2d430
+
b2d430
+    if (!sbus_request_parse_or_finish(dbus_req,
b2d430
+                               DBUS_TYPE_STRING, &arg_0,
b2d430
+                               DBUS_TYPE_STRING, &arg_1,
b2d430
+                               DBUS_TYPE_ARRAY, DBUS_TYPE_UINT32, &arg_2, &len_2,
b2d430
+                               DBUS_TYPE_INVALID)) {
b2d430
+         return EOK; /* request handled */
b2d430
+    }
b2d430
+
b2d430
+    return (handler)(dbus_req, dbus_req->intf->handler_data,
b2d430
+                     arg_0,
b2d430
+                     arg_1,
b2d430
+                     arg_2,
b2d430
+                     len_2);
b2d430
+}
b2d430
diff --git a/src/responder/nss/nss_iface_generated.h b/src/responder/nss/nss_iface_generated.h
b2d430
new file mode 100644
b2d430
index 0000000000000000000000000000000000000000..ad902482a9be03a60cbf3663b6f771d0a2020b88
b2d430
--- /dev/null
b2d430
+++ b/src/responder/nss/nss_iface_generated.h
b2d430
@@ -0,0 +1,58 @@
b2d430
+/* The following declarations are auto-generated from nss_iface.xml */
b2d430
+
b2d430
+#ifndef __NSS_IFACE_XML__
b2d430
+#define __NSS_IFACE_XML__
b2d430
+
b2d430
+#include "sbus/sssd_dbus.h"
b2d430
+
b2d430
+/* ------------------------------------------------------------------------
b2d430
+ * DBus Constants
b2d430
+ *
b2d430
+ * Various constants of interface and method names mostly for use by clients
b2d430
+ */
b2d430
+
b2d430
+/* constants for org.freedesktop.sssd.nss.MemoryCache */
b2d430
+#define IFACE_NSS_MEMORYCACHE "org.freedesktop.sssd.nss.MemoryCache"
b2d430
+#define IFACE_NSS_MEMORYCACHE_UPDATEINITGROUPS "UpdateInitgroups"
b2d430
+
b2d430
+/* ------------------------------------------------------------------------
b2d430
+ * DBus handlers
b2d430
+ *
b2d430
+ * These structures are filled in by implementors of the different
b2d430
+ * dbus interfaces to handle method calls.
b2d430
+ *
b2d430
+ * Handler functions of type sbus_msg_handler_fn accept raw messages,
b2d430
+ * other handlers are typed appropriately. If a handler that is
b2d430
+ * set to NULL is invoked it will result in a
b2d430
+ * org.freedesktop.DBus.Error.NotSupported error for the caller.
b2d430
+ *
b2d430
+ * Handlers have a matching xxx_finish() function (unless the method has
b2d430
+ * accepts raw messages). These finish functions the
b2d430
+ * sbus_request_return_and_finish() with the appropriate arguments to
b2d430
+ * construct a valid reply. Once a finish function has been called, the
b2d430
+ * @dbus_req it was called with is freed and no longer valid.
b2d430
+ */
b2d430
+
b2d430
+/* vtable for org.freedesktop.sssd.nss.MemoryCache */
b2d430
+struct iface_nss_memorycache {
b2d430
+    struct sbus_vtable vtable; /* derive from sbus_vtable */
b2d430
+    int (*UpdateInitgroups)(struct sbus_request *req, void *data, const char *arg_user, const char *arg_domain, uint32_t arg_groups[], int len_groups);
b2d430
+};
b2d430
+
b2d430
+/* finish function for UpdateInitgroups */
b2d430
+int iface_nss_memorycache_UpdateInitgroups_finish(struct sbus_request *req);
b2d430
+
b2d430
+/* ------------------------------------------------------------------------
b2d430
+ * DBus Interface Metadata
b2d430
+ *
b2d430
+ * These structure definitions are filled in with the information about
b2d430
+ * the interfaces, methods, properties and so on.
b2d430
+ *
b2d430
+ * The actual definitions are found in the accompanying C file next
b2d430
+ * to this header.
b2d430
+ */
b2d430
+
b2d430
+/* interface info for org.freedesktop.sssd.nss.MemoryCache */
b2d430
+extern const struct sbus_interface_meta iface_nss_memorycache_meta;
b2d430
+
b2d430
+#endif /* __NSS_IFACE_XML__ */
b2d430
diff --git a/src/responder/nss/nsssrv.c b/src/responder/nss/nsssrv.c
b2d430
index 8be3455e57e07481e7cf7d4d0f525dad5b8601fc..05b51ecdf2e17e20af2ee3ee48377cbe1bf19a24 100644
b2d430
--- a/src/responder/nss/nsssrv.c
b2d430
+++ b/src/responder/nss/nsssrv.c
b2d430
@@ -37,6 +37,7 @@
b2d430
 #include "responder/nss/nsssrv_private.h"
b2d430
 #include "responder/nss/nsssrv_mmap_cache.h"
b2d430
 #include "responder/nss/nsssrv_netgroup.h"
b2d430
+#include "responder/nss/nss_iface.h"
b2d430
 #include "responder/common/negcache.h"
b2d430
 #include "db/sysdb.h"
b2d430
 #include "confdb/confdb.h"
b2d430
@@ -327,7 +328,7 @@ done:
b2d430
     return ret;
b2d430
 }
b2d430
 
b2d430
-static int nss_update_memcache(struct sbus_request *dbus_req, void *data)
b2d430
+int nss_update_memcache(struct sbus_request *dbus_req, void *data)
b2d430
 {
b2d430
     struct resp_ctx *rctx = talloc_get_type(data, struct resp_ctx);
b2d430
     struct nss_ctx *nctx = talloc_get_type(rctx->pvt_ctx, struct nss_ctx);
b2d430
@@ -338,37 +339,24 @@ static int nss_update_memcache(struct sbus_request *dbus_req, void *data)
b2d430
     return EOK;
b2d430
 }
b2d430
 
b2d430
-static int nss_memcache_initgr_check(struct sbus_request *dbus_req, void *data)
b2d430
+int nss_memorycache_update_initgroups(struct sbus_request *sbus_req,
b2d430
+                                      void *data,
b2d430
+                                      const char *user,
b2d430
+                                      const char *domain,
b2d430
+                                      uint32_t *groups,
b2d430
+                                      int num_groups)
b2d430
 {
b2d430
     struct resp_ctx *rctx = talloc_get_type(data, struct resp_ctx);
b2d430
     struct nss_ctx *nctx = talloc_get_type(rctx->pvt_ctx, struct nss_ctx);
b2d430
-    char *user;
b2d430
-    char *domain;
b2d430
-    uint32_t *groups;
b2d430
-    int gnum;
b2d430
 
b2d430
-    if (!sbus_request_parse_or_finish(dbus_req,
b2d430
-                                      DBUS_TYPE_STRING, &user,
b2d430
-                                      DBUS_TYPE_STRING, &domain,
b2d430
-                                      DBUS_TYPE_ARRAY, DBUS_TYPE_UINT32, &groups, &gnum,
b2d430
-                                      DBUS_TYPE_INVALID)) {
b2d430
-        return EOK; /* handled */
b2d430
-    }
b2d430
+    DEBUG(SSSDBG_TRACE_LIBS, "Updating inigroups memory cache of [%s@%s]\n",
b2d430
+          user, domain);
b2d430
 
b2d430
-    DEBUG(SSSDBG_TRACE_LIBS,
b2d430
-          "Got request for [%s@%s]\n", user, domain);
b2d430
+    nss_update_initgr_memcache(nctx, user, domain, num_groups, groups);
b2d430
 
b2d430
-    nss_update_initgr_memcache(nctx, user, domain, gnum, groups);
b2d430
-
b2d430
-    return sbus_request_return_and_finish(dbus_req, DBUS_TYPE_INVALID);
b2d430
+    return iface_nss_memorycache_UpdateInitgroups_finish(sbus_req);
b2d430
 }
b2d430
 
b2d430
-static struct data_provider_rev_iface nss_dp_methods = {
b2d430
-    { &data_provider_rev_iface_meta, 0 },
b2d430
-    .updateCache = nss_update_memcache,
b2d430
-    .initgrCheck = nss_memcache_initgr_check
b2d430
-};
b2d430
-
b2d430
 static void nss_dp_reconnect_init(struct sbus_connection *conn,
b2d430
                                   int status, void *pvt)
b2d430
 {
b2d430
@@ -419,7 +407,8 @@ int nss_process_init(TALLOC_CTX *mem_ctx,
b2d430
                            NSS_SBUS_SERVICE_NAME,
b2d430
                            NSS_SBUS_SERVICE_VERSION,
b2d430
                            &monitor_nss_methods,
b2d430
-                           "NSS", &nss_dp_methods.vtable,
b2d430
+                           "NSS",
b2d430
+                           nss_get_sbus_interface(),
b2d430
                            nss_connection_setup,
b2d430
                            &rctx);
b2d430
     if (ret != EOK) {
b2d430
diff --git a/src/responder/nss/nsssrv.h b/src/responder/nss/nsssrv.h
b2d430
index 2977479aa52082480f92eab94f7833e2e696a9ac..d4a80f76df236f40d872c701687bf453255d9890 100644
b2d430
--- a/src/responder/nss/nsssrv.h
b2d430
+++ b/src/responder/nss/nsssrv.h
b2d430
@@ -81,4 +81,11 @@ struct nss_packet;
b2d430
 
b2d430
 struct sss_cmd_table *get_nss_cmds(void);
b2d430
 
b2d430
+int nss_memorycache_update_initgroups(struct sbus_request *sbus_req,
b2d430
+                                      void *data,
b2d430
+                                      const char *user,
b2d430
+                                      const char *domain,
b2d430
+                                      uint32_t *groups,
b2d430
+                                      int num_groups);
b2d430
+
b2d430
 #endif /* __NSSSRV_H__ */
b2d430
diff --git a/src/responder/pac/pacsrv.c b/src/responder/pac/pacsrv.c
b2d430
index 15d1986f842ac8397cf509ca8ef44728d6ddc5f1..852deb10eff014189d35a2769d895a901d8296e1 100644
b2d430
--- a/src/responder/pac/pacsrv.c
b2d430
+++ b/src/responder/pac/pacsrv.c
b2d430
@@ -61,17 +61,6 @@ struct mon_cli_iface monitor_pac_methods = {
b2d430
     .sysbusReconnect = NULL,
b2d430
 };
b2d430
 
b2d430
-static struct data_provider_iface pac_dp_methods = {
b2d430
-    { &data_provider_iface_meta, 0 },
b2d430
-    .RegisterService = NULL,
b2d430
-    .pamHandler = NULL,
b2d430
-    .sudoHandler = NULL,
b2d430
-    .autofsHandler = NULL,
b2d430
-    .hostHandler = NULL,
b2d430
-    .getDomains = NULL,
b2d430
-    .getAccountInfo = NULL,
b2d430
-};
b2d430
-
b2d430
 /* TODO: check if this can be made generic for all responders */
b2d430
 static void pac_dp_reconnect_init(struct sbus_connection *conn,
b2d430
                                   int status, void *pvt)
b2d430
@@ -122,7 +111,7 @@ int pac_process_init(TALLOC_CTX *mem_ctx,
b2d430
                            PAC_SBUS_SERVICE_NAME,
b2d430
                            PAC_SBUS_SERVICE_VERSION,
b2d430
                            &monitor_pac_methods,
b2d430
-                           "PAC", &pac_dp_methods.vtable,
b2d430
+                           "PAC", NULL,
b2d430
                            sss_connection_setup,
b2d430
                            &rctx);
b2d430
     if (ret != EOK) {
b2d430
diff --git a/src/responder/pam/pamsrv.c b/src/responder/pam/pamsrv.c
b2d430
index efd1e5c7527decda5de7304b54919846fa2ee0db..9374de4d63b2886262ca1541daff581603d7c838 100644
b2d430
--- a/src/responder/pam/pamsrv.c
b2d430
+++ b/src/responder/pam/pamsrv.c
b2d430
@@ -66,17 +66,6 @@ struct mon_cli_iface monitor_pam_methods = {
b2d430
     .sysbusReconnect = NULL,
b2d430
 };
b2d430
 
b2d430
-static struct data_provider_iface pam_dp_methods = {
b2d430
-    { &data_provider_iface_meta, 0 },
b2d430
-    .RegisterService = NULL,
b2d430
-    .pamHandler = NULL,
b2d430
-    .sudoHandler = NULL,
b2d430
-    .autofsHandler = NULL,
b2d430
-    .hostHandler = NULL,
b2d430
-    .getDomains = NULL,
b2d430
-    .getAccountInfo = NULL,
b2d430
-};
b2d430
-
b2d430
 static void pam_dp_reconnect_init(struct sbus_connection *conn, int status, void *pvt)
b2d430
 {
b2d430
     struct be_conn *be_conn = talloc_get_type(pvt, struct be_conn);
b2d430
@@ -201,7 +190,7 @@ static int pam_process_init(TALLOC_CTX *mem_ctx,
b2d430
                            SSS_PAM_SBUS_SERVICE_NAME,
b2d430
                            SSS_PAM_SBUS_SERVICE_VERSION,
b2d430
                            &monitor_pam_methods,
b2d430
-                           "PAM", &pam_dp_methods.vtable,
b2d430
+                           "PAM", NULL,
b2d430
                            sss_connection_setup,
b2d430
                            &rctx);
b2d430
     if (ret != EOK) {
b2d430
diff --git a/src/responder/pam/pamsrv_dp.c b/src/responder/pam/pamsrv_dp.c
b2d430
index 826146350670d67f897ee7eec2cf6ca607b96435..aa3fdc3c32d234ed54a9f5202886157601ee3846 100644
b2d430
--- a/src/responder/pam/pamsrv_dp.c
b2d430
+++ b/src/responder/pam/pamsrv_dp.c
b2d430
@@ -130,8 +130,8 @@ int pam_dp_send_req(struct pam_auth_req *preq, int timeout)
b2d430
 
b2d430
     msg = dbus_message_new_method_call(NULL,
b2d430
                                        DP_PATH,
b2d430
-                                       DATA_PROVIDER_IFACE,
b2d430
-                                       DATA_PROVIDER_IFACE_PAMHANDLER);
b2d430
+                                       IFACE_DP,
b2d430
+                                       IFACE_DP_PAMHANDLER);
b2d430
     if (msg == NULL) {
b2d430
         DEBUG(SSSDBG_FATAL_FAILURE,"Out of memory?!\n");
b2d430
         return ENOMEM;
b2d430
diff --git a/src/responder/ssh/sshsrv.c b/src/responder/ssh/sshsrv.c
b2d430
index f763e3b00d20527225046a85609e7ff56861f682..88938215b542b5748721cfecc59ca4141010fb88 100644
b2d430
--- a/src/responder/ssh/sshsrv.c
b2d430
+++ b/src/responder/ssh/sshsrv.c
b2d430
@@ -41,17 +41,6 @@ struct mon_cli_iface monitor_ssh_methods = {
b2d430
     .sysbusReconnect = NULL,
b2d430
 };
b2d430
 
b2d430
-static struct data_provider_iface ssh_dp_methods = {
b2d430
-    { &data_provider_iface_meta, 0 },
b2d430
-    .RegisterService = NULL,
b2d430
-    .pamHandler = NULL,
b2d430
-    .sudoHandler = NULL,
b2d430
-    .autofsHandler = NULL,
b2d430
-    .hostHandler = NULL,
b2d430
-    .getDomains = NULL,
b2d430
-    .getAccountInfo = NULL,
b2d430
-};
b2d430
-
b2d430
 static void ssh_dp_reconnect_init(struct sbus_connection *conn,
b2d430
                                   int status, void *pvt)
b2d430
 {
b2d430
@@ -96,7 +85,7 @@ int ssh_process_init(TALLOC_CTX *mem_ctx,
b2d430
                            SSS_SSH_SBUS_SERVICE_VERSION,
b2d430
                            &monitor_ssh_methods,
b2d430
                            "SSH",
b2d430
-                           &ssh_dp_methods.vtable,
b2d430
+                           NULL,
b2d430
                            sss_connection_setup,
b2d430
                            &rctx);
b2d430
     if (ret != EOK) {
b2d430
diff --git a/src/responder/sudo/sudosrv.c b/src/responder/sudo/sudosrv.c
b2d430
index e0346033e38f1e39e621e131c3265a583b91a5c3..d832686a8572f3729a0477cdca2f77ebcb19fbc0 100644
b2d430
--- a/src/responder/sudo/sudosrv.c
b2d430
+++ b/src/responder/sudo/sudosrv.c
b2d430
@@ -42,17 +42,6 @@ struct mon_cli_iface monitor_sudo_methods = {
b2d430
     .sysbusReconnect = NULL,
b2d430
 };
b2d430
 
b2d430
-static struct data_provider_iface sudo_dp_methods = {
b2d430
-    { &data_provider_iface_meta, 0 },
b2d430
-    .RegisterService = NULL,
b2d430
-    .pamHandler = NULL,
b2d430
-    .sudoHandler = NULL,
b2d430
-    .autofsHandler = NULL,
b2d430
-    .hostHandler = NULL,
b2d430
-    .getDomains = NULL,
b2d430
-    .getAccountInfo = NULL,
b2d430
-};
b2d430
-
b2d430
 static void sudo_dp_reconnect_init(struct sbus_connection *conn,
b2d430
                                    int status,
b2d430
                                    void *pvt)
b2d430
@@ -98,7 +87,7 @@ int sudo_process_init(TALLOC_CTX *mem_ctx,
b2d430
                            SSS_SUDO_SBUS_SERVICE_VERSION,
b2d430
                            &monitor_sudo_methods,
b2d430
                            "SUDO",
b2d430
-                           &sudo_dp_methods.vtable,
b2d430
+                           NULL,
b2d430
                            sss_connection_setup,
b2d430
                            &rctx);
b2d430
     if (ret != EOK) {
b2d430
diff --git a/src/tests/cwrap/Makefile.am b/src/tests/cwrap/Makefile.am
b2d430
index d8a49f1434cefc02bc7fce505d1b4e07fc74ec5f..3e40cba52e927730483b14cc7e56687b250de646 100644
b2d430
--- a/src/tests/cwrap/Makefile.am
b2d430
+++ b/src/tests/cwrap/Makefile.am
b2d430
@@ -49,7 +49,6 @@ SSSD_RESPONDER_OBJ = \
b2d430
     ../../../src/responder/common/data_provider/rdp_message.c \
b2d430
     ../../../src/responder/common/data_provider/rdp_client.c \
b2d430
     ../../../src/monitor/monitor_iface_generated.c \
b2d430
-    ../../../src/providers/data_provider_iface_generated.c \
b2d430
     ../../../src/providers/data_provider_req.c
b2d430
 
b2d430
 dist_noinst_DATA = \
b2d430
-- 
b2d430
2.4.11
b2d430