r14964: - move sidmap code from ntvfs_common to SAMDB
authorStefan Metzmacher <metze@samba.org>
Fri, 7 Apr 2006 13:15:46 +0000 (13:15 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:00:47 +0000 (14:00 -0500)
- make ntvfs_common a library
- create sys_notify library

metze
(This used to be commit a3e1d56cf7b688c515f5d6d4d43e0b24c2261d15)

18 files changed:
source4/dsdb/common/sidmap.c [moved from source4/ntvfs/common/sidmap.c with 94% similarity]
source4/dsdb/config.mk
source4/ntvfs/common/config.mk
source4/ntvfs/common/init.c [new file with mode: 0644]
source4/ntvfs/common/notify.c
source4/ntvfs/config.mk
source4/ntvfs/posix/config.mk
source4/ntvfs/posix/vfs_posix.c
source4/ntvfs/posix/vfs_posix.h
source4/ntvfs/sysdep/config.m4
source4/ntvfs/sysdep/config.mk
source4/ntvfs/sysdep/inotify.c
source4/ntvfs/sysdep/sys_notify.c
source4/ntvfs/sysdep/sys_notify.h
source4/ntvfs/unixuid/config.mk
source4/ntvfs/unixuid/vfs_unixuid.c
source4/rpc_server/lsa/dcesrv_lsa.c
source4/rpc_server/unixinfo/dcesrv_unixinfo.c

similarity index 94%
rename from source4/ntvfs/common/sidmap.c
rename to source4/dsdb/common/sidmap.c
index 6f3cd42b626d36e1df57028b5f27302e55f07794..ee314cddeca86f8569269635048db9ae544690a3 100644 (file)
@@ -49,7 +49,7 @@ struct sidmap_context {
 /*
   open a sidmap context - use talloc_free to close
 */
-struct sidmap_context *sidmap_open(TALLOC_CTX *mem_ctx)
+_PUBLIC_ struct sidmap_context *sidmap_open(TALLOC_CTX *mem_ctx)
 {
        struct sidmap_context *sidmap;
        sidmap = talloc(mem_ctx, struct sidmap_context);
@@ -124,8 +124,8 @@ static NTSTATUS sidmap_primary_domain_sid(struct sidmap_context *sidmap,
 /*
   map a sid to a unix uid
 */
-NTSTATUS sidmap_sid_to_unixuid(struct sidmap_context *sidmap, 
-                              struct dom_sid *sid, uid_t *uid)
+_PUBLIC_ NTSTATUS sidmap_sid_to_unixuid(struct sidmap_context *sidmap, 
+                                       struct dom_sid *sid, uid_t *uid)
 {
        const char *attrs[] = { "sAMAccountName", "unixID", 
                                "unixName", "sAMAccountType", NULL };
@@ -220,8 +220,8 @@ allocated_sid:
 /*
   map a sid to a unix gid
 */
-NTSTATUS sidmap_sid_to_unixgid(struct sidmap_context *sidmap,
-                              struct dom_sid *sid, gid_t *gid)
+_PUBLIC_ NTSTATUS sidmap_sid_to_unixgid(struct sidmap_context *sidmap,
+                                       struct dom_sid *sid, gid_t *gid)
 {
        const char *attrs[] = { "sAMAccountName", "unixID", 
                                "unixName", "sAMAccountType", NULL };
@@ -313,9 +313,9 @@ allocated_sid:
   map a unix uid to a dom_sid
   the returned sid is allocated in the supplied mem_ctx
 */
-NTSTATUS sidmap_uid_to_sid(struct sidmap_context *sidmap,
-                          TALLOC_CTX *mem_ctx,
-                          uid_t uid, struct dom_sid **sid)
+_PUBLIC_ NTSTATUS sidmap_uid_to_sid(struct sidmap_context *sidmap,
+                                   TALLOC_CTX *mem_ctx,
+                                   uid_t uid, struct dom_sid **sid)
 {
        const char *attrs[] = { "sAMAccountName", "objectSid", "sAMAccountType", NULL };
        int ret, i;
@@ -411,9 +411,9 @@ allocate_sid:
   map a unix gid to a dom_sid
   the returned sid is allocated in the supplied mem_ctx
 */
-NTSTATUS sidmap_gid_to_sid(struct sidmap_context *sidmap,
-                          TALLOC_CTX *mem_ctx,
-                          gid_t gid, struct dom_sid **sid)
+_PUBLIC_ NTSTATUS sidmap_gid_to_sid(struct sidmap_context *sidmap,
+                                   TALLOC_CTX *mem_ctx,
+                                   gid_t gid, struct dom_sid **sid)
 {
        const char *attrs[] = { "sAMAccountName", "objectSid", "sAMAccountType", NULL };
        int ret, i;
@@ -508,11 +508,11 @@ allocate_sid:
   check if a sid is in the range of auto-allocated SIDs from our primary domain,
   and if it is, then return the name and atype
 */
-NTSTATUS sidmap_allocated_sid_lookup(struct sidmap_context *sidmap, 
-                                    TALLOC_CTX *mem_ctx, 
-                                    const struct dom_sid *sid,
-                                    const char **name,
-                                    uint32_t *atype)
+_PUBLIC_ NTSTATUS sidmap_allocated_sid_lookup(struct sidmap_context *sidmap, 
+                                             TALLOC_CTX *mem_ctx, 
+                                             const struct dom_sid *sid,
+                                             const char **name,
+                                             uint32_t *atype)
 {
        NTSTATUS status;
        struct dom_sid *domain_sid;
index b0ab2cda62c27962322c234a4db229155c18db77..7537e5330068ed07150bf9e447cd6ac93ad2a22d 100644 (file)
@@ -12,6 +12,7 @@ OBJ_FILES = \
                samdb/samdb.o \
                samdb/samdb_privilege.o \
                samdb/cracknames.o \
+               common/sidmap.o \
                common/flag_mapping.o
 #
 # End SUBSYSTEM SAMDB
index 6eb9073b73fa87d98b0756d617e0f3baf78f90f3..96ddfb348b7027f687a06d2fd8992da8817437ec 100644 (file)
@@ -1,13 +1,15 @@
 ################################################
-# Start MODULE ntvfs_common
-[MODULE::ntvfs_common]
-SUBSYSTEM = ntvfs
+# Start LIBRARY ntvfs_common
+[LIBRARY::ntvfs_common]
 PRIVATE_PROTO_HEADER = proto.h
+VERSION = 0.0.1
+SO_VERSION = 0
+DESCRIPTION = Generic Code for use in NTVFS modules
 OBJ_FILES = \
+               init.o \
                brlock.o \
                opendb.o \
-               notify.o \
-               sidmap.o
-REQUIRED_SUBSYSTEMS = 
-# End MODULE ntvfs_common
+               notify.o
+REQUIRED_SUBSYSTEMS = NDR_OPENDB NDR_NOTIFY sys_notify
+# End LIBRARY ntvfs_common
 ################################################
diff --git a/source4/ntvfs/common/init.c b/source4/ntvfs/common/init.c
new file mode 100644 (file)
index 0000000..6cdc70d
--- /dev/null
@@ -0,0 +1,33 @@
+/* 
+   Unix SMB/CIFS implementation.
+
+   Copyright (C) Stefan Metzmacher 2006
+   
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+/*
+  this is the change notify database. It implements mechanisms for
+  storing current change notify waiters in a tdb, and checking if a
+  given event matches any of the stored notify waiiters.
+*/
+
+#include "includes.h"
+#include "ntvfs/sysdep/sys_notify.h"
+
+_PUBLIC_ NTSTATUS ntvfs_common_init(void)
+{
+       return sys_notify_init();
+}
index a70188070180d8cc1d436fb5f2a8d27ce5219c81..2d880dd5c4e71ea3c5cdbf75337d4047ba41f3d4 100644 (file)
@@ -115,7 +115,7 @@ struct notify_context *notify_init(TALLOC_CTX *mem_ctx, uint32_t server,
        messaging_register(notify->messaging_ctx, notify, 
                           MSG_PVFS_NOTIFY, notify_handler);
 
-       notify->sys_notify_ctx = sys_notify_init(snum, notify, ev);
+       notify->sys_notify_ctx = sys_notify_context_create(snum, notify, ev);
 
        return notify;
 }
index 2a35bd5cb34dfd9e5fff4652c680e72f93a60e02..d11e2c848d97af9f522e68958ba4b5e474384616 100644 (file)
@@ -48,12 +48,11 @@ OBJ_FILES = \
                ipc/vfs_ipc.o \
                ipc/ipc_rap.o \
                ipc/rap_server.o
-REQUIRED_SUBSYSTEMS = DCERPC_COMMON dcerpc_server
+REQUIRED_SUBSYSTEMS = dcerpc_server
 # End MODULE ntvfs_ipc
 ################################################
 
 
-
 ################################################
 # Start MODULE ntvfs_nbench
 [MODULE::ntvfs_nbench]
@@ -78,7 +77,7 @@ OBJ_FILES = \
                ntvfs_generic.o \
                ntvfs_interface.o \
                ntvfs_util.o
-REQUIRED_SUBSYSTEMS = NDR_OPENDB NDR_NOTIFY
+REQUIRED_SUBSYSTEMS =
 #
 # End SUBSYSTEM NTVFS
 ################################################
index c49fbc88b732f911697426930d8abe625a07542d..b9724cb9f2261bacdfbbd66bb86890ab51e38541 100644 (file)
@@ -32,6 +32,6 @@ OBJ_FILES = \
                pvfs_notify.o \
                xattr_system.o \
                xattr_tdb.o
-REQUIRED_SUBSYSTEMS = NDR_XATTR EXT_LIB_XATTR EXT_LIB_BLKID
+REQUIRED_SUBSYSTEMS = NDR_XATTR EXT_LIB_XATTR EXT_LIB_BLKID ntvfs_common
 # End MODULE ntvfs_posix
 ################################################
index dd8c3fe81f2acddfd4a71715c4f4adb721dde4d4..c4d4d11c04843158911ff15d8d9bca1f88ebd689 100644 (file)
@@ -332,11 +332,19 @@ NTSTATUS ntvfs_posix_init(void)
        ops.name = "default";
        ret = ntvfs_register(&ops);
 
+       if (!NT_STATUS_IS_OK(ret)) {
+               DEBUG(0,("Failed to register POSIX backend as '%s'!\n", ops.name));
+       }
+
        ops.name = "posix";
        ret = ntvfs_register(&ops);
 
        if (!NT_STATUS_IS_OK(ret)) {
-               DEBUG(0,("Failed to register POSIX backend!\n"));
+               DEBUG(0,("Failed to register POSIX backend as '%s'!\n", ops.name));
+       }
+
+       if (NT_STATUS_IS_OK(ret)) {
+               ret = ntvfs_common_init();
        }
 
        return ret;
index f34529bc0f1d75a6e201ecd22758e4b6b88f422e..335cfdf4e08b1babfa7bf520a7d96110f0f5ca63 100644 (file)
@@ -27,6 +27,7 @@
 #include "system/filesys.h"
 #include "ntvfs/ntvfs.h"
 #include "ntvfs/common/proto.h"
+#include "dsdb/samdb/samdb.h"
 
 /* this is the private structure for the posix vfs backend. It is used
    to hold per-connection (per tree connect) state information */
index f67a3bdace1433ac87523129a193930be6f3b14d..372e6b5bd5a39d2c86ae6979e1e87d489b70e513 100644 (file)
@@ -1,7 +1,7 @@
 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
 AC_CHECK_FUNC(inotify_init)
 
-SMB_ENABLE(ntvfs_inotify, NO)
+SMB_ENABLE(sys_notify_inotify, NO)
 if test x"$ac_cv_header_linux_inotify_h" = x"yes"; then
-    SMB_ENABLE(ntvfs_inotify, YES)
+    SMB_ENABLE(sys_notify_inotify, YES)
 fi
index 3bcebb5c0eea3954b0ab38d1246765dbd1c7d1cd..3b3681adef6520dad398ba7c0e0e11f0192a508c 100644 (file)
@@ -1,20 +1,22 @@
 ################################################
-# Start MODULE ntvfs_sys_notify
-[MODULE::ntvfs_sys_notify]
-SUBSYSTEM = ntvfs
+# Start MODULE sys_notify_inotify
+[MODULE::sys_notify_inotify]
+SUBSYSTEM = sys_notify
+INIT_FUNCTION = sys_notify_inotify_init
 OBJ_FILES = \
-               sys_notify.o
-# End MODULE ntvfs_sys_notify
+               inotify.o
+# End MODULE sys_notify_inotify
 ################################################
 
-
 ################################################
-# Start MODULE ntvfs_inotify
-[MODULE::ntvfs_inotify]
-SUBSYSTEM = ntvfs
-INIT_FUNCTION = ntvfs_inotify_init
+# Start SUBSYSTEM sys_notify
+[LIBRARY::sys_notify]
+PUBLIC_HEADERS = sys_notify.h
+VERSION = 0.0.1
+SO_VERSION = 0
+DESCRIPTION = File System Notify Abstraction Layer
 OBJ_FILES = \
-               inotify.o
-# End MODULE ntvfs_inotify
+               sys_notify.o
+REQUIRED_SUBSYSTEMS = 
+# End SUBSYSTEM sys_notify
 ################################################
-
index f86e3c1913081f5dc2c571f881a019939576814c..33c4ff49284e755b5e438ccf9125ed433c731d83 100644 (file)
@@ -405,7 +405,7 @@ static struct sys_notify_backend inotify = {
 /*
   initialialise the inotify module
  */
-NTSTATUS ntvfs_inotify_init(void)
+NTSTATUS sys_notify_inotify_init(void)
 {
        /* register ourselves as a system inotify module */
        return sys_notify_register(&inotify);
index 13c8f4359af7b68a2664e67701938c08b8c65e47..a74312f32b56c60eb34c4ecad0d0a4268dfb31a4 100644 (file)
@@ -28,6 +28,7 @@
 #include "ntvfs/sysdep/sys_notify.h"
 #include "lib/events/events.h"
 #include "dlinklist.h"
+#include "build.h"
 
 /* list of registered backends */
 static struct sys_notify_backend *backends;
@@ -36,9 +37,9 @@ static uint32_t num_backends;
 /*
   initialise a system change notify backend
 */
-struct sys_notify_context *sys_notify_init(int snum,
-                                          TALLOC_CTX *mem_ctx, 
-                                          struct event_context *ev)
+struct sys_notify_context *sys_notify_context_create(int snum,
+                                                    TALLOC_CTX *mem_ctx, 
+                                                    struct event_context *ev)
 {
        struct sys_notify_context *ctx;
        const char *bname;
@@ -115,3 +116,23 @@ NTSTATUS sys_notify_register(struct sys_notify_backend *backend)
        num_backends++;
        return NT_STATUS_OK;
 }
+
+NTSTATUS sys_notify_init(void)
+{
+       static BOOL initialized = False;
+
+       init_module_fn static_init[] = STATIC_sys_notify_MODULES;
+       init_module_fn *shared_init;
+
+       if (initialized) return NT_STATUS_OK;
+       initialized = True;
+
+       shared_init = load_samba_modules(NULL, "sys_notify");
+
+       run_init_functions(static_init);
+       run_init_functions(shared_init);
+
+       talloc_free(shared_init);
+       
+       return NT_STATUS_OK;
+}
index 9cb01a1db478a4339169ccb9b78aa49024880725..6f8e91efec358c3a1293930205820f9ac6016629 100644 (file)
@@ -26,7 +26,7 @@ typedef void (*sys_notify_callback_t)(struct sys_notify_context *,
                                      void *, struct notify_event *ev);
 
 typedef NTSTATUS (*notify_watch_t)(struct sys_notify_context *ctx, 
-                                  struct notify_event *e,
+                                  struct notify_entry *e,
                                   sys_notify_callback_t callback, void *private, 
                                   void **handle);
 
@@ -43,9 +43,10 @@ struct sys_notify_backend {
 };
 
 NTSTATUS sys_notify_register(struct sys_notify_backend *backend);
-struct sys_notify_context *sys_notify_init(int snum,
-                                          TALLOC_CTX *mem_ctx, 
-                                          struct event_context *ev);
+struct sys_notify_context *sys_notify_context_create(int snum,
+                                                    TALLOC_CTX *mem_ctx, 
+                                                    struct event_context *ev);
 NTSTATUS sys_notify_watch(struct sys_notify_context *ctx, struct notify_entry *e,
                          sys_notify_callback_t callback, void *private, 
                          void **handle);
+NTSTATUS sys_notify_init(void);
index 3fdeb79e3d9da8005262adb932fdcfca61c36d29..f8af68eb9bde762f9260f6622f1b5b46269b5ed1 100644 (file)
@@ -5,5 +5,6 @@ INIT_FUNCTION = ntvfs_unixuid_init
 SUBSYSTEM = ntvfs
 OBJ_FILES = \
                vfs_unixuid.o
+REQUIRED_SUBSYSTEMS = SAMDB
 # End MODULE ntvfs_unixuid
 ################################################
index 1bfaf85e70823c35fd8c5f28e7360d039401ae14..061b8fbe55c3b6cac135d1f9dcbdf446d38c2061 100644 (file)
@@ -26,7 +26,7 @@
 #include "system/passwd.h"
 #include "auth/auth.h"
 #include "ntvfs/ntvfs.h"
-#include "ntvfs/common/proto.h"
+#include "dsdb/samdb/samdb.h"
 
 struct unixuid_private {
        struct sidmap_context *sidmap;
index 1c2d48330fae86495e9f7cb5645707fbafb272c9..9d3b55c9e6cdea3dbae8cf850fbd4d7168c0248d 100644 (file)
 #include "libcli/security/security.h"
 #include "libcli/auth/libcli_auth.h"
 #include "librpc/gen_ndr/ndr_security.h"
-#include "ntvfs/ntvfs.h"
 #include "passdb/secrets.h"
 #include "db_wrap.h"
-#include "ntvfs/common/proto.h"
 
 /*
   this type allows us to distinguish handle types
index 57562e940f7efac4bb855002793e5275ca13f2e6..d186d7e34668c2aac4e6bab4eb6a00dd88a61cec 100644 (file)
@@ -25,8 +25,7 @@
 #include "rpc_server/common/common.h"
 #include "librpc/gen_ndr/ndr_unixinfo.h"
 #include "lib/events/events.h"
-#include "ntvfs/ntvfs.h"
-#include "ntvfs/common/proto.h"
+#include "dsdb/samdb/samdb.h"
 
 #include <sys/types.h>
 #include <pwd.h>