summaryrefslogtreecommitdiff
path: root/source3/smbd/msg_idmap.c
diff options
context:
space:
mode:
authorGregor Beck <gbeck@sernet.de>2011-10-06 15:26:32 +0200
committerMichael Adam <obnox@samba.org>2011-10-12 22:45:53 +0200
commit6648d906525cf27228145c8723e3dbef67dd77bd (patch)
treec0f1996dde8dab25d7037e78c45d0b98da3fb656 /source3/smbd/msg_idmap.c
parentda85f5a43ea427ce49f9eb5abc1aef3c3491b059 (diff)
downloadsamba-6648d906525cf27228145c8723e3dbef67dd77bd.tar.gz
samba-6648d906525cf27228145c8723e3dbef67dd77bd.tar.bz2
samba-6648d906525cf27228145c8723e3dbef67dd77bd.zip
s3:smbcontrol: let smbd pass the idmap msg to its children for convenience
Signed-off-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'source3/smbd/msg_idmap.c')
-rw-r--r--source3/smbd/msg_idmap.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/source3/smbd/msg_idmap.c b/source3/smbd/msg_idmap.c
index cb8fbcd42f..757cac0e3f 100644
--- a/source3/smbd/msg_idmap.c
+++ b/source3/smbd/msg_idmap.c
@@ -129,13 +129,46 @@ static void id_cache_kill(struct messaging_context *msg_ctx,
return;
}
+ if (am_parent) {
+ messaging_send_to_children(msg_ctx, msg_type, data);
+ }
+
if (id_in_use(validated_users, &id)) {
exit_server_cleanly(msg);
}
id_cache_delete_from_cache(&id);
}
-void id_cache_register_kill_msg(struct messaging_context *ctx)
+static void id_cache_flush(struct messaging_context *ctx,
+ void* data,
+ uint32_t msg_type,
+ struct server_id srv_id,
+ DATA_BLOB* msg_data)
+{
+ id_cache_flush_message(ctx, data, msg_type, srv_id, msg_data);
+
+ if (am_parent) {
+ messaging_send_to_children(ctx, msg_type, msg_data);
+ }
+}
+
+static void id_cache_delete(struct messaging_context *ctx,
+ void* data,
+ uint32_t msg_type,
+ struct server_id srv_id,
+ DATA_BLOB* msg_data)
+{
+ id_cache_delete_message(ctx, data, msg_type, srv_id, msg_data);
+
+ if (am_parent) {
+ messaging_send_to_children(ctx, msg_type, msg_data);
+ }
+}
+
+
+void msg_idmap_register_msg(struct messaging_context *ctx)
{
+ messaging_register(ctx, NULL, ID_CACHE_FLUSH, id_cache_flush);
+ messaging_register(ctx, NULL, ID_CACHE_DELETE, id_cache_delete);
messaging_register(ctx, NULL, ID_CACHE_KILL, id_cache_kill);
}