diff options
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/blocking.c | 6 | ||||
-rw-r--r-- | source3/smbd/dir.c | 4 | ||||
-rw-r--r-- | source3/smbd/globals.c | 16 | ||||
-rw-r--r-- | source3/smbd/oplock.c | 4 | ||||
-rw-r--r-- | source3/smbd/proto.h | 14 | ||||
-rw-r--r-- | source3/smbd/statcache.c | 4 | ||||
-rw-r--r-- | source3/smbd/uid.c | 6 |
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(); |