diff options
Diffstat (limited to 'source3/librpc/idl/open_files.idl')
-rw-r--r-- | source3/librpc/idl/open_files.idl | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/source3/librpc/idl/open_files.idl b/source3/librpc/idl/open_files.idl new file mode 100644 index 0000000..49bc09d --- /dev/null +++ b/source3/librpc/idl/open_files.idl @@ -0,0 +1,124 @@ +#include "idl_types.h" + +import "server_id.idl"; +import "security.idl"; +import "file_id.idl"; +import "smb2_lease_struct.idl"; +import "misc.idl"; + +[ + pointer_default(unique) +] + +interface open_files +{ + typedef [public] struct { + server_id pid; + hyper op_mid; + uint16 op_type; + GUID client_guid; + smb2_lease_key lease_key; + uint32 access_mask; + uint32 share_access; + uint32 private_options; + timeval time; + udlong share_file_id; + uint32 uid; + uint16 flags; + uint32 name_hash; + + /* + * In-memory flag indicating a non-existing pid. We don't want + * to store this share_mode_entry on disk. + */ + [skip] boolean8 stale; + } share_mode_entry; + + typedef [public] struct { + uint32 name_hash; + security_token *delete_nt_token; + security_unix_token *delete_token; + } delete_token; + + typedef [public,bitmap16bit] bitmap { + SHARE_MODE_SHARE_DELETE = 0x100, + SHARE_MODE_SHARE_WRITE = 0x080, + SHARE_MODE_SHARE_READ = 0x040, + SHARE_MODE_ACCESS_DELETE = 0x020, + SHARE_MODE_ACCESS_WRITE = 0x010, + SHARE_MODE_ACCESS_READ = 0x008, + SHARE_MODE_LEASE_HANDLE = 0x004, + SHARE_MODE_LEASE_WRITE = 0x002, + SHARE_MODE_LEASE_READ = 0x001 + } share_mode_flags; + + typedef [public] struct { + hyper unique_content_epoch; + share_mode_flags flags; + [string,charset(UTF8)] char *servicepath; + [string,charset(UTF8)] char *base_name; + [string,charset(UTF8)] char *stream_name; + uint32 num_delete_tokens; + [size_is(num_delete_tokens)] delete_token delete_tokens[]; + NTTIME old_write_time; + NTTIME changed_write_time; + [skip] boolean8 fresh; + [skip] boolean8 modified; + [ignore] file_id id; /* In memory key used to lookup cache. */ + } share_mode_data; + + /* these are 0x30 (48) characters */ + const string VFS_DEFAULT_DURABLE_COOKIE_MAGIC = + "VFS_DEFAULT_DURABLE_COOKIE_MAGIC "; + const uint32 VFS_DEFAULT_DURABLE_COOKIE_VERSION = 0; + + /* this corresponds to struct stat_ex (SMB_STRUCT_STAT) */ + typedef struct { + hyper st_ex_dev; + hyper st_ex_ino; + hyper st_ex_mode; + hyper st_ex_nlink; + hyper st_ex_uid; + hyper st_ex_gid; + hyper st_ex_rdev; + hyper st_ex_size; + timespec st_ex_atime; + timespec st_ex_mtime; + timespec st_ex_ctime; + timespec st_ex_btime; + hyper st_ex_blksize; + hyper st_ex_blocks; + uint32 st_ex_flags; + uint32 st_ex_iflags; + } vfs_default_durable_stat; + + typedef [public] struct { + [value(VFS_DEFAULT_DURABLE_COOKIE_MAGIC),charset(DOS)] uint8 magic[0x30]; + [value(VFS_DEFAULT_DURABLE_COOKIE_VERSION)] uint32 version; + boolean8 allow_reconnect; + file_id id; + [string,charset(UTF8)] char *servicepath; + [string,charset(UTF8)] char *base_name; + hyper initial_allocation_size; + hyper position_information; + boolean8 update_write_time_triggered; + boolean8 update_write_time_on_close; + boolean8 write_time_forced; + NTTIME close_write_time; + vfs_default_durable_stat stat_info; + } vfs_default_durable_cookie; + + typedef [public] struct { + file_id id; + udlong share_file_id; + uint8 break_to; + } oplock_break_message; + + typedef [public] struct { + file_id id; + udlong share_file_id; + [string,charset(UTF8)] char *servicepath; + [string,charset(UTF8)] char *base_name; + [string,charset(UTF8)] char *stream_name; + } file_rename_message; +} |