import "server_id.idl";
import "security.idl";
import "auth.idl";
+import "file_id.idl";
/*
* The main server code should just work with
* and could implement transparent mapping.
*/
cpp_quote("#define smbXsrv_session smbXsrv_session0")
+cpp_quote("#define smbXsrv_open smbXsrv_open0")
[
pointer_default(unique)
* session is valid for the first time.
*/
auth_session_info *auth_session_info;
+ boolean8 signing_required;
+ boolean8 encryption_required;
+ DATA_BLOB signing_key;
+ DATA_BLOB encryption_key;
+ DATA_BLOB decryption_key;
+ DATA_BLOB application_key;
[range(1, 1024)] uint32 num_channels;
smbXsrv_channel_global0 channels[num_channels];
} smbXsrv_session_global0;
void smbXsrv_session_decode(
[in] smbXsrv_sessionB blob
);
+
+ /* open files */
+
+ typedef struct {
+ [ignore] db_record *db_rec;
+ server_id server_id;
+ uint32 open_global_id;
+ hyper open_persistent_id;
+ hyper open_volatile_id;
+ boolean8 durable;
+ NTTIME open_time;
+ [charset(UTF8),string] char *open_path;
+ // TODO: DATA_BLOB backend_info;
+ file_id backend_file_id;
+ } smbXsrv_open_global0;
+
+ typedef union {
+ [case(0)] smbXsrv_open_global0 *info0;
+ [default] hyper *dummy;
+ } smbXsrv_open_globalU;
+
+ typedef [public] struct {
+ uint32 version;
+ uint32 seqnum;
+ [switch_is(version)] smbXsrv_open_globalU info;
+ } smbXsrv_open_globalB;
+
+ void smbXsrv_open_global_decode(
+ [in] smbXsrv_open_globalB blob
+ );
+
+ typedef struct {
+ [ignore] db_record *db_rec;
+ [ignore] smbXsrv_connection *connection;
+ uint32 local_id;
+ [ref] smbXsrv_open_global0 *global;
+ [ignore] files_struct *fsp;
+ } smbXsrv_open0;
+
+ typedef union {
+ [case(0)] smbXsrv_open0 *info0;
+ [default] hyper *dummy;
+ } smbXsrv_openU;
+
+ typedef [public] struct {
+ uint32 version;
+ [value(0)] uint32 reserved;
+ [switch_is(version)] smbXsrv_openU info;
+ } smbXsrv_openB;
+
+ void smbXsrv_open_decode(
+ [in] smbXsrv_openB blob
+ );
+
}