00001 /* 00002 * Copyright (c) 2002 - 2006, Netherlands Forensic Institute 00003 * 00004 * All rights reserved. 00005 * 00006 * Redistribution and use in source and binary forms, with or without 00007 * modification, are permitted provided that the following conditions 00008 * are met: 00009 * 1. Redistributions of source code must retain the above copyright 00010 * notice, this list of conditions and the following disclaimer. 00011 * 2. Redistributions in binary form must reproduce the above copyright 00012 * notice, this list of conditions and the following disclaimer in the 00013 * documentation and/or other materials provided with the distribution. 00014 * 3. Neither the name of the Institute nor the names of its contributors 00015 * may be used to endorse or promote products derived from this software 00016 * without specific prior written permission. 00017 00018 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 00019 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00020 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00021 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 00022 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00023 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 00024 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 00025 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00026 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 00027 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00028 * SUCH DAMAGE. 00029 */ 00030 00031 00032 00033 #ifndef __rdd_h__ 00034 #define __rdd_h__ 00035 00036 #include <stdint.h> 00037 #include <sys/types.h> 00038 00039 typedef uint64_t rdd_count_t; 00040 00041 #define RDD_CHECKSUM_MAGIC 0xdefd 00042 #define RDD_CHECKSUM_VERSION 0x0100 00043 00044 // restriction by libewf 00045 #define RDD_EWF_MIN_SPLITLEN 1024*1024 00046 00047 typedef uint32_t rdd_checksum_t; /* = 32 bits */ 00048 00049 typedef enum { 00050 RDD_ADLER32 = 0x1, 00051 RDD_CRC32 = 0x2 00052 } rdd_checksum_algorithm_t; 00053 00054 typedef struct _RDD_CHECKSUM_FILE_HEADER { 00055 uint16_t magic; 00056 uint16_t version; 00057 uint16_t flags; 00058 uint16_t reserved; 00059 uint32_t blocksize; 00060 off_t offset; 00061 off_t imagesize; 00062 } RDD_CHECKSUM_FILE_HEADER; 00063 00064 #define RDD_COUNT_MAX 18446744073709551615ULL 00065 00066 /* rdd error codes */ 00067 #define RDD_OK 0 /* no error */ 00068 #define RDD_NOMEM 1 /* out of memory */ 00069 #define RDD_BADARG 2 /* bad function argument */ 00070 #define RDD_ECOMPRESS 3 /* (de)compression error */ 00071 #define RDD_EWRITE 4 /* write error */ 00072 #define RDD_ECLOSE 5 /* close error */ 00073 #define RDD_EEXISTS 6 /* file already exists */ 00074 #define RDD_EOPEN 7 /* cannot open file */ 00075 #define RDD_ECONNECT 8 /* cannot connect */ 00076 #define RDD_ETELL 9 /* cannot determine current file position */ 00077 #define RDD_ESEEK 10 /* seek error */ 00078 #define RDD_EREAD 11 /* read error */ 00079 #define RDD_ESPACE 12 /* insufficient space in buffer */ 00080 #define RDD_ESYNTAX 13 /* syntax error */ 00081 #define RDD_ERANGE 14 /* number out of range */ 00082 #define RDD_EAGAIN 15 /* try again later */ 00083 #define RDD_NOTFOUND 16 /* not found */ 00084 #define RDD_ABORTED 17 /* operation has been aborted */ 00085 00086 #define RDD_WHOLE_FILE ((rdd_count_t) ~(0ULL)) 00087 00088 #endif /* __rdd_h__ */