3 import "server_id.idl";
9 * The main server code should just work with
10 * 'struct smbXsrv_session' and never use
11 * smbXsrv_session0, smbXsrv_sessionU
12 * and smbXsrv_sessionB directly.
14 * We need to change the smbXsrv_session,
15 * we can just point it to smbXsrv_session1
16 * and could implement transparent mapping.
18 cpp_quote("#define smbXsrv_session smbXsrv_session0")
19 cpp_quote("#define smbXsrv_open smbXsrv_open0")
22 pointer_default(unique)
30 [charset(UTF8),string] char *local_address;
31 [charset(UTF8),string] char *remote_address;
32 [charset(UTF8),string] char *remote_name;
33 DATA_BLOB signing_key;
34 } smbXsrv_channel_global0;
37 [ignore] db_record *db_rec;
38 uint32 session_global_id;
39 hyper session_wire_id;
41 NTTIME expiration_time;
43 * auth_session is NULL until the
44 * session is valid for the first time.
46 auth_session_info *auth_session_info;
47 [range(1, 1024)] uint32 num_channels;
48 smbXsrv_channel_global0 channels[num_channels];
49 } smbXsrv_session_global0;
52 [case(0)] smbXsrv_session_global0 *info0;
53 [default] hyper *dummy;
54 } smbXsrv_session_globalU;
56 typedef [public] struct {
59 [switch_is(version)] smbXsrv_session_globalU info;
60 } smbXsrv_session_globalB;
62 void smbXsrv_session_global_decode(
63 [in] smbXsrv_session_globalB blob
67 [ignore] db_record *db_rec;
68 [ignore] smbXsrv_connection *connection;
70 [ref] smbXsrv_session_global0 *global;
73 //[ignore] gensec_security *gensec;
74 //[ignore] smbXsrv_tcon_table *tcon_table;
75 //[ignore] smbXsrv_open_table *open_table;
76 [ignore] smbd_smb2_session *smb2sess;
80 [case(0)] smbXsrv_session0 *info0;
81 [default] hyper *dummy;
84 typedef [public] struct {
86 [value(0)] uint32 reserved;
87 [switch_is(version)] smbXsrv_sessionU info;
90 void smbXsrv_session_decode(
91 [in] smbXsrv_sessionB blob
97 [ignore] db_record *db_rec;
99 uint32 open_global_id;
100 hyper open_persistent_id;
101 hyper open_volatile_id;
104 [charset(UTF8),string] char *open_path;
105 // TODO: DATA_BLOB backend_info;
106 file_id backend_file_id;
107 } smbXsrv_open_global0;
110 [case(0)] smbXsrv_open_global0 *info0;
111 [default] hyper *dummy;
112 } smbXsrv_open_globalU;
114 typedef [public] struct {
117 [switch_is(version)] smbXsrv_open_globalU info;
118 } smbXsrv_open_globalB;
120 void smbXsrv_open_global_decode(
121 [in] smbXsrv_open_globalB blob
125 [ignore] db_record *db_rec;
126 [ignore] smbXsrv_connection *connection;
128 [ref] smbXsrv_open_global0 *global;
129 [ignore] files_struct *fsp;
133 [case(0)] smbXsrv_open0 *info0;
134 [default] hyper *dummy;
137 typedef [public] struct {
139 [value(0)] uint32 reserved;
140 [switch_is(version)] smbXsrv_openU info;
143 void smbXsrv_open_decode(
144 [in] smbXsrv_openB blob