summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorStephen Gallagher <sgallagh@redhat.com>2009-01-12 15:02:43 -0500
committerSimo Sorce <idra@samba.org>2009-01-12 16:03:18 -0500
commita62a56ec87ab81d2264900716972ec22bfb7b9d9 (patch)
treec46c1d38e4ba230af1478f2c0a68ad3dbcccff47 /server
parentc22c50c2fb9bc962fd11a2c9924481485faae093 (diff)
downloadsssd-a62a56ec87ab81d2264900716972ec22bfb7b9d9.tar.gz
sssd-a62a56ec87ab81d2264900716972ec22bfb7b9d9.tar.xz
sssd-a62a56ec87ab81d2264900716972ec22bfb7b9d9.zip
Add placeholders for new configuration reload methods. The monitor will be able to call the reloadConfig DBUS method on any or all of its children to force them to reread their configuration from the confdb.
Diffstat (limited to 'server')
-rw-r--r--server/nss/nsssrv.c12
-rw-r--r--server/providers/data_provider.c12
-rw-r--r--server/sbus_interfaces.h1
3 files changed, 25 insertions, 0 deletions
diff --git a/server/nss/nsssrv.c b/server/nss/nsssrv.c
index 4180a460b..0c7bf0604 100644
--- a/server/nss/nsssrv.c
+++ b/server/nss/nsssrv.c
@@ -45,12 +45,14 @@
static int service_identity(DBusMessage *message, void *data, DBusMessage **r);
static int service_pong(DBusMessage *message, void *data, DBusMessage **r);
+static int service_reload(DBusMessage *message, void *data, DBusMessage **r);
static int nss_init_domains(struct nss_ctx *nctx);
static int _domain_comparator(void *key1, void *key2);
struct sbus_method nss_sbus_methods[] = {
{SERVICE_METHOD_IDENTITY, service_identity},
{SERVICE_METHOD_PING, service_pong},
+ {SERVICE_METHOD_RELOAD, service_reload},
{NULL, NULL}
};
@@ -262,6 +264,16 @@ static int service_pong(DBusMessage *message, void *data, DBusMessage **r)
return EOK;
}
+static int service_reload(DBusMessage *message, void *data, DBusMessage **r) {
+ /* Monitor calls this function when we need to reload
+ * our configuration information. Perform whatever steps
+ * are needed to update the configuration objects.
+ */
+
+ /* Send an empty reply to acknowledge receipt */
+ return service_pong(message, data, r);
+}
+
static int nss_sbus_init(struct nss_ctx *nctx)
{
struct service_sbus_ctx *ss_ctx;
diff --git a/server/providers/data_provider.c b/server/providers/data_provider.c
index e0de4dbbe..393e03e7a 100644
--- a/server/providers/data_provider.c
+++ b/server/providers/data_provider.c
@@ -77,10 +77,12 @@ static int dp_frontend_destructor(void *ctx);
static int service_identity(DBusMessage *message, void *data, DBusMessage **r);
static int service_pong(DBusMessage *message, void *data, DBusMessage **r);
+static int service_reload(DBusMessage *message, void *data, DBusMessage **r);
struct sbus_method mon_sbus_methods[] = {
{ SERVICE_METHOD_IDENTITY, service_identity },
{ SERVICE_METHOD_PING, service_pong },
+ { SERVICE_METHOD_RELOAD, service_reload },
{ NULL, NULL }
};
@@ -142,6 +144,16 @@ static int service_pong(DBusMessage *message, void *data, DBusMessage **r)
return EOK;
}
+static int service_reload(DBusMessage *message, void *data, DBusMessage **r) {
+ /* Monitor calls this function when we need to reload
+ * our configuration information. Perform whatever steps
+ * are needed to update the configuration objects.
+ */
+
+ /* Send an empty reply to acknowledge receipt */
+ return service_pong(message, data, r);
+}
+
static int dp_monitor_init(struct dp_ctx *dpctx)
{
struct service_sbus_ctx *ss_ctx;
diff --git a/server/sbus_interfaces.h b/server/sbus_interfaces.h
index 58a857499..0a3fe7a80 100644
--- a/server/sbus_interfaces.h
+++ b/server/sbus_interfaces.h
@@ -37,6 +37,7 @@
/* Service Methods */
#define SERVICE_METHOD_IDENTITY "getIdentity"
#define SERVICE_METHOD_PING "ping"
+#define SERVICE_METHOD_RELOAD "reloadConfig"
#define SSSD_SERVICE_PIPE "private/sbus-monitor"