xref: /openbmc/linux/fs/smb/server/transport_ipc.h (revision 38c8a9a5)
1*38c8a9a5SSteve French /* SPDX-License-Identifier: GPL-2.0-or-later */
2*38c8a9a5SSteve French /*
3*38c8a9a5SSteve French  *   Copyright (C) 2018 Samsung Electronics Co., Ltd.
4*38c8a9a5SSteve French  */
5*38c8a9a5SSteve French 
6*38c8a9a5SSteve French #ifndef __KSMBD_TRANSPORT_IPC_H__
7*38c8a9a5SSteve French #define __KSMBD_TRANSPORT_IPC_H__
8*38c8a9a5SSteve French 
9*38c8a9a5SSteve French #include <linux/wait.h>
10*38c8a9a5SSteve French 
11*38c8a9a5SSteve French #define KSMBD_IPC_MAX_PAYLOAD	4096
12*38c8a9a5SSteve French 
13*38c8a9a5SSteve French struct ksmbd_login_response *
14*38c8a9a5SSteve French ksmbd_ipc_login_request(const char *account);
15*38c8a9a5SSteve French 
16*38c8a9a5SSteve French struct ksmbd_session;
17*38c8a9a5SSteve French struct ksmbd_share_config;
18*38c8a9a5SSteve French struct ksmbd_tree_connect;
19*38c8a9a5SSteve French struct sockaddr;
20*38c8a9a5SSteve French 
21*38c8a9a5SSteve French struct ksmbd_tree_connect_response *
22*38c8a9a5SSteve French ksmbd_ipc_tree_connect_request(struct ksmbd_session *sess,
23*38c8a9a5SSteve French 			       struct ksmbd_share_config *share,
24*38c8a9a5SSteve French 			       struct ksmbd_tree_connect *tree_conn,
25*38c8a9a5SSteve French 			       struct sockaddr *peer_addr);
26*38c8a9a5SSteve French int ksmbd_ipc_tree_disconnect_request(unsigned long long session_id,
27*38c8a9a5SSteve French 				      unsigned long long connect_id);
28*38c8a9a5SSteve French int ksmbd_ipc_logout_request(const char *account, int flags);
29*38c8a9a5SSteve French struct ksmbd_share_config_response *
30*38c8a9a5SSteve French ksmbd_ipc_share_config_request(const char *name);
31*38c8a9a5SSteve French struct ksmbd_spnego_authen_response *
32*38c8a9a5SSteve French ksmbd_ipc_spnego_authen_request(const char *spnego_blob, int blob_len);
33*38c8a9a5SSteve French int ksmbd_ipc_id_alloc(void);
34*38c8a9a5SSteve French void ksmbd_rpc_id_free(int handle);
35*38c8a9a5SSteve French struct ksmbd_rpc_command *ksmbd_rpc_open(struct ksmbd_session *sess, int handle);
36*38c8a9a5SSteve French struct ksmbd_rpc_command *ksmbd_rpc_close(struct ksmbd_session *sess, int handle);
37*38c8a9a5SSteve French struct ksmbd_rpc_command *ksmbd_rpc_write(struct ksmbd_session *sess, int handle,
38*38c8a9a5SSteve French 					  void *payload, size_t payload_sz);
39*38c8a9a5SSteve French struct ksmbd_rpc_command *ksmbd_rpc_read(struct ksmbd_session *sess, int handle);
40*38c8a9a5SSteve French struct ksmbd_rpc_command *ksmbd_rpc_ioctl(struct ksmbd_session *sess, int handle,
41*38c8a9a5SSteve French 					  void *payload, size_t payload_sz);
42*38c8a9a5SSteve French struct ksmbd_rpc_command *ksmbd_rpc_rap(struct ksmbd_session *sess, void *payload,
43*38c8a9a5SSteve French 					size_t payload_sz);
44*38c8a9a5SSteve French void ksmbd_ipc_release(void);
45*38c8a9a5SSteve French void ksmbd_ipc_soft_reset(void);
46*38c8a9a5SSteve French int ksmbd_ipc_init(void);
47*38c8a9a5SSteve French #endif /* __KSMBD_TRANSPORT_IPC_H__ */
48