summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/blocking.c6
-rw-r--r--source3/smbd/dir.c4
-rw-r--r--source3/smbd/globals.c16
-rw-r--r--source3/smbd/oplock.c4
-rw-r--r--source3/smbd/proto.h14
-rw-r--r--source3/smbd/statcache.c4
-rw-r--r--source3/smbd/uid.c6
7 files changed, 42 insertions, 12 deletions
diff --git a/source3/smbd/blocking.c b/source3/smbd/blocking.c
index fd77e3d15b..d9c1fb2d3b 100644
--- a/source3/smbd/blocking.c
+++ b/source3/smbd/blocking.c
@@ -574,9 +574,9 @@ static bool blocking_lock_record_process(struct blocking_lock_record *blr)
Called when a file is closed.
*****************************************************************************/
-void cancel_pending_lock_requests_by_fid(files_struct *fsp,
- struct byte_range_lock *br_lck,
- enum file_close_type close_type)
+void smbd_cancel_pending_lock_requests_by_fid(files_struct *fsp,
+ struct byte_range_lock *br_lck,
+ enum file_close_type close_type)
{
struct smbd_server_connection *sconn = fsp->conn->sconn;
struct blocking_lock_record *blr, *blr_cancelled, *next = NULL;
diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c
index c547cd2afa..fda7c34c57 100644
--- a/source3/smbd/dir.c
+++ b/source3/smbd/dir.c
@@ -1625,8 +1625,8 @@ bool SearchDir(struct smb_Dir *dirp, const char *name, long *poffset)
Is this directory empty ?
*****************************************************************/
-NTSTATUS can_delete_directory(struct connection_struct *conn,
- const char *dirname)
+NTSTATUS smbd_can_delete_directory(struct connection_struct *conn,
+ const char *dirname)
{
NTSTATUS status = NT_STATUS_OK;
long dirpos = 0;
diff --git a/source3/smbd/globals.c b/source3/smbd/globals.c
index b3cf0bd7d2..2736fa69d0 100644
--- a/source3/smbd/globals.c
+++ b/source3/smbd/globals.c
@@ -20,6 +20,7 @@
#include "includes.h"
#include "smbd/smbd.h"
#include "smbd/globals.h"
+#include "lib/smbd_shim.h"
#include "memcache.h"
#include "messages.h"
#include "tdb_compat.h"
@@ -145,9 +146,24 @@ struct memcache *smbd_memcache(void)
return smbd_memcache_ctx;
}
+static const struct smbd_shim smbd_shim_fns =
+{
+ .cancel_pending_lock_requests_by_fid = smbd_cancel_pending_lock_requests_by_fid,
+ .send_stat_cache_delete_message = smbd_send_stat_cache_delete_message,
+ .can_delete_directory = smbd_can_delete_directory,
+ .change_to_root_user = smbd_change_to_root_user,
+
+ .contend_level2_oplocks_begin = smbd_contend_level2_oplocks_begin,
+ .contend_level2_oplocks_end = smbd_contend_level2_oplocks_end,
+
+ .become_root = smbd_become_root,
+ .unbecome_root = smbd_unbecome_root
+};
void smbd_init_globals(void)
{
+ set_smbd_shim(&smbd_shim_fns);
+
ZERO_STRUCT(conn_ctx_stack);
ZERO_STRUCT(sec_ctx_stack);
diff --git a/source3/smbd/oplock.c b/source3/smbd/oplock.c
index 56481e9700..284b0321aa 100644
--- a/source3/smbd/oplock.c
+++ b/source3/smbd/oplock.c
@@ -849,7 +849,7 @@ static void contend_level2_oplocks_begin_default(files_struct *fsp,
TALLOC_FREE(lck);
}
-void contend_level2_oplocks_begin(files_struct *fsp,
+void smbd_contend_level2_oplocks_begin(files_struct *fsp,
enum level2_contention_type type)
{
if (koplocks && koplocks->ops->contend_level2_oplocks_begin) {
@@ -860,7 +860,7 @@ void contend_level2_oplocks_begin(files_struct *fsp,
contend_level2_oplocks_begin_default(fsp, type);
}
-void contend_level2_oplocks_end(files_struct *fsp,
+void smbd_contend_level2_oplocks_end(files_struct *fsp,
enum level2_contention_type type)
{
/* Only kernel oplocks implement this so far */
diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
index 6e515278b4..adeaf68899 100644
--- a/source3/smbd/proto.h
+++ b/source3/smbd/proto.h
@@ -110,6 +110,9 @@ bool push_blocking_lock_request( struct byte_range_lock *br_lck,
uint64_t offset,
uint64_t count,
uint64_t blocking_smblctx);
+void smbd_cancel_pending_lock_requests_by_fid(files_struct *fsp,
+ struct byte_range_lock *br_lck,
+ enum file_close_type close_type);
void cancel_pending_lock_requests_by_fid(files_struct *fsp,
struct byte_range_lock *br_lck,
enum file_close_type close_type);
@@ -236,6 +239,8 @@ void DirCacheAdd(struct smb_Dir *dirp, const char *name, long offset);
bool SearchDir(struct smb_Dir *dirp, const char *name, long *poffset);
NTSTATUS can_delete_directory(struct connection_struct *conn,
const char *dirname);
+NTSTATUS smbd_can_delete_directory(struct connection_struct *conn,
+ const char *dirname);
/* The following definitions come from smbd/dmapi.c */
@@ -670,6 +675,10 @@ void contend_level2_oplocks_begin(files_struct *fsp,
enum level2_contention_type type);
void contend_level2_oplocks_end(files_struct *fsp,
enum level2_contention_type type);
+void smbd_contend_level2_oplocks_begin(files_struct *fsp,
+ enum level2_contention_type type);
+void smbd_contend_level2_oplocks_end(files_struct *fsp,
+ enum level2_contention_type type);
void share_mode_entry_to_message(char *msg, const struct share_mode_entry *e);
void message_to_share_mode_entry(struct share_mode_entry *e, char *msg);
bool init_oplocks(struct messaging_context *msg_ctx);
@@ -1046,6 +1055,8 @@ bool stat_cache_lookup(connection_struct *conn,
char **pp_dirpath,
char **pp_start,
SMB_STRUCT_STAT *pst);
+void smbd_send_stat_cache_delete_message(struct messaging_context *msg_ctx,
+ const char *name);
void send_stat_cache_delete_message(struct messaging_context *msg_ctx,
const char *name);
void stat_cache_delete(const char *name);
@@ -1106,10 +1117,13 @@ bool change_to_user(connection_struct *conn, uint16 vuid);
bool change_to_user_by_session(connection_struct *conn,
const struct auth_serversupplied_info *session_info);
bool change_to_root_user(void);
+bool smbd_change_to_root_user(void);
bool become_authenticated_pipe_user(struct auth_serversupplied_info *session_info);
bool unbecome_authenticated_pipe_user(void);
void become_root(void);
void unbecome_root(void);
+void smbd_become_root(void);
+void smbd_unbecome_root(void);
bool become_user(connection_struct *conn, uint16 vuid);
bool become_user_by_session(connection_struct *conn,
const struct auth_serversupplied_info *session_info);
diff --git a/source3/smbd/statcache.c b/source3/smbd/statcache.c
index b0904c9ff7..963b7c4bc1 100644
--- a/source3/smbd/statcache.c
+++ b/source3/smbd/statcache.c
@@ -340,8 +340,8 @@ bool stat_cache_lookup(connection_struct *conn,
Tell all smbd's to delete an entry.
**************************************************************************/
-void send_stat_cache_delete_message(struct messaging_context *msg_ctx,
- const char *name)
+void smbd_send_stat_cache_delete_message(struct messaging_context *msg_ctx,
+ const char *name)
{
#ifdef DEVELOPER
message_send_all(msg_ctx,
diff --git a/source3/smbd/uid.c b/source3/smbd/uid.c
index fb05a6ce98..285b158a19 100644
--- a/source3/smbd/uid.c
+++ b/source3/smbd/uid.c
@@ -345,7 +345,7 @@ bool change_to_user_by_session(connection_struct *conn,
but modify the current_user entries.
****************************************************************************/
-bool change_to_root_user(void)
+bool smbd_change_to_root_user(void)
{
set_root_sec_ctx();
@@ -441,7 +441,7 @@ static void pop_conn_ctx(void)
restores the connection context.
****************************************************************************/
-void become_root(void)
+void smbd_become_root(void)
{
/*
* no good way to handle push_sec_ctx() failing without changing
@@ -456,7 +456,7 @@ void become_root(void)
/* Unbecome the root user */
-void unbecome_root(void)
+void smbd_unbecome_root(void)
{
pop_sec_ctx();
pop_conn_ctx();