1 /* 2 * Definitions for libvmdk 3 * 4 * Copyright (C) 2009-2021, Joachim Metz <joachim.metz@gmail.com> 5 * 6 * Refer to AUTHORS for acknowledgements. 7 * 8 * This program is free software: you can redistribute it and/or modify 9 * it under the terms of the GNU Lesser General Public License as published by 10 * the Free Software Foundation, either version 3 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public License 19 * along with this program. If not, see <https://www.gnu.org/licenses/>. 20 */ 21 22 #if !defined( _LIBVMDK_DEFINITIONS_H ) 23 #define _LIBVMDK_DEFINITIONS_H 24 25 #include <libvmdk/types.h> 26 27 #define LIBVMDK_VERSION 20210807 28 29 /* The version string 30 */ 31 #define LIBVMDK_VERSION_STRING "20210807" 32 33 /* The access flags definitions 34 * bit 1 set to 1 for read access 35 * bit 2 set to 1 for write access 36 * bit 3-8 not used 37 */ 38 enum LIBVMDK_ACCESS_FLAGS 39 { 40 LIBVMDK_ACCESS_FLAG_READ = 0x01, 41 /* Reserved: not supported yet */ 42 LIBVMDK_ACCESS_FLAG_WRITE = 0x02 43 }; 44 45 /* The file access macros 46 */ 47 #define LIBVMDK_OPEN_READ ( LIBVMDK_ACCESS_FLAG_READ ) 48 /* Reserved: not supported yet */ 49 #define LIBVMDK_OPEN_WRITE ( LIBVMDK_ACCESS_FLAG_WRITE ) 50 /* Reserved: not supported yet */ 51 #define LIBVMDK_OPEN_READ_WRITE ( LIBVMDK_ACCESS_FLAG_READ | LIBVMDK_ACCESS_FLAG_WRITE ) 52 53 /* The file types 54 */ 55 enum LIBVMDK_FILE_TYPES 56 { 57 LIBVMDK_FILE_TYPE_COWD_SPARSE_DATA = (uint8_t) 'c', 58 LIBVMDK_FILE_TYPE_DESCRIPTOR_FILE = (uint8_t) 'd', 59 LIBVMDK_FILE_TYPE_RAW_DATA = (uint8_t) 'r', 60 LIBVMDK_FILE_TYPE_VMDK_SPARSE_DATA = (uint8_t) 'v' 61 }; 62 63 /* The (virtual) disk types 64 */ 65 enum LIBVMDK_DISK_TYPES 66 { 67 LIBVMDK_DISK_TYPE_UNDEFINED, 68 LIBVMDK_DISK_TYPE_FLAT_2GB_EXTENT, 69 LIBVMDK_DISK_TYPE_SPARSE_2GB_EXTENT, 70 LIBVMDK_DISK_TYPE_CUSTOM, 71 LIBVMDK_DISK_TYPE_DEVICE, 72 LIBVMDK_DISK_TYPE_DEVICE_PARITIONED, 73 LIBVMDK_DISK_TYPE_MONOLITHIC_FLAT, 74 LIBVMDK_DISK_TYPE_MONOLITHIC_SPARSE, 75 LIBVMDK_DISK_TYPE_STREAM_OPTIMIZED, 76 LIBVMDK_DISK_TYPE_VMFS_FLAT, 77 LIBVMDK_DISK_TYPE_VMFS_FLAT_PRE_ALLOCATED, 78 LIBVMDK_DISK_TYPE_VMFS_FLAT_ZEROED, 79 LIBVMDK_DISK_TYPE_VMFS_RAW, 80 LIBVMDK_DISK_TYPE_VMFS_RDM, 81 LIBVMDK_DISK_TYPE_VMFS_RDMP, 82 LIBVMDK_DISK_TYPE_VMFS_SPARSE, 83 LIBVMDK_DISK_TYPE_VMFS_SPARSE_THIN 84 }; 85 86 #define LIBVMDK_DISK_TYPE_2GB_EXTENT_FLAT LIBVMDK_DISK_TYPE_FLAT_2GB_EXTENT 87 #define LIBVMDK_DISK_TYPE_2GB_EXTENT_SPARSE LIBVMDK_DISK_TYPE_SPARSE_2GB_EXTENT 88 89 /* The compression methods 90 */ 91 enum LIBVMDK_COMPRESSION_METHODS 92 { 93 LIBVMDK_COMPRESSION_METHOD_NONE = 0, 94 LIBVMDK_COMPRESSION_METHOD_DEFLATE = 1 95 }; 96 97 /* The extent access 98 */ 99 enum LIBVMDK_EXTENT_ACCESS 100 { 101 LIBVMDK_EXTENT_ACCESS_NONE = 1, 102 LIBVMDK_EXTENT_ACCESS_READ = 2, 103 LIBVMDK_EXTENT_ACCESS_READ_WRITE = 3, 104 }; 105 106 /* The extent types 107 */ 108 enum LIBVMDK_EXTENT_TYPES 109 { 110 LIBVMDK_EXTENT_TYPE_FLAT = 1, 111 LIBVMDK_EXTENT_TYPE_SPARSE = 2, 112 LIBVMDK_EXTENT_TYPE_VMFS_FLAT = 3, 113 LIBVMDK_EXTENT_TYPE_VMFS_SPARSE = 4, 114 LIBVMDK_EXTENT_TYPE_VMFS_RAW = 5, 115 LIBVMDK_EXTENT_TYPE_VMFS_RDM = 6, 116 LIBVMDK_EXTENT_TYPE_ZERO = 7, 117 }; 118 119 #endif /* !defined( _LIBVMDK_DEFINITIONS_H ) */ 120 121