Merge tag 'upstream/4.0.5+dfsg1' into samba_4.0_ivo
[abartlet/samba-debian.git] / librpc / idl / ioctl.idl
diff --git a/librpc/idl/ioctl.idl b/librpc/idl/ioctl.idl
new file mode 100644 (file)
index 0000000..4672777
--- /dev/null
@@ -0,0 +1,90 @@
+#include "idl_types.h"
+[
+       pointer_default(unique)
+]
+interface copychunk
+{
+       typedef [public] struct {
+               uint8 resume_key[24];
+               uint32 context_len;
+               /* <56> Windows sends 4 bytes of zero for the context field. */
+               uint8 context[4];
+       } req_resume_key_rsp;
+
+       typedef struct {
+               hyper source_off;
+               hyper target_off;
+               uint32 length;
+               uint32 reserved;
+       } srv_copychunk;
+
+       typedef [public] struct {
+               uint8 source_key[24];
+               uint32 chunk_count;
+               uint32 reserved;
+               srv_copychunk chunks[chunk_count];
+       } srv_copychunk_copy;
+
+       typedef [public] struct {
+               uint32 chunks_written;
+               uint32 chunk_bytes_written;
+               uint32 total_bytes_written;
+       } srv_copychunk_rsp;
+
+       typedef [public] struct {
+               uint32 version;
+               uint32 size;
+               uint32 maximum_token_lifetime;
+               uint32 default_token_lifetime;
+               hyper maximum_xfer_size;
+               hyper optimal_xfer_count;
+               uint32 maximum_data_descriptors;
+               uint32 maximum_xfer_length_per_descriptor;
+               uint32 optimal_xfer_length_per_descriptor;
+               uint16 optimal_xfer_length_granularity;
+               uint8 reserved[2];
+       } device_copy_offload_descriptor;
+
+       /* XXX: 0x00000001 is unconfirmed */
+       const uint32 STORAGE_OFFLOAD_TOKEN_TYPE_ZERO_DATA = 0x00000001;
+       typedef [public] struct {
+               uint32 token_type;
+               uint8 reserved[2];
+               uint16 token_id_len;
+               [size_is(token_id_len)] uint8 token[];
+       } storage_offload_token;
+
+       typedef [public] struct {
+               uint32 size;
+               uint32 flags;
+               uint32 token_time_to_live;
+               uint32 reserved;
+               hyper file_offset;
+               hyper length;
+       } fsctl_offload_read_input;
+
+       const uint32 OFFLOAD_READ_FLAG_FILE_TOO_SMALL = 0x00000001;
+       const uint32 OFFLOAD_READ_FLAG_ALL_ZERO_BEYOND_RANGE = 0x00000002;
+       const uint32 OFFLOAD_READ_FLAG_CANNOT_OFFLOAD_BEYOND_RANGE = 0x00000004;
+       typedef [public] struct {
+               uint32 size;
+               uint32 flags;
+               hyper xfer_length;
+               uint8 token[512];
+       } fsctl_offload_read_output;
+
+       typedef [public] struct {
+               uint32 size;
+               uint32 flags;
+               hyper file_offset;
+               hyper copy_length;
+               hyper xfer_offset;
+               uint8 token[512];
+       } fsctl_offload_write_input;
+
+       typedef [public] struct {
+               uint32 size;
+               uint32 flags;
+               hyper length_written;
+       } fsctl_offload_write_output;
+}