0001
0002
0003
0004
0005
0006 #ifndef __TREE_CONNECT_MANAGEMENT_H__
0007 #define __TREE_CONNECT_MANAGEMENT_H__
0008
0009 #include <linux/hashtable.h>
0010
0011 #include "../ksmbd_netlink.h"
0012
0013 struct ksmbd_share_config;
0014 struct ksmbd_user;
0015 struct ksmbd_conn;
0016
0017 struct ksmbd_tree_connect {
0018 int id;
0019
0020 unsigned int flags;
0021 struct ksmbd_share_config *share_conf;
0022 struct ksmbd_user *user;
0023
0024 struct list_head list;
0025
0026 int maximal_access;
0027 bool posix_extensions;
0028 };
0029
0030 struct ksmbd_tree_conn_status {
0031 unsigned int ret;
0032 struct ksmbd_tree_connect *tree_conn;
0033 };
0034
0035 static inline int test_tree_conn_flag(struct ksmbd_tree_connect *tree_conn,
0036 int flag)
0037 {
0038 return tree_conn->flags & flag;
0039 }
0040
0041 struct ksmbd_session;
0042
0043 struct ksmbd_tree_conn_status
0044 ksmbd_tree_conn_connect(struct ksmbd_conn *conn, struct ksmbd_session *sess,
0045 char *share_name);
0046
0047 int ksmbd_tree_conn_disconnect(struct ksmbd_session *sess,
0048 struct ksmbd_tree_connect *tree_conn);
0049
0050 struct ksmbd_tree_connect *ksmbd_tree_conn_lookup(struct ksmbd_session *sess,
0051 unsigned int id);
0052
0053 struct ksmbd_share_config *ksmbd_tree_conn_share(struct ksmbd_session *sess,
0054 unsigned int id);
0055
0056 int ksmbd_tree_conn_session_logoff(struct ksmbd_session *sess);
0057
0058 #endif