summaryrefslogtreecommitdiffstats
path: root/server/nss
diff options
context:
space:
mode:
Diffstat (limited to 'server/nss')
-rw-r--r--server/nss/nsssrv.c33
-rw-r--r--server/nss/nsssrv_dp.c23
2 files changed, 45 insertions, 11 deletions
diff --git a/server/nss/nsssrv.c b/server/nss/nsssrv.c
index 93a897a23..1c42c3c51 100644
--- a/server/nss/nsssrv.c
+++ b/server/nss/nsssrv.c
@@ -36,10 +36,11 @@
#include "confdb/confdb.h"
#include "dbus/dbus.h"
#include "sbus/sssd_dbus.h"
-#include "sbus_interfaces.h"
#include "util/btreemap.h"
-#include "util/service_helpers.h"
#include "providers/data_provider.h"
+#include "monitor/monitor_sbus.h"
+#include "monitor/monitor_interfaces.h"
+#include "sbus/sbus_client.h"
#define SSS_NSS_PIPE_NAME "nss"
@@ -276,14 +277,32 @@ static int service_reload(DBusMessage *message, void *data, DBusMessage **r) {
static int nss_sbus_init(struct nss_ctx *nctx)
{
+ int ret;
+ char *sbus_address;
struct service_sbus_ctx *ss_ctx;
+ struct sbus_method_ctx *sm_ctx;
/* Set up SBUS connection to the monitor */
- ss_ctx = sssd_service_sbus_init(nctx, nctx->ev, nctx->cdb,
- nss_sbus_methods, NULL);
- if (ss_ctx == NULL) {
- DEBUG(0, ("Could not initialize D-BUS.\n"));
- return ENOMEM;
+ ret = monitor_get_sbus_address(nctx, nctx->cdb, &sbus_address);
+ if (ret != EOK) {
+ DEBUG(0, ("Could not locate monitor address.\n"));
+ return ret;
+ }
+
+ ret = monitor_init_sbus_methods(nctx, nss_sbus_methods, &sm_ctx);
+ if (ret != EOK) {
+ DEBUG(0, ("Could not initialize SBUS methods.\n"));
+ return ret;
+ }
+
+ ret = sbus_client_init(nctx, nctx->ev,
+ sbus_address, sm_ctx,
+ NULL /* Private Data */,
+ NULL /* Destructor */,
+ &ss_ctx);
+ if (ret != EOK) {
+ DEBUG(0, ("Failed to connect to monitor services.\n"));
+ return ret;
}
/* Set up NSS-specific listeners */
diff --git a/server/nss/nsssrv_dp.c b/server/nss/nsssrv_dp.c
index 567f8e9b7..d6aba556c 100644
--- a/server/nss/nsssrv_dp.c
+++ b/server/nss/nsssrv_dp.c
@@ -24,6 +24,8 @@
#include "util/util.h"
#include "nss/nsssrv.h"
#include "providers/data_provider.h"
+#include "sbus/sbus_client.h"
+#include "providers/dp_sbus.h"
struct nss_dp_req {
nss_dp_callback_t callback;
@@ -310,6 +312,8 @@ static void nss_dp_conn_reconnect(struct nss_dp_pvt_ctx *pvt)
struct nss_ctx *nctx;
struct timed_event *te;
struct timeval tv;
+ struct sbus_method_ctx *sm_ctx;
+ char *sbus_address;
time_t now;
int ret;
@@ -327,9 +331,21 @@ static void nss_dp_conn_reconnect(struct nss_dp_pvt_ctx *pvt)
nctx = pvt->nctx;
- ret = dp_sbus_cli_init(nctx, nctx->ev, nctx->cdb,
- pvt->methods, pvt,
- nss_dp_conn_destructor,
+ ret = dp_get_sbus_address(nctx, nctx->cdb, &sbus_address);
+ if (ret != EOK) {
+ DEBUG(0, ("Could not locate data provider address.\n"));
+ return;
+ }
+
+ ret = dp_init_sbus_methods(nctx, pvt->methods, &sm_ctx);
+ if (ret != EOK) {
+ DEBUG(0, ("Could not initialize SBUS methods.\n"));
+ return;
+ }
+
+ ret = sbus_client_init(nctx, nctx->ev,
+ sbus_address, sm_ctx,
+ pvt, nss_dp_conn_destructor,
&nctx->dp_ctx);
if (ret != EOK) {
DEBUG(4, ("Failed to reconnect [%d(%s)]!\n", ret, strerror(ret)));
@@ -379,7 +395,6 @@ int nss_dp_conn_destructor(void *data)
int nss_dp_init(struct nss_ctx *nctx)
{
struct nss_dp_pvt_ctx *pvt;
- int ret;
pvt = talloc_zero(nctx, struct nss_dp_pvt_ctx);
if (!pvt) return ENOMEM;