diff options
author | Shirish Kalele <kalele@samba.org> | 2000-05-16 01:13:16 +0000 |
---|---|---|
committer | Shirish Kalele <kalele@samba.org> | 2000-05-16 01:13:16 +0000 |
commit | 651946153e41354769839fa6cbcfd36fd320efbe (patch) | |
tree | e0682dd8ef1f369e2a31846715ebc9cd2f17cc6e /source3/smbd/trans2.c | |
parent | 210f11d0e346db3c38d4d4f19cf77773537c9560 (diff) | |
download | samba-651946153e41354769839fa6cbcfd36fd320efbe.tar.gz samba-651946153e41354769839fa6cbcfd36fd320efbe.tar.bz2 samba-651946153e41354769839fa6cbcfd36fd320efbe.zip |
The new msdfs implementation that uses symlinks to point to other
servers. Very intuitive.
Removed the dfs map parsing code and tdb maintenance code (files
msdfs/parse_dfs_map.c & msdfs/msdfs_tdb.c), dfs map loading and unloading
calls (param/loadparm.c smbd/server.c).
Added code to display msdfs format symlinks as directories in a
transact2_findfirst/findnext. (smbd/trans2.c)
Modified msdfs/msdfs.c to use the msdfs symlinks to
create dfs referrals.
Changed msdfs/README to reflect new operability.
(This used to be commit 6803d2574fab9e5931786d5c9aa5dc5867bb5f05)
Diffstat (limited to 'source3/smbd/trans2.c')
-rw-r--r-- | source3/smbd/trans2.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index e0156c083d..18452158c8 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -405,8 +405,19 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn, pstrcat(pathreal,dname); if (conn->vfs_ops.stat(dos_to_unix(pathreal,False),&sbuf) != 0) { - DEBUG(5,("get_lanman2_dir_entry:Couldn't stat [%s] (%s)\n",pathreal,strerror(errno))); - continue; + /* Needed to show the msdfs symlinks as directories */ + if(!lp_host_msdfs() || !lp_msdfs_root(SNUM(conn)) + || !is_msdfs_volume(conn, pathreal)) + { + DEBUG(5,("get_lanman2_dir_entry:Couldn't stat [%s] (%s)\n", + pathreal,strerror(errno))); + continue; + } + else + { + DEBUG(5,("get_lanman2_dir_entry: Masquerading msdfs link %s as a directory\n", pathreal)); + sbuf.st_mode = (sbuf.st_mode & 0xFFF) | S_IFDIR; + } } mode = dos_mode(conn,pathreal,&sbuf); |