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 boolean8 signing_required;
48 boolean8 encryption_required;
49 DATA_BLOB signing_key;
50 DATA_BLOB encryption_key;
51 DATA_BLOB decryption_key;
52 DATA_BLOB application_key;
53 [range(1, 1024)] uint32 num_channels;
54 smbXsrv_channel_global0 channels[num_channels];
55 } smbXsrv_session_global0;
58 [case(0)] smbXsrv_session_global0 *info0;
59 [default] hyper *dummy;
60 } smbXsrv_session_globalU;
62 typedef [public] struct {
65 [switch_is(version)] smbXsrv_session_globalU info;
66 } smbXsrv_session_globalB;
68 void smbXsrv_session_global_decode(
69 [in] smbXsrv_session_globalB blob
73 [ignore] db_record *db_rec;
74 [ignore] smbXsrv_connection *connection;
76 [ref] smbXsrv_session_global0 *global;
79 //[ignore] gensec_security *gensec;
80 //[ignore] smbXsrv_tcon_table *tcon_table;
81 //[ignore] smbXsrv_open_table *open_table;
82 [ignore] smbd_smb2_session *smb2sess;
86 [case(0)] smbXsrv_session0 *info0;
87 [default] hyper *dummy;
90 typedef [public] struct {
92 [value(0)] uint32 reserved;
93 [switch_is(version)] smbXsrv_sessionU info;
96 void smbXsrv_session_decode(
97 [in] smbXsrv_sessionB blob
103 [ignore] db_record *db_rec;
105 uint32 open_global_id;
106 hyper open_persistent_id;
107 hyper open_volatile_id;
111 [charset(UTF8),string] char *open_path;
112 // TODO: DATA_BLOB backend_info;
113 file_id backend_file_id;
114 } smbXsrv_open_global0;
117 [case(0)] smbXsrv_open_global0 *info0;
118 [default] hyper *dummy;
119 } smbXsrv_open_globalU;
121 typedef [public] struct {
124 [switch_is(version)] smbXsrv_open_globalU info;
125 } smbXsrv_open_globalB;
127 void smbXsrv_open_global_decode(
128 [in] smbXsrv_open_globalB blob
132 [ignore] db_record *db_rec;
133 [ignore] smbXsrv_connection *connection;
135 [ref] smbXsrv_open_global0 *global;
136 [ignore] files_struct *fsp;
140 [case(0)] smbXsrv_open0 *info0;
141 [default] hyper *dummy;
144 typedef [public] struct {
146 [value(0)] uint32 reserved;
147 [switch_is(version)] smbXsrv_openU info;
150 void smbXsrv_open_decode(
151 [in] smbXsrv_openB blob