#include "idl_types.h" import "server_id.idl"; import "security.idl"; import "file_id.idl"; [ pointer_default(unique) ] interface open_files { typedef [public] struct { server_id pid; hyper op_mid; uint16 op_type; uint32 access_mask; uint32 share_access; uint32 private_options; timeval time; file_id id; 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] struct { [string,charset(UTF8)] char *servicepath; [string,charset(UTF8)] char *base_name; [string,charset(UTF8)] char *stream_name; file_id id; uint32 num_share_modes; [size_is(num_share_modes)] share_mode_entry share_modes[]; uint32 num_delete_tokens; [size_is(num_delete_tokens)] delete_token delete_tokens[]; timespec old_write_time; timespec changed_write_time; [skip] boolean8 fresh; [skip] boolean8 modified; [ignore] db_record *record; } 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; boolean8 st_ex_calculated_birthtime; hyper st_ex_blksize; hyper st_ex_blocks; uint32 st_ex_flags; uint32 st_ex_mask; hyper vfs_private; } 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; timespec close_write_time; vfs_default_durable_stat stat_info; } vfs_default_durable_cookie; }