summaryrefslogtreecommitdiffstats
path: root/server/providers
diff options
context:
space:
mode:
authorStephen Gallagher <sgallagh@redhat.com>2009-06-24 08:18:15 -0400
committerSimo Sorce <ssorce@redhat.com>2009-07-20 10:50:56 -0400
commit9bec63f4b9cb97c1ff1cf2ff448446ab1e59734d (patch)
tree239b25bd2f7fa264126afcb5b6d7785716e05b45 /server/providers
parent7ac82a61aff588daaa1c217889b3055538380e47 (diff)
downloadsssd-9bec63f4b9cb97c1ff1cf2ff448446ab1e59734d.tar.gz
sssd-9bec63f4b9cb97c1ff1cf2ff448446ab1e59734d.tar.xz
sssd-9bec63f4b9cb97c1ff1cf2ff448446ab1e59734d.zip
Implement resInit for monitor, NSS, PAM, DP and the backends
Diffstat (limited to 'server/providers')
-rw-r--r--server/providers/data_provider.c19
-rw-r--r--server/providers/data_provider_be.c19
2 files changed, 38 insertions, 0 deletions
diff --git a/server/providers/data_provider.c b/server/providers/data_provider.c
index 677f677fd..4dc9dfaa8 100644
--- a/server/providers/data_provider.c
+++ b/server/providers/data_provider.c
@@ -31,6 +31,11 @@
#include <errno.h>
#include <security/pam_modules.h>
+/* Needed for res_init() */
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+
#include "popt.h"
#include "util/util.h"
#include "confdb/confdb.h"
@@ -83,11 +88,13 @@ static int dp_frontend_destructor(void *ctx);
static int service_identity(DBusMessage *message, struct sbus_conn_ctx *sconn);
static int service_pong(DBusMessage *message, struct sbus_conn_ctx *sconn);
static int service_reload(DBusMessage *message, struct sbus_conn_ctx *sconn);
+static int service_res_init(DBusMessage *message, struct sbus_conn_ctx *sconn);
struct sbus_method mon_sbus_methods[] = {
{ SERVICE_METHOD_IDENTITY, service_identity },
{ SERVICE_METHOD_PING, service_pong },
{ SERVICE_METHOD_RELOAD, service_reload },
+ { SERVICE_METHOD_RES_INIT, service_res_init },
{ NULL, NULL }
};
@@ -174,6 +181,18 @@ static int service_reload(DBusMessage *message, struct sbus_conn_ctx *sconn)
return service_pong(message, sconn);
}
+static int service_res_init(DBusMessage *message, struct sbus_conn_ctx *sconn)
+{
+ int ret;
+
+ ret = res_init();
+ if(ret != 0) {
+ return EIO;
+ }
+
+ return service_pong(message, sconn);
+}
+
static int dp_monitor_init(struct dp_ctx *dpctx)
{
int ret;
diff --git a/server/providers/data_provider_be.c b/server/providers/data_provider_be.c
index 24254d15f..5cd599467 100644
--- a/server/providers/data_provider_be.c
+++ b/server/providers/data_provider_be.c
@@ -34,6 +34,11 @@
#include <security/pam_appl.h>
#include <security/pam_modules.h>
+/* Needed for res_init() */
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+
#include "popt.h"
#include "util/util.h"
#include "confdb/confdb.h"
@@ -51,10 +56,12 @@
static int service_identity(DBusMessage *message, struct sbus_conn_ctx *sconn);
static int service_pong(DBusMessage *message, struct sbus_conn_ctx *sconn);
+static int service_res_init(DBusMessage *message, struct sbus_conn_ctx *sconn);
struct sbus_method mon_sbus_methods[] = {
{ SERVICE_METHOD_IDENTITY, service_identity },
{ SERVICE_METHOD_PING, service_pong },
+ { SERVICE_METHOD_RES_INIT, service_res_init },
{ NULL, NULL }
};
@@ -137,6 +144,18 @@ static int service_pong(DBusMessage *message, struct sbus_conn_ctx *sconn)
return EOK;
}
+static int service_res_init(DBusMessage *message, struct sbus_conn_ctx *sconn)
+{
+ int ret;
+
+ ret = res_init();
+ if(ret != 0) {
+ return EIO;
+ }
+
+ return service_pong(message, sconn);
+}
+
static int be_identity(DBusMessage *message, struct sbus_conn_ctx *sconn)
{
dbus_uint16_t version = DATA_PROVIDER_VERSION;