#include "cifsproto.h"
#include "cifs_debug.h"
#include "dns_resolve.h"
#include "fs_context.h"
#include "dfs.h"
int dfs_parse_target_referral(const char *full_path, const struct dfs_info3_param *ref,
struct smb3_fs_context *ctx)
{ … }
static int get_session(struct cifs_mount_ctx *mnt_ctx, const char *full_path)
{ … }
static void add_root_smb_session(struct cifs_mount_ctx *mnt_ctx)
{ … }
static inline int parse_dfs_target(struct smb3_fs_context *ctx,
struct dfs_ref_walk *rw,
struct dfs_info3_param *tgt)
{ … }
static int set_ref_paths(struct cifs_mount_ctx *mnt_ctx,
struct dfs_info3_param *tgt,
struct dfs_ref_walk *rw)
{ … }
static int __dfs_referral_walk(struct cifs_mount_ctx *mnt_ctx,
struct dfs_ref_walk *rw)
{ … }
static int dfs_referral_walk(struct cifs_mount_ctx *mnt_ctx)
{ … }
static int __dfs_mount_share(struct cifs_mount_ctx *mnt_ctx)
{ … }
static int update_fs_context_dstaddr(struct smb3_fs_context *ctx)
{ … }
int dfs_mount_share(struct cifs_mount_ctx *mnt_ctx, bool *isdfs)
{ … }
static int update_server_fullpath(struct TCP_Server_Info *server, struct cifs_sb_info *cifs_sb,
const char *target)
{ … }
static int target_share_matches_server(struct TCP_Server_Info *server, char *share,
bool *target_match)
{ … }
static void __tree_connect_ipc(const unsigned int xid, char *tree,
struct cifs_sb_info *cifs_sb,
struct cifs_ses *ses)
{ … }
static void tree_connect_ipc(const unsigned int xid, char *tree,
struct cifs_sb_info *cifs_sb,
struct cifs_tcon *tcon)
{ … }
static int __tree_connect_dfs_target(const unsigned int xid, struct cifs_tcon *tcon,
struct cifs_sb_info *cifs_sb, char *tree, bool islink,
struct dfs_cache_tgt_list *tl)
{ … }
static int tree_connect_dfs_target(const unsigned int xid, struct cifs_tcon *tcon,
struct cifs_sb_info *cifs_sb, char *tree, bool islink,
struct dfs_cache_tgt_list *tl)
{ … }
int cifs_tree_connect(const unsigned int xid, struct cifs_tcon *tcon, const struct nls_table *nlsc)
{ … }