summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2006-04-07 13:15:46 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:00:47 -0500
commit2e894625e7c951b5ee66670124b4bef82a8129d9 (patch)
treef0020b62a5e8258bb9b3bb999ec2f9a63c6ec305 /source4
parent5b1a495e96be6f92df3ba2d30095d879041f757e (diff)
downloadsamba-2e894625e7c951b5ee66670124b4bef82a8129d9.tar.gz
samba-2e894625e7c951b5ee66670124b4bef82a8129d9.tar.bz2
samba-2e894625e7c951b5ee66670124b4bef82a8129d9.zip
r14964: - move sidmap code from ntvfs_common to SAMDB
- make ntvfs_common a library - create sys_notify library metze (This used to be commit a3e1d56cf7b688c515f5d6d4d43e0b24c2261d15)
Diffstat (limited to 'source4')
-rw-r--r--source4/dsdb/common/sidmap.c (renamed from source4/ntvfs/common/sidmap.c)32
-rw-r--r--source4/dsdb/config.mk1
-rw-r--r--source4/ntvfs/common/config.mk16
-rw-r--r--source4/ntvfs/common/init.c33
-rw-r--r--source4/ntvfs/common/notify.c2
-rw-r--r--source4/ntvfs/config.mk5
-rw-r--r--source4/ntvfs/posix/config.mk2
-rw-r--r--source4/ntvfs/posix/vfs_posix.c10
-rw-r--r--source4/ntvfs/posix/vfs_posix.h1
-rw-r--r--source4/ntvfs/sysdep/config.m44
-rw-r--r--source4/ntvfs/sysdep/config.mk28
-rw-r--r--source4/ntvfs/sysdep/inotify.c2
-rw-r--r--source4/ntvfs/sysdep/sys_notify.c27
-rw-r--r--source4/ntvfs/sysdep/sys_notify.h9
-rw-r--r--source4/ntvfs/unixuid/config.mk1
-rw-r--r--source4/ntvfs/unixuid/vfs_unixuid.c2
-rw-r--r--source4/rpc_server/lsa/dcesrv_lsa.c2
-rw-r--r--source4/rpc_server/unixinfo/dcesrv_unixinfo.c3
18 files changed, 123 insertions, 57 deletions
diff --git a/source4/ntvfs/common/sidmap.c b/source4/dsdb/common/sidmap.c
index 6f3cd42b62..ee314cddec 100644
--- a/source4/ntvfs/common/sidmap.c
+++ b/source4/dsdb/common/sidmap.c
@@ -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;
diff --git a/source4/dsdb/config.mk b/source4/dsdb/config.mk
index b0ab2cda62..7537e53300 100644
--- a/source4/dsdb/config.mk
+++ b/source4/dsdb/config.mk
@@ -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
diff --git a/source4/ntvfs/common/config.mk b/source4/ntvfs/common/config.mk
index 6eb9073b73..96ddfb348b 100644
--- a/source4/ntvfs/common/config.mk
+++ b/source4/ntvfs/common/config.mk
@@ -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
index 0000000000..6cdc70dc50
--- /dev/null
+++ b/source4/ntvfs/common/init.c
@@ -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();
+}
diff --git a/source4/ntvfs/common/notify.c b/source4/ntvfs/common/notify.c
index a701880701..2d880dd5c4 100644
--- a/source4/ntvfs/common/notify.c
+++ b/source4/ntvfs/common/notify.c
@@ -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;
}
diff --git a/source4/ntvfs/config.mk b/source4/ntvfs/config.mk
index 2a35bd5cb3..d11e2c848d 100644
--- a/source4/ntvfs/config.mk
+++ b/source4/ntvfs/config.mk
@@ -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
################################################
diff --git a/source4/ntvfs/posix/config.mk b/source4/ntvfs/posix/config.mk
index c49fbc88b7..b9724cb9f2 100644
--- a/source4/ntvfs/posix/config.mk
+++ b/source4/ntvfs/posix/config.mk
@@ -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
################################################
diff --git a/source4/ntvfs/posix/vfs_posix.c b/source4/ntvfs/posix/vfs_posix.c
index dd8c3fe81f..c4d4d11c04 100644
--- a/source4/ntvfs/posix/vfs_posix.c
+++ b/source4/ntvfs/posix/vfs_posix.c
@@ -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;
diff --git a/source4/ntvfs/posix/vfs_posix.h b/source4/ntvfs/posix/vfs_posix.h
index f34529bc0f..335cfdf4e0 100644
--- a/source4/ntvfs/posix/vfs_posix.h
+++ b/source4/ntvfs/posix/vfs_posix.h
@@ -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 */
diff --git a/source4/ntvfs/sysdep/config.m4 b/source4/ntvfs/sysdep/config.m4
index f67a3bdace..372e6b5bd5 100644
--- a/source4/ntvfs/sysdep/config.m4
+++ b/source4/ntvfs/sysdep/config.m4
@@ -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
diff --git a/source4/ntvfs/sysdep/config.mk b/source4/ntvfs/sysdep/config.mk
index 3bcebb5c0e..3b3681adef 100644
--- a/source4/ntvfs/sysdep/config.mk
+++ b/source4/ntvfs/sysdep/config.mk
@@ -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
################################################
-
diff --git a/source4/ntvfs/sysdep/inotify.c b/source4/ntvfs/sysdep/inotify.c
index f86e3c1913..33c4ff4928 100644
--- a/source4/ntvfs/sysdep/inotify.c
+++ b/source4/ntvfs/sysdep/inotify.c
@@ -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);
diff --git a/source4/ntvfs/sysdep/sys_notify.c b/source4/ntvfs/sysdep/sys_notify.c
index 13c8f4359a..a74312f32b 100644
--- a/source4/ntvfs/sysdep/sys_notify.c
+++ b/source4/ntvfs/sysdep/sys_notify.c
@@ -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;
+}
diff --git a/source4/ntvfs/sysdep/sys_notify.h b/source4/ntvfs/sysdep/sys_notify.h
index 9cb01a1db4..6f8e91efec 100644
--- a/source4/ntvfs/sysdep/sys_notify.h
+++ b/source4/ntvfs/sysdep/sys_notify.h
@@ -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);
diff --git a/source4/ntvfs/unixuid/config.mk b/source4/ntvfs/unixuid/config.mk
index 3fdeb79e3d..f8af68eb9b 100644
--- a/source4/ntvfs/unixuid/config.mk
+++ b/source4/ntvfs/unixuid/config.mk
@@ -5,5 +5,6 @@ INIT_FUNCTION = ntvfs_unixuid_init
SUBSYSTEM = ntvfs
OBJ_FILES = \
vfs_unixuid.o
+REQUIRED_SUBSYSTEMS = SAMDB
# End MODULE ntvfs_unixuid
################################################
diff --git a/source4/ntvfs/unixuid/vfs_unixuid.c b/source4/ntvfs/unixuid/vfs_unixuid.c
index 1bfaf85e70..061b8fbe55 100644
--- a/source4/ntvfs/unixuid/vfs_unixuid.c
+++ b/source4/ntvfs/unixuid/vfs_unixuid.c
@@ -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;
diff --git a/source4/rpc_server/lsa/dcesrv_lsa.c b/source4/rpc_server/lsa/dcesrv_lsa.c
index 1c2d48330f..9d3b55c9e6 100644
--- a/source4/rpc_server/lsa/dcesrv_lsa.c
+++ b/source4/rpc_server/lsa/dcesrv_lsa.c
@@ -30,10 +30,8 @@
#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
diff --git a/source4/rpc_server/unixinfo/dcesrv_unixinfo.c b/source4/rpc_server/unixinfo/dcesrv_unixinfo.c
index 57562e940f..d186d7e346 100644
--- a/source4/rpc_server/unixinfo/dcesrv_unixinfo.c
+++ b/source4/rpc_server/unixinfo/dcesrv_unixinfo.c
@@ -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>