The branch, master has been updated via 6d3146f94b2 smbd: Modernize a few DEBUG statements via 9beb22a28eb smbd: Remove an unused function prototype via a22aeed277f smbd: Slightly simplify smbd_smb2_query_directory_send() via c00bec4ae80 smbd: Give source3/smbd/dir.c its own header file via 3046b8b502f smbd: Remove unused srv_put_dos_date2() via abf323d03e3 smbd: Use srv_put_dos_date2_ts() in reply_printqueue() via d5a0d6f7e9d smbd: Introduce srv_put_dos_date2_ts() via e3b4073d3c7 profile: Fix rusage reporting via 8c08b70503e profile: Fix a small memleak via 201d113d1e6 smbd: Remove "conn" from struct dptr_struct via ed6a659f5ed lib: Remove duplicate prototypes via 99c61fa8513 lib: Fix some whitespace from 4b7329f1582 ctdb-server: Drop unnecessary copy of destination address
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 6d3146f94b22a6c3df0effa738c893220f843f8a Author: Volker Lendecke <v...@samba.org> Date: Wed Nov 29 16:54:45 2023 +0100 smbd: Modernize a few DEBUG statements Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> Autobuild-User(master): Günther Deschner <g...@samba.org> Autobuild-Date(master): Tue Dec 19 17:07:04 UTC 2023 on atb-devel-224 commit 9beb22a28eb04199bcfff3e6c18385bd58da9c7e Author: Volker Lendecke <v...@samba.org> Date: Mon Nov 27 14:54:19 2023 +0100 smbd: Remove an unused function prototype Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> commit a22aeed277f84dfefaef6e8157843991bdda60dc Author: Volker Lendecke <v...@samba.org> Date: Mon Nov 27 10:51:45 2023 +0100 smbd: Slightly simplify smbd_smb2_query_directory_send() Avoid an if-statement when just assigning the result of the if-condition to a boolean. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> commit c00bec4ae8023c9e3cb890e989a3c98971926aee Author: Volker Lendecke <v...@samba.org> Date: Mon Nov 27 14:53:07 2023 +0100 smbd: Give source3/smbd/dir.c its own header file The prototypes were spread across 3 different files. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> commit 3046b8b502f41c00747c48f1ed7ce87dc92fe8fb Author: Volker Lendecke <v...@samba.org> Date: Sun Nov 26 16:20:44 2023 +0100 smbd: Remove unused srv_put_dos_date2() Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> commit abf323d03e3ed2b66e3d40b3add26feee2c351e4 Author: Volker Lendecke <v...@samba.org> Date: Sun Nov 26 16:17:07 2023 +0100 smbd: Use srv_put_dos_date2_ts() in reply_printqueue() srv_put_dos_date2_ts() uses convert_timespec_to_time_t() on the passed timespec, which for ts_nsec==0 returns just tv_sec. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> commit d5a0d6f7e9d8ee09facf248bb3394ea3b164ee5b Author: Volker Lendecke <v...@samba.org> Date: Sun Nov 26 15:17:45 2023 +0100 smbd: Introduce srv_put_dos_date2_ts() All but one uses of srv_put_dos_date2() converted from struct timespec. Put that into a new routine. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> commit e3b4073d3c7c50e63f2214912d091264c8c94035 Author: Volker Lendecke <v...@samba.org> Date: Fri Nov 24 16:27:42 2023 +0100 profile: Fix rusage reporting getrusage already gives accumulated values, so add them to the tdb record after smbprofile_stats_accumulate. Maybe we should not zero out our internal copy after writing the tdb, this would save a call to smbprofile_stats_accumulate() once a second. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> commit 8c08b70503e8168a864db2d612b247c853821fd0 Author: Volker Lendecke <v...@samba.org> Date: Mon Nov 20 15:53:48 2023 +0100 profile: Fix a small memleak Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> commit 201d113d1e6cc7e8fa072d69a64aace4c8e35f17 Author: Volker Lendecke <v...@samba.org> Date: Wed Nov 29 13:30:23 2023 +0100 smbd: Remove "conn" from struct dptr_struct We have it available behind "dir_hnd". Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> commit ed6a659f5ed2e1c9f46942316779b5c672657475 Author: Volker Lendecke <v...@samba.org> Date: Sun Nov 26 12:36:33 2023 +0100 lib: Remove duplicate prototypes They also exist in lib/util/time.h Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> commit 99c61fa85131af2d21d53dc0e949607833fb3a0c Author: Volker Lendecke <v...@samba.org> Date: Wed Nov 29 16:35:20 2023 +0100 lib: Fix some whitespace Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> ----------------------------------------------------------------------- Summary of changes: source3/include/proto.h | 6 +- source3/lib/system_smbd.c | 10 +-- source3/lib/time.c | 3 +- source3/modules/vfs_ceph_snapshots.c | 1 + source3/modules/vfs_fruit.c | 1 + source3/modules/vfs_shadow_copy.c | 1 + source3/modules/vfs_streams_depot.c | 1 + source3/modules/vfs_syncops.c | 1 + source3/profile/profile.c | 21 +++--- source3/smbd/close.c | 1 + source3/smbd/dir.c | 21 +++--- source3/smbd/dir.h | 89 +++++++++++++++++++++++ source3/smbd/file_access.c | 1 + source3/smbd/filename.c | 1 + source3/smbd/globals.h | 24 ------- source3/smbd/msdfs.c | 1 + source3/smbd/open.c | 1 + source3/smbd/proto.h | 47 ------------- source3/smbd/smb1_reply.c | 20 ++++-- source3/smbd/smb1_trans2.c | 6 +- source3/smbd/smb2_process.c | 1 + source3/smbd/smb2_query_directory.c | 10 +-- source3/smbd/smb2_reply.c | 1 + source3/smbd/smb2_trans2.c | 132 +++++++++++++++++------------------ source3/torture/cmd_vfs.c | 1 + 25 files changed, 219 insertions(+), 183 deletions(-) create mode 100644 source3/smbd/dir.h Changeset truncated at 500 lines: diff --git a/source3/include/proto.h b/source3/include/proto.h index 3ed35054708..5c1ba851287 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -229,9 +229,6 @@ void register_msg_pool_usage(TALLOC_CTX *mem_ctx, /* The following definitions come from lib/time.c */ -void push_dos_date(uint8_t *buf, int offset, time_t unixdate, int zone_offset); -void push_dos_date2(uint8_t *buf,int offset,time_t unixdate, int zone_offset); -void push_dos_date3(uint8_t *buf,int offset,time_t unixdate, int zone_offset); uint32_t convert_time_t_to_uint32_t(time_t t); time_t convert_uint32_t_to_time_t(uint32_t u); bool nt_time_is_zero(const NTTIME *nt); @@ -241,7 +238,7 @@ int set_server_zone_offset(time_t t); char *timeval_string(TALLOC_CTX *ctx, const struct timeval *tp, bool hires); char *current_timestring(TALLOC_CTX *ctx, bool hires); void srv_put_dos_date(char *buf,int offset,time_t unixdate); -void srv_put_dos_date2(char *buf,int offset, time_t unixdate); +void srv_put_dos_date2_ts(char *buf, int offset, struct timespec unix_ts); void srv_put_dos_date3(char *buf,int offset,time_t unixdate); void round_timespec(enum timestamp_set_resolution res, struct timespec *ts); void put_long_date_timespec(enum timestamp_set_resolution res, char *p, struct timespec ts); @@ -751,7 +748,6 @@ void unbecome_root(void); int find_service(TALLOC_CTX *ctx, const char *service_in, char **p_service_out); bool lp_allow_local_address( int snum, const struct tsocket_address *local_address); -NTSTATUS can_delete_directory_fsp(files_struct *fsp); bool change_to_root_user(void); bool become_authenticated_pipe_user(struct auth_session_info *session_info); bool unbecome_authenticated_pipe_user(void); diff --git a/source3/lib/system_smbd.c b/source3/lib/system_smbd.c index 73bffe05f7a..4a14744f724 100644 --- a/source3/lib/system_smbd.c +++ b/source3/lib/system_smbd.c @@ -1,4 +1,4 @@ -/* +/* Unix SMB/CIFS implementation. system call wrapper interface. Copyright (C) Andrew Tridgell 2002 @@ -8,19 +8,19 @@ it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 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, see <http://www.gnu.org/licenses/>. */ -/* +/* This file may assume linkage with smbd - for things like become_root() - etc. + etc. */ #include "includes.h" diff --git a/source3/lib/time.c b/source3/lib/time.c index ec93f6c5347..420b5f700d9 100644 --- a/source3/lib/time.c +++ b/source3/lib/time.c @@ -129,8 +129,9 @@ void srv_put_dos_date(char *buf,int offset,time_t unixdate) push_dos_date((uint8_t *)buf, offset, unixdate, server_zone_offset); } -void srv_put_dos_date2(char *buf,int offset, time_t unixdate) +void srv_put_dos_date2_ts(char *buf, int offset, struct timespec unix_ts) { + time_t unixdate = convert_timespec_to_time_t(unix_ts); push_dos_date2((uint8_t *)buf, offset, unixdate, server_zone_offset); } diff --git a/source3/modules/vfs_ceph_snapshots.c b/source3/modules/vfs_ceph_snapshots.c index f9ae977918c..98b8f5f6b5d 100644 --- a/source3/modules/vfs_ceph_snapshots.c +++ b/source3/modules/vfs_ceph_snapshots.c @@ -28,6 +28,7 @@ #include "smbd/smbd.h" #include "lib/util/tevent_ntstatus.h" #include "lib/util/smb_strtox.h" +#include "source3/smbd/dir.h" #undef DBGC_CLASS #define DBGC_CLASS DBGC_VFS diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c index b3dd6016ae3..4ab0f46a4e6 100644 --- a/source3/modules/vfs_fruit.c +++ b/source3/modules/vfs_fruit.c @@ -35,6 +35,7 @@ #include "hash_inode.h" #include "lib/adouble.h" #include "lib/util_macstreams.h" +#include "source3/smbd/dir.h" /* * Enhanced OS X and Netatalk compatibility diff --git a/source3/modules/vfs_shadow_copy.c b/source3/modules/vfs_shadow_copy.c index e87cefbb694..62b92918886 100644 --- a/source3/modules/vfs_shadow_copy.c +++ b/source3/modules/vfs_shadow_copy.c @@ -20,6 +20,7 @@ #include "includes.h" #include "smbd/smbd.h" #include "ntioctl.h" +#include "source3/smbd/dir.h" /* Please read the VFS module Samba-HowTo-Collection. diff --git a/source3/modules/vfs_streams_depot.c b/source3/modules/vfs_streams_depot.c index 2a46d5b12b2..f9701cc66ed 100644 --- a/source3/modules/vfs_streams_depot.c +++ b/source3/modules/vfs_streams_depot.c @@ -20,6 +20,7 @@ #include "includes.h" #include "smbd/smbd.h" #include "system/filesys.h" +#include "source3/smbd/dir.h" #undef DBGC_CLASS #define DBGC_CLASS DBGC_VFS diff --git a/source3/modules/vfs_syncops.c b/source3/modules/vfs_syncops.c index 94dcd7b846e..a0d98093296 100644 --- a/source3/modules/vfs_syncops.c +++ b/source3/modules/vfs_syncops.c @@ -22,6 +22,7 @@ #include "includes.h" #include "system/filesys.h" #include "smbd/smbd.h" +#include "source3/smbd/dir.h" /* diff --git a/source3/profile/profile.c b/source3/profile/profile.c index 6decb855282..0b02e36fcd0 100644 --- a/source3/profile/profile.c +++ b/source3/profile/profile.c @@ -137,6 +137,7 @@ bool profile_setup(struct messaging_context *msg_ctx, bool rdonly) NULL, db_name, 0, rdonly ? 0 : TDB_CLEAR_IF_FIRST|TDB_MUTEX_LOCKING, O_CREAT | (rdonly ? O_RDONLY : O_RDWR), 0644); + TALLOC_FREE(db_name); if (smbprofile_state.internal.db == NULL) { return false; } @@ -232,6 +233,16 @@ void smbprofile_dump(void) pid = tevent_cached_getpid(); + ret = tdb_chainlock(smbprofile_state.internal.db->tdb, key); + if (ret != 0) { + return; + } + + tdb_parse_record(smbprofile_state.internal.db->tdb, + key, profile_stats_parser, &s); + + smbprofile_stats_accumulate(profile_p, &s); + #ifdef HAVE_GETRUSAGE ret = getrusage(RUSAGE_SELF, &rself); if (ret != 0) { @@ -246,16 +257,6 @@ void smbprofile_dump(void) rself.ru_stime.tv_usec; #endif /* HAVE_GETRUSAGE */ - ret = tdb_chainlock(smbprofile_state.internal.db->tdb, key); - if (ret != 0) { - return; - } - - tdb_parse_record(smbprofile_state.internal.db->tdb, - key, profile_stats_parser, &s); - - smbprofile_stats_accumulate(profile_p, &s); - tdb_store(smbprofile_state.internal.db->tdb, key, (TDB_DATA) { .dptr = (uint8_t *)profile_p, diff --git a/source3/smbd/close.c b/source3/smbd/close.c index f1f5e41a43f..538435ca834 100644 --- a/source3/smbd/close.c +++ b/source3/smbd/close.c @@ -34,6 +34,7 @@ #include "messages.h" #include "../librpc/gen_ndr/open_files.h" #include "lib/util/tevent_ntstatus.h" +#include "source3/smbd/dir.h" /**************************************************************************** Run a file if it is a magic script. diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c index 8fb4476d4ab..800b7221cfd 100644 --- a/source3/smbd/dir.c +++ b/source3/smbd/dir.c @@ -29,6 +29,7 @@ #include "../librpc/gen_ndr/open_files.h" #include "lib/util/string_wrappers.h" #include "libcli/smb/reparse.h" +#include "source3/smbd/dir.h" /* This module implements directory related functions for Samba. @@ -54,7 +55,6 @@ struct smb_Dir { struct dptr_struct { struct dptr_struct *next, *prev; int dnum; - struct connection_struct *conn; struct smb_Dir *dir_hnd; char *wcard; uint32_t attr; @@ -174,7 +174,7 @@ void dptr_closecnum(connection_struct *conn) for(dptr = sconn->searches.dirptrs; dptr; dptr = next) { next = dptr->next; - if (dptr->conn == conn) { + if (dptr->dir_hnd->conn == conn) { /* * Need to make a copy, "dptr" will be gone * after close_file_free() returns @@ -236,7 +236,6 @@ NTSTATUS dptr_create(connection_struct *conn, return NT_STATUS_NO_MEMORY; } - dptr->conn = conn; dptr->dir_hnd = dir_hnd; dptr->wcard = talloc_strdup(dptr, wcard); if (!dptr->wcard) { @@ -319,7 +318,7 @@ void dptr_CloseDir(files_struct *fsp) if (fsp->dptr == NULL) { return; } - sconn = fsp->dptr->conn->sconn; + sconn = fsp->conn->sconn; /* * The destructor for the struct smb_Dir (fsp->dptr->dir_hnd) @@ -439,7 +438,8 @@ char *dptr_ReadDirName(TALLOC_CTX *ctx, struct dptr_struct *dptr) flags |= AT_SYMLINK_NOFOLLOW; } - ret = SMB_VFS_FSTATAT(dptr->conn, dir_fsp, &smb_fname_base, &st, flags); + ret = SMB_VFS_FSTATAT( + dir_hnd->conn, dir_fsp, &smb_fname_base, &st, flags); if (ret == 0) { return talloc_strdup(ctx, dptr->wcard); } @@ -456,16 +456,17 @@ char *dptr_ReadDirName(TALLOC_CTX *ctx, struct dptr_struct *dptr) * A scan will find the long version of a mangled name as * wildcard. */ - retry_scanning |= mangle_is_mangled(dptr->wcard, dptr->conn->params); + retry_scanning |= mangle_is_mangled(dptr->wcard, + dir_hnd->conn->params); /* * Also retry scanning if the client requested case * insensitive semantics and the file system does not provide * it. */ - retry_scanning |= - (!dir_hnd->case_sensitive && - (dptr->conn->fs_capabilities & FILE_CASE_SENSITIVE_SEARCH)); + retry_scanning |= (!dir_hnd->case_sensitive && + (dir_hnd->conn->fs_capabilities & + FILE_CASE_SENSITIVE_SEARCH)); if (retry_scanning) { char *found_name = NULL; @@ -522,8 +523,8 @@ bool smbd_dirptr_get_entry(TALLOC_CTX *ctx, struct smb_filename **_smb_fname, uint32_t *_mode) { - connection_struct *conn = dirptr->conn; struct smb_Dir *dir_hnd = dirptr->dir_hnd; + connection_struct *conn = dir_hnd->conn; struct smb_filename *dir_fname = dir_hnd->dir_smb_fname; bool posix = (dir_fname->flags & SMB_FILENAME_POSIX_PATH); const bool toplevel = ISDOT(dir_fname->base_name); diff --git a/source3/smbd/dir.h b/source3/smbd/dir.h new file mode 100644 index 00000000000..d520d1380b5 --- /dev/null +++ b/source3/smbd/dir.h @@ -0,0 +1,89 @@ +/* + * Unix SMB/Netbios implementation. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + */ + +#ifndef _SOURCE3_SMBD_DIR_H_ +#define _SOURCE3_SMBD_DIR_H_ + +#include "includes.h" + +struct smb_Dir; +struct dptr_struct; + +NTSTATUS can_delete_directory_fsp(files_struct *fsp); +struct files_struct *dir_hnd_fetch_fsp(struct smb_Dir *dir_hnd); +uint16_t dptr_attr(struct smbd_server_connection *sconn, int key); +bool dptr_case_sensitive(struct dptr_struct *dptr); +void dptr_closecnum(connection_struct *conn); +void dptr_CloseDir(files_struct *fsp); +NTSTATUS dptr_create(connection_struct *conn, + struct smb_request *req, + files_struct *fsp, + bool old_handle, + const char *wcard, + uint32_t attr, + struct dptr_struct **dptr_ret); +int dptr_dnum(struct dptr_struct *dptr); +files_struct *dptr_fetch_lanman2_fsp(struct smbd_server_connection *sconn, + int dptr_num); +unsigned int dptr_FileNumber(struct dptr_struct *dptr); +bool dptr_get_priv(struct dptr_struct *dptr); +bool dptr_has_wild(struct dptr_struct *dptr); +const char *dptr_path(struct smbd_server_connection *sconn, int key); +char *dptr_ReadDirName(TALLOC_CTX *ctx, struct dptr_struct *dptr); +void dptr_RewindDir(struct dptr_struct *dptr); +void dptr_set_priv(struct dptr_struct *dptr); +const char *dptr_wcard(struct smbd_server_connection *sconn, int key); +bool have_file_open_below(connection_struct *conn, + const struct smb_filename *name); +bool init_dptrs(struct smbd_server_connection *sconn); +bool is_visible_fsp(files_struct *fsp); +NTSTATUS OpenDir(TALLOC_CTX *mem_ctx, + connection_struct *conn, + const struct smb_filename *smb_dname, + const char *mask, + uint32_t attr, + struct smb_Dir **_dir_hnd); +NTSTATUS OpenDir_from_pathref(TALLOC_CTX *mem_ctx, + struct files_struct *dirfsp, + const char *mask, + uint32_t attr, + struct smb_Dir **_dir_hnd); +const char *ReadDirName(struct smb_Dir *dir_hnd, char **talloced); +void RewindDir(struct smb_Dir *dir_hnd); +bool smbd_dirptr_get_entry(TALLOC_CTX *ctx, + struct dptr_struct *dirptr, + const char *mask, + uint32_t dirtype, + bool dont_descend, + bool ask_sharemode, + bool get_dosmode, + bool (*match_fn)(TALLOC_CTX *ctx, + void *private_data, + const char *dname, + const char *mask, + char **_fname), + void *private_data, + char **_fname, + struct smb_filename **_smb_fname, + uint32_t *_mode); +char *smbd_dirptr_get_last_name_sent(struct dptr_struct *dirptr); +void smbd_dirptr_push_overflow(struct dptr_struct *dirptr, + char **_fname, + struct smb_filename **_smb_fname, + uint32_t mode); +void smbd_dirptr_set_last_name_sent(struct dptr_struct *dirptr, char **_fname); +#endif diff --git a/source3/smbd/file_access.c b/source3/smbd/file_access.c index 0ddad227ca1..9ad9173e49c 100644 --- a/source3/smbd/file_access.c +++ b/source3/smbd/file_access.c @@ -23,6 +23,7 @@ #include "../libcli/security/security.h" #include "../librpc/gen_ndr/ndr_security.h" #include "smbd/smbd.h" +#include "source3/smbd/dir.h" #undef DBGC_CLASS #define DBGC_CLASS DBGC_ACLS diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c index 5219fcd721e..2ec073b2154 100644 --- a/source3/smbd/filename.c +++ b/source3/smbd/filename.c @@ -30,6 +30,7 @@ #include "smbd/smbd.h" #include "smbd/globals.h" #include "libcli/smb/reparse.h" +#include "source3/smbd/dir.h" uint32_t ucf_flags_from_smb_request(struct smb_request *req) { diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h index 119483377c0..4928d1f4fb8 100644 --- a/source3/smbd/globals.h +++ b/source3/smbd/globals.h @@ -160,30 +160,6 @@ NTSTATUS smbd_do_qfsinfo(struct smbXsrv_connection *xconn, char **ppdata, int *ret_data_len); -bool smbd_dirptr_get_entry(TALLOC_CTX *ctx, - struct dptr_struct *dirptr, - const char *mask, - uint32_t dirtype, - bool dont_descend, - bool ask_sharemode, - bool get_dosmode, - bool (*match_fn)(TALLOC_CTX *ctx, - void *private_data, - const char *dname, - const char *mask, - char **_fname), - void *private_data, - char **_fname, - struct smb_filename **_smb_fname, - uint32_t *_mode); -void smbd_dirptr_push_overflow(struct dptr_struct *dirptr, - char **_fname, - struct smb_filename **_smb_fname, - uint32_t mode); -void smbd_dirptr_set_last_name_sent(struct dptr_struct *dirptr, - char **_fname); -char *smbd_dirptr_get_last_name_sent(struct dptr_struct *dirptr); - NTSTATUS smbd_dirptr_lanman2_entry(TALLOC_CTX *ctx, connection_struct *conn, struct dptr_struct *dirptr, diff --git a/source3/smbd/msdfs.c b/source3/smbd/msdfs.c index 2772ece19f1..4a322d129c6 100644 --- a/source3/smbd/msdfs.c +++ b/source3/smbd/msdfs.c @@ -35,6 +35,7 @@ #include "lib/tsocket/tsocket.h" #include "lib/global_contexts.h" #include "source3/lib/substitute.h" +#include "source3/smbd/dir.h" /********************************************************************** Parse a DFS pathname of the form(s) diff --git a/source3/smbd/open.c b/source3/smbd/open.c index 30d0d3ab728..d34d0354ff7 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -41,6 +41,7 @@ #include "locking/leases_db.h" #include "librpc/gen_ndr/ndr_leases_db.h" #include "lib/util/time_basic.h" +#include "source3/smbd/dir.h" extern const struct generic_mapping file_generic_mapping; diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h index 870e6417b2b..2875fcf562b 100644 --- a/source3/smbd/proto.h +++ b/source3/smbd/proto.h @@ -175,53 +175,6 @@ uint64_t get_dfree_info(connection_struct *conn, struct smb_filename *fname, uint64_t *bsize, uint64_t *dfree, uint64_t *dsize); void flush_dfree_cache(void); -/* The following definitions come from smbd/dir.c */ - -bool init_dptrs(struct smbd_server_connection *sconn); -const char *dptr_path(struct smbd_server_connection *sconn, int key); -const char *dptr_wcard(struct smbd_server_connection *sconn, int key); -uint16_t dptr_attr(struct smbd_server_connection *sconn, int key); -void dptr_closecnum(connection_struct *conn); -NTSTATUS dptr_create(connection_struct *conn, - struct smb_request *req, - files_struct *fsp, - bool old_handle, - const char *wcard, - uint32_t attr, - struct dptr_struct **dptr_ret); -void dptr_CloseDir(files_struct *fsp); -void dptr_RewindDir(struct dptr_struct *dptr); -unsigned int dptr_FileNumber(struct dptr_struct *dptr); -bool dptr_has_wild(struct dptr_struct *dptr); -int dptr_dnum(struct dptr_struct *dptr); -bool dptr_get_priv(struct dptr_struct *dptr); -void dptr_set_priv(struct dptr_struct *dptr); -bool dptr_case_sensitive(struct dptr_struct *dptr); -char *dptr_ReadDirName(TALLOC_CTX *ctx, struct dptr_struct *dptr); -struct smb_Dir; -struct files_struct *dir_hnd_fetch_fsp(struct smb_Dir *dir_hnd); -files_struct *dptr_fetch_lanman2_fsp(struct smbd_server_connection *sconn, - int dptr_num); -struct smb_Dir; -- Samba Shared Repository