mirror of
https://github.com/samba-team/samba.git
synced 2025-02-02 09:47:23 +03:00
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)
This commit is contained in:
parent
5b1a495e96
commit
2e894625e7
@ -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,7 +124,7 @@ 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,
|
||||
_PUBLIC_ NTSTATUS sidmap_sid_to_unixuid(struct sidmap_context *sidmap,
|
||||
struct dom_sid *sid, uid_t *uid)
|
||||
{
|
||||
const char *attrs[] = { "sAMAccountName", "unixID",
|
||||
@ -220,7 +220,7 @@ allocated_sid:
|
||||
/*
|
||||
map a sid to a unix gid
|
||||
*/
|
||||
NTSTATUS sidmap_sid_to_unixgid(struct sidmap_context *sidmap,
|
||||
_PUBLIC_ NTSTATUS sidmap_sid_to_unixgid(struct sidmap_context *sidmap,
|
||||
struct dom_sid *sid, gid_t *gid)
|
||||
{
|
||||
const char *attrs[] = { "sAMAccountName", "unixID",
|
||||
@ -313,7 +313,7 @@ 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,
|
||||
_PUBLIC_ NTSTATUS sidmap_uid_to_sid(struct sidmap_context *sidmap,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
uid_t uid, struct dom_sid **sid)
|
||||
{
|
||||
@ -411,7 +411,7 @@ 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,
|
||||
_PUBLIC_ NTSTATUS sidmap_gid_to_sid(struct sidmap_context *sidmap,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
gid_t gid, struct dom_sid **sid)
|
||||
{
|
||||
@ -508,7 +508,7 @@ 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,
|
||||
_PUBLIC_ NTSTATUS sidmap_allocated_sid_lookup(struct sidmap_context *sidmap,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
const struct dom_sid *sid,
|
||||
const char **name,
|
@ -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
|
||||
|
@ -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
|
||||
################################################
|
||||
|
33
source4/ntvfs/common/init.c
Normal file
33
source4/ntvfs/common/init.c
Normal file
@ -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();
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
################################################
|
||||
|
@ -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
|
||||
################################################
|
||||
|
@ -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;
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -1,20 +1,22 @@
|
||||
################################################
|
||||
# Start MODULE ntvfs_sys_notify
|
||||
[MODULE::ntvfs_sys_notify]
|
||||
SUBSYSTEM = ntvfs
|
||||
OBJ_FILES = \
|
||||
sys_notify.o
|
||||
# End MODULE ntvfs_sys_notify
|
||||
################################################
|
||||
|
||||
|
||||
################################################
|
||||
# Start MODULE ntvfs_inotify
|
||||
[MODULE::ntvfs_inotify]
|
||||
SUBSYSTEM = ntvfs
|
||||
INIT_FUNCTION = ntvfs_inotify_init
|
||||
# Start MODULE sys_notify_inotify
|
||||
[MODULE::sys_notify_inotify]
|
||||
SUBSYSTEM = sys_notify
|
||||
INIT_FUNCTION = sys_notify_inotify_init
|
||||
OBJ_FILES = \
|
||||
inotify.o
|
||||
# End MODULE ntvfs_inotify
|
||||
# End MODULE sys_notify_inotify
|
||||
################################################
|
||||
|
||||
################################################
|
||||
# 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 = \
|
||||
sys_notify.o
|
||||
REQUIRED_SUBSYSTEMS =
|
||||
# End SUBSYSTEM sys_notify
|
||||
################################################
|
||||
|
@ -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);
|
||||
|
@ -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,7 +37,7 @@ static uint32_t num_backends;
|
||||
/*
|
||||
initialise a system change notify backend
|
||||
*/
|
||||
struct sys_notify_context *sys_notify_init(int snum,
|
||||
struct sys_notify_context *sys_notify_context_create(int snum,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
struct event_context *ev)
|
||||
{
|
||||
@ -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;
|
||||
}
|
||||
|
@ -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,
|
||||
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);
|
||||
|
@ -5,5 +5,6 @@ INIT_FUNCTION = ntvfs_unixuid_init
|
||||
SUBSYSTEM = ntvfs
|
||||
OBJ_FILES = \
|
||||
vfs_unixuid.o
|
||||
REQUIRED_SUBSYSTEMS = SAMDB
|
||||
# End MODULE ntvfs_unixuid
|
||||
################################################
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user