]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/streams.h
6c1dc972f34156d72b425b0b1603ba4592b4b2a5
[bacula/bacula] / bacula / src / streams.h
1 /*
2    Bacula(R) - The Network Backup Solution
3
4    Copyright (C) 2000-2017 Kern Sibbald
5
6    The original author of Bacula is Kern Sibbald, with contributions
7    from many others, a complete list can be found in the file AUTHORS.
8
9    You may use this file and others of this release according to the
10    license defined in the LICENSE file, which includes the Affero General
11    Public License, v3.0 ("AGPLv3") and some additional permissions and
12    terms pursuant to its AGPLv3 Section 7.
13
14    This notice must be preserved when any source code is
15    conveyed and/or propagated.
16
17    Bacula(R) is a registered trademark of Kern Sibbald.
18 */
19 /**
20  * Stream definitions.  Split from baconfig.h Nov 2010
21  *
22  *  Kern Sibbald, MM
23  */
24
25 #ifndef __BSTREAMS_H
26 #define __BSTREAMS_H 1
27
28 /* Stream bits  -- these bits are new as of 24Nov10 */
29 #define STREAM_BIT_64                 (1<<30)    /* 64 bit stream (not yet implemented) */
30 #define STREAM_BIT_BITS               (1<<29)    /* Following bits may be set */
31 #define STREAM_BIT_PLUGIN             (1<<28)    /* Item written by a plugin */
32 #define STREAM_BIT_DELTA              (1<<27)    /* Stream contains delta data */
33 #define STREAM_BIT_OFFSETS            (1<<26)    /* Stream has data offset */
34 #define STREAM_BIT_PORTABLE_DATA      (1<<25)    /* Data is portable */
35
36 /* TYPE represents our current (old) stream types -- e.g. values 0 - 2047 */
37 #define STREAMBASE_TYPE                0         /* base for types */
38 #define STREAMBITS_TYPE               11         /* type bit size */
39 #define STREAMMASK_TYPE               (~((~0)<< STREAMBITS_TYPE) << STREAMBASE_TYPE)
40 /*
41  * Note additional base, bits, and masks can be defined for new     
42  *  ranges or subranges of stream attributes.
43  */
44
45 /**
46  * Old, but currently used Stream definitions. Once defined these must NEVER
47  *   change as they go on the storage media.
48  * Note, the following streams are passed from the SD to the DIR
49  *   so that they may be put into the catalog (actually only the
50  *   stat packet part of the attr record is put in the catalog.
51  *
52  *   STREAM_UNIX_ATTRIBUTES
53  *   STREAM_UNIX_ATTRIBUTES_EX
54  *   STREAM_MD5_DIGEST
55  *   STREAM_SHA1_DIGEST
56  *   STREAM_SHA256_DIGEST
57  *   STREAM_SHA512_DIGEST
58  */
59 #define STREAM_NONE                         0    /* Reserved Non-Stream */
60 #define STREAM_UNIX_ATTRIBUTES              1    /* Generic Unix attributes */
61 #define STREAM_FILE_DATA                    2    /* Standard uncompressed data */
62 #define STREAM_MD5_SIGNATURE                3    /* deprecated */
63 #define STREAM_MD5_DIGEST                   3    /* MD5 digest for the file */
64 #define STREAM_GZIP_DATA                    4    /* GZip compressed file data */
65 #define STREAM_UNIX_ATTRIBUTES_EX           5    /* Extended Unix attr for Win32 EX - Deprecated */
66 #define STREAM_SPARSE_DATA                  6    /* Sparse data stream */
67 #define STREAM_SPARSE_GZIP_DATA             7    /* Sparse gzipped data stream */
68 #define STREAM_PROGRAM_NAMES                8    /* program names for program data */
69 #define STREAM_PROGRAM_DATA                 9    /* Data needing program */
70 #define STREAM_SHA1_SIGNATURE              10    /* deprecated */
71 #define STREAM_SHA1_DIGEST                 10    /* SHA1 digest for the file */
72 #define STREAM_WIN32_DATA                  11    /* Win32 BackupRead data */
73 #define STREAM_WIN32_GZIP_DATA             12    /* Gzipped Win32 BackupRead data */
74 #define STREAM_MACOS_FORK_DATA             13    /* Mac resource fork */
75 #define STREAM_HFSPLUS_ATTRIBUTES          14    /* Mac OS extra attributes */
76 #define STREAM_UNIX_ACCESS_ACL             15    /* Standard ACL attributes on UNIX - Deprecated */
77 #define STREAM_UNIX_DEFAULT_ACL            16    /* Default ACL attributes on UNIX - Deprecated */
78 #define STREAM_SHA256_DIGEST               17    /* SHA-256 digest for the file */
79 #define STREAM_SHA512_DIGEST               18    /* SHA-512 digest for the file */
80 #define STREAM_SIGNED_DIGEST               19    /* Signed File Digest, ASN.1, DER Encoded */
81 #define STREAM_ENCRYPTED_FILE_DATA         20    /* Encrypted, uncompressed data */
82 #define STREAM_ENCRYPTED_WIN32_DATA        21    /* Encrypted, uncompressed Win32 BackupRead data */
83 #define STREAM_ENCRYPTED_SESSION_DATA      22    /* Encrypted Session Data, ASN.1, DER Encoded */
84 #define STREAM_ENCRYPTED_FILE_GZIP_DATA    23    /* Encrypted, compressed data */
85 #define STREAM_ENCRYPTED_WIN32_GZIP_DATA   24    /* Encrypted, compressed Win32 BackupRead data */
86 #define STREAM_ENCRYPTED_MACOS_FORK_DATA   25    /* Encrypted, uncompressed Mac resource fork */
87 #define STREAM_PLUGIN_NAME                 26    /* Plugin "file" string */
88 #define STREAM_PLUGIN_DATA                 27    /* Plugin specific data */
89 #define STREAM_RESTORE_OBJECT              28    /* Plugin restore object */
90 /*
91  * Non-gzip compressed streams. Those streams can handle arbitrary 
92  *  compression algorithm data as an additional header is stored 
93  *  at the beginning of the stream. See comp_stream_header definition 
94  *  in ch.h for more details.
95  */
96 #define STREAM_COMPRESSED_DATA                 29    /* Compressed file data */
97 #define STREAM_SPARSE_COMPRESSED_DATA          30    /* Sparse compressed data stream */
98 #define STREAM_WIN32_COMPRESSED_DATA           31    /* Compressed Win32 BackupRead data */
99 #define STREAM_ENCRYPTED_FILE_COMPRESSED_DATA  32    /* Encrypted, compressed data */
100 #define STREAM_ENCRYPTED_WIN32_COMPRESSED_DATA 33    /* Encrypted, compressed Win32 BackupRead data */
101
102 #define STREAM_ADATA_BLOCK_HEADER             200    /* Adata block header */
103 #define STREAM_ADATA_RECORD_HEADER            201    /* Adata record header */
104
105 /*
106  * Additional Stream definitions. Once defined these must NEVER
107  *   change as they go on the storage media.
108  *
109  * The Stream numbers from 1000-1999 are reserved for ACL and extended attribute streams.
110  * Each different platform has its own stream id(s), if a platform supports multiple stream types
111  * it should supply different handlers for each type it supports and this should be called
112  * from the stream dispatch function. Currently in this reserved space we allocate the
113  * different acl streams from 1000 on and the different extended attributes streams from
114  * 1999 down. So the two naming spaces grows towards each other.
115  *
116  * Rationalize names a bit to correspond to the new XACL classes
117  *
118  */
119 #define STREAM_XACL_AIX_TEXT          1000    /* AIX string of acl_get */
120 #define STREAM_XACL_DARWIN_ACCESS     1001    /* Darwin (OSX) acl_t string of acl_to_text (POSIX acl) */
121 #define STREAM_XACL_FREEBSD_DEFAULT   1002    /* FreeBSD acl_t string of acl_to_text (POSIX acl) for default acls */
122 #define STREAM_XACL_FREEBSD_ACCESS    1003    /* FreeBSD acl_t string of acl_to_text (POSIX acl) for access acls */
123 #define STREAM_XACL_HPUX_ACL_ENTRY    1004    /* HPUX acl_entry string of acltostr (POSIX acl) */
124 #define STREAM_XACL_IRIX_DEFAULT      1005    /* IRIX acl_t string of acl_to_text (POSIX acl) for default acls */
125 #define STREAM_XACL_IRIX_ACCESS       1006    /* IRIX acl_t string of acl_to_text (POSIX acl) for access acls */
126 #define STREAM_XACL_LINUX_DEFAULT     1007    /* Linux acl_t string of acl_to_text (POSIX acl) for default acls */
127 #define STREAM_XACL_LINUX_ACCESS      1008    /* Linux acl_t string of acl_to_text (POSIX acl) for access acls */
128 #define STREAM_XACL_TRU64_DEFAULT     1009    /* Tru64 acl_t string of acl_to_text (POSIX acl) for default acls */
129 #define STREAM_XACL_TRU64_DEFAULT_DIR 1010    /* Tru64 acl_t string of acl_to_text (POSIX acl) for default acls */
130 #define STREAM_XACL_TRU64_ACCESS      1011    /* Tru64 acl_t string of acl_to_text (POSIX acl) for access acls */
131 #define STREAM_XACL_SOLARIS_POSIX     1012    /* Solaris aclent_t string of acltotext or acl_totext (POSIX acl) */
132 #define STREAM_XACL_SOLARIS_NFS4      1013    /* Solaris ace_t string of of acl_totext (NFSv4 or ZFS acl) */
133 #define STREAM_XACL_AFS_TEXT          1014    /* AFS string of pioctl */
134 #define STREAM_XACL_AIX_AIXC          1015    /* AIX string of aclx_printStr (POSIX acl) */
135 #define STREAM_XACL_AIX_NFS4          1016    /* AIX string of aclx_printStr (NFSv4 acl) */
136 #define STREAM_XACL_FREEBSD_NFS4      1017    /* FreeBSD acl_t string of acl_to_text (NFSv4 or ZFS acl) */
137 #define STREAM_XACL_HURD_DEFAULT      1018    /* GNU HURD acl_t string of acl_to_text (POSIX acl) for default acls */
138 #define STREAM_XACL_HURD_ACCESS       1019    /* GNU HURD acl_t string of acl_to_text (POSIX acl) for access acls */
139 #define STREAM_XACL_PLUGIN_ACL        1020    /* Plugin ACL data for plugin specific acls */
140 #define STREAM_XACL_PLUGIN_XATTR      1988    /* Plugin XATTR data for plugin specific xattrs */
141 #define STREAM_XACL_HURD_XATTR        1989    /* GNU HURD extended attributes */
142 #define STREAM_XACL_IRIX_XATTR        1990    /* IRIX extended attributes */
143 #define STREAM_XACL_TRU64_XATTR       1991    /* TRU64 extended attributes */
144 #define STREAM_XACL_AIX_XATTR         1992    /* AIX extended attributes */
145 #define STREAM_XACL_OPENBSD_XATTR     1993    /* OpenBSD extended attributes */
146 #define STREAM_XACL_SOLARIS_SYS_XATTR 1994    /* Solaris extensible attributes or
147                                                * otherwise named extended system attributes. */
148 #define STREAM_XACL_SOLARIS_XATTR     1995    /* Solaris extented attributes */
149 #define STREAM_XACL_DARWIN_XATTR      1996    /* Darwin (OSX) extended attributes */
150 #define STREAM_XACL_FREEBSD_XATTR     1997    /* FreeBSD extended attributes */
151 #define STREAM_XACL_LINUX_XATTR       1998    /* Linux specific attributes */
152 #define STREAM_XACL_NETBSD_XATTR      1999    /* NetBSD extended attributes */
153
154 /* WARNING!!! do not define more than 2047 of these old types */
155
156 #endif /* __BSTREAMS_H */