*/
#include "includes.h"
-#include "lib/util/dlinklist.h"
-#include "build.h"
+#include "../lib/util/dlinklist.h"
#include "ntvfs/ntvfs.h"
#include "param/param.h"
+#include "lib/util/samba_module.h"
/* the list of currently registered NTVFS backends, note that there
* can be more than one backend with the same name, as long as they
NTSTATUS ntvfs_init_connection(TALLOC_CTX *mem_ctx, struct share_config *scfg, enum ntvfs_type type,
enum protocol_types protocol,
uint64_t ntvfs_client_caps,
- struct event_context *ev, struct messaging_context *msg,
+ struct tevent_context *ev, struct imessaging_context *msg,
struct loadparm_context *lp_ctx,
struct server_id server_id, struct ntvfs_context **_ctx)
{
return NT_STATUS_OK;
}
+/*
+ adds the IPC$ share, needed for RPC calls
+ */
+static NTSTATUS ntvfs_add_ipc_share(struct loadparm_context *lp_ctx)
+{
+ struct loadparm_service *ipc;
+
+ if (lpcfg_service(lp_ctx, "IPC$")) {
+ /* it has already been defined in smb.conf or elsewhere */
+ return NT_STATUS_OK;
+ }
+
+ ipc = lpcfg_add_service(lp_ctx, NULL, "IPC$");
+ NT_STATUS_HAVE_NO_MEMORY(ipc);
+
+ lpcfg_do_service_parameter(lp_ctx, ipc, "comment", "IPC Service");
+ lpcfg_do_service_parameter(lp_ctx, ipc, "path", "/dev/null");
+ lpcfg_do_service_parameter(lp_ctx, ipc, "ntvfs handler", "default");
+ lpcfg_do_service_parameter(lp_ctx, ipc, "browseable", "No");
+ lpcfg_do_service_parameter(lp_ctx, ipc, "fstype", "IPC");
+
+ return NT_STATUS_OK;
+}
+
NTSTATUS ntvfs_init(struct loadparm_context *lp_ctx)
{
static bool initialized = false;
- extern NTSTATUS ntvfs_posix_init(void);
- extern NTSTATUS ntvfs_cifs_init(void);
- extern NTSTATUS ntvfs_nbench_init(void);
- extern NTSTATUS ntvfs_unixuid_init(void);
- extern NTSTATUS ntvfs_ipc_init(void);
- extern NTSTATUS pvfs_acl_nfs4_init(void);
- extern NTSTATUS pvfs_acl_xattr_init(void);
- extern NTSTATUS ntvfs_print_init(void);
- extern NTSTATUS ntvfs_simple_init(void);
- extern NTSTATUS ntvfs_cifs_posix_init(void);
- init_module_fn static_init[] = { STATIC_ntvfs_MODULES };
- init_module_fn *shared_init;
+#define _MODULE_PROTO(init) extern NTSTATUS init(void);
+ STATIC_ntvfs_MODULES_PROTO;
+ samba_module_init_fn static_init[] = { STATIC_ntvfs_MODULES };
+ samba_module_init_fn *shared_init;
if (initialized) return NT_STATUS_OK;
initialized = true;
- shared_init = load_samba_modules(NULL, lp_ctx, "ntvfs");
+ shared_init = samba_modules_load(NULL, "ntvfs");
- run_init_functions(static_init);
- run_init_functions(shared_init);
+ samba_module_init_fns_run(static_init);
+ samba_module_init_fns_run(shared_init);
talloc_free(shared_init);
+
+ ntvfs_add_ipc_share(lp_ctx);
return NT_STATUS_OK;
}