]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/streams.h
Backport from BEE
[bacula/bacula] / bacula / src / streams.h
1 /*
2    Bacula® - The Network Backup Solution
3
4    Copyright (C) 2000-2014 Free Software Foundation Europe e.V.
5
6    The main author of Bacula is Kern Sibbald, with contributions from many
7    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    Bacula® is a registered trademark of Kern Sibbald.
15 */
16 /**
17  * Stream definitions.  Split from baconfig.h Nov 2010
18  *
19  *  Kern Sibbald, MM
20  *
21  */
22
23 #ifndef __BSTREAMS_H
24 #define __BSTREAMS_H 1
25
26 /* Stream bits  -- these bits are new as of 24Nov10 */
27 #define STREAM_BIT_64                 (1<<30)    /* 64 bit stream (not yet implemented) */
28 #define STREAM_BIT_BITS               (1<<29)    /* Following bits may be set */
29 #define STREAM_BIT_PLUGIN             (1<<28)    /* Item written by a plugin */
30 #define STREAM_BIT_DELTA              (1<<27)    /* Stream contains delta data */
31 #define STREAM_BIT_OFFSETS            (1<<26)    /* Stream has data offset */
32 #define STREAM_BIT_PORTABLE_DATA      (1<<25)    /* Data is portable */
33
34 /* TYPE represents our current (old) stream types -- e.g. values 0 - 2047 */
35 #define STREAMBASE_TYPE                0         /* base for types */
36 #define STREAMBITS_TYPE               11         /* type bit size */
37 #define STREAMMASK_TYPE               (~((~0)<< STREAMBITS_TYPE) << STREAMBASE_TYPE)
38 /*
39  * Note additional base, bits, and masks can be defined for new
40  *  ranges or subranges of stream attributes.
41  */
42
43 /**
44  * Old, but currently used Stream definitions. Once defined these must NEVER
45  *   change as they go on the storage media.
46  * Note, the following streams are passed from the SD to the DIR
47  *   so that they may be put into the catalog (actually only the
48  *   stat packet part of the attr record is put in the catalog.
49  *
50  *   STREAM_UNIX_ATTRIBUTES
51  *   STREAM_UNIX_ATTRIBUTES_EX
52  *   STREAM_MD5_DIGEST
53  *   STREAM_SHA1_DIGEST
54  *   STREAM_SHA256_DIGEST
55  *   STREAM_SHA512_DIGEST
56  */
57 #define STREAM_NONE                         0    /* Reserved Non-Stream */
58 #define STREAM_UNIX_ATTRIBUTES              1    /* Generic Unix attributes */
59 #define STREAM_FILE_DATA                    2    /* Standard uncompressed data */
60 #define STREAM_MD5_SIGNATURE                3    /* deprecated */
61 #define STREAM_MD5_DIGEST                   3    /* MD5 digest for the file */
62 #define STREAM_GZIP_DATA                    4    /* GZip compressed file data */
63 #define STREAM_UNIX_ATTRIBUTES_EX           5    /* Extended Unix attr for Win32 EX - Deprecated */
64 #define STREAM_SPARSE_DATA                  6    /* Sparse data stream */
65 #define STREAM_SPARSE_GZIP_DATA             7    /* Sparse gzipped data stream */
66 #define STREAM_PROGRAM_NAMES                8    /* program names for program data */
67 #define STREAM_PROGRAM_DATA                 9    /* Data needing program */
68 #define STREAM_SHA1_SIGNATURE              10    /* deprecated */
69 #define STREAM_SHA1_DIGEST                 10    /* SHA1 digest for the file */
70 #define STREAM_WIN32_DATA                  11    /* Win32 BackupRead data */
71 #define STREAM_WIN32_GZIP_DATA             12    /* Gzipped Win32 BackupRead data */
72 #define STREAM_MACOS_FORK_DATA             13    /* Mac resource fork */
73 #define STREAM_HFSPLUS_ATTRIBUTES          14    /* Mac OS extra attributes */
74 #define STREAM_UNIX_ACCESS_ACL             15    /* Standard ACL attributes on UNIX - Deprecated */
75 #define STREAM_UNIX_DEFAULT_ACL            16    /* Default ACL attributes on UNIX - Deprecated */
76 #define STREAM_SHA256_DIGEST               17    /* SHA-256 digest for the file */
77 #define STREAM_SHA512_DIGEST               18    /* SHA-512 digest for the file */
78 #define STREAM_SIGNED_DIGEST               19    /* Signed File Digest, ASN.1, DER Encoded */
79 #define STREAM_ENCRYPTED_FILE_DATA         20    /* Encrypted, uncompressed data */
80 #define STREAM_ENCRYPTED_WIN32_DATA        21    /* Encrypted, uncompressed Win32 BackupRead data */
81 #define STREAM_ENCRYPTED_SESSION_DATA      22    /* Encrypted Session Data, ASN.1, DER Encoded */
82 #define STREAM_ENCRYPTED_FILE_GZIP_DATA    23    /* Encrypted, compressed data */
83 #define STREAM_ENCRYPTED_WIN32_GZIP_DATA   24    /* Encrypted, compressed Win32 BackupRead data */
84 #define STREAM_ENCRYPTED_MACOS_FORK_DATA   25    /* Encrypted, uncompressed Mac resource fork */
85 #define STREAM_PLUGIN_NAME                 26    /* Plugin "file" string */
86 #define STREAM_PLUGIN_DATA                 27    /* Plugin specific data */
87 #define STREAM_RESTORE_OBJECT              28    /* Plugin restore object */
88 /* Non GZip compressed streams. Those streams can handle arbitrary compression algorithm data
89  * as an additional header is stored at the beginning of the stream.
90  * see stream_compressed_header definition for more details.
91  */
92 #define STREAM_COMPRESSED_DATA                 29    /* Compressed file data */
93 #define STREAM_SPARSE_COMPRESSED_DATA          30    /* Sparse compressed data stream */
94 #define STREAM_WIN32_COMPRESSED_DATA           31    /* Compressed Win32 BackupRead data */
95 #define STREAM_ENCRYPTED_FILE_COMPRESSED_DATA  32    /* Encrypted, compressed data */
96 #define STREAM_ENCRYPTED_WIN32_COMPRESSED_DATA 33    /* Encrypted, compressed Win32 BackupRead data */
97
98 /**
99  * Additional Stream definitions. Once defined these must NEVER
100  *   change as they go on the storage media.
101  *
102  * The Stream numbers from 1000-1999 are reserved for ACL and extended attribute streams.
103  * Each different platform has its own stream id(s), if a platform supports multiple stream types
104  * it should supply different handlers for each type it supports and this should be called
105  * from the stream dispatch function. Currently in this reserved space we allocate the
106  * different acl streams from 1000 on and the different extended attributes streams from
107  * 1999 down. So the two naming spaces grows towards each other.
108  */
109 #define STREAM_ACL_AIX_TEXT              1000    /* AIX specific string representation from acl_get */
110 #define STREAM_ACL_DARWIN_ACCESS_ACL     1001    /* Darwin (OSX) specific acl_t string representation
111                                                   * from acl_to_text (POSIX acl)
112                                                   */
113 #define STREAM_ACL_FREEBSD_DEFAULT_ACL   1002    /* FreeBSD specific acl_t string representation
114                                                   * from acl_to_text (POSIX acl) for default acls.
115                                                   */
116 #define STREAM_ACL_FREEBSD_ACCESS_ACL    1003    /* FreeBSD specific acl_t string representation
117                                                   * from acl_to_text (POSIX acl) for access acls.
118                                                   */
119 #define STREAM_ACL_HPUX_ACL_ENTRY        1004    /* HPUX specific acl_entry string representation
120                                                   * from acltostr (POSIX acl)
121                                                   */
122 #define STREAM_ACL_IRIX_DEFAULT_ACL      1005    /* IRIX specific acl_t string representation
123                                                   * from acl_to_text (POSIX acl) for default acls.
124                                                   */
125 #define STREAM_ACL_IRIX_ACCESS_ACL       1006    /* IRIX specific acl_t string representation
126                                                   * from acl_to_text (POSIX acl) for access acls.
127                                                   */
128 #define STREAM_ACL_LINUX_DEFAULT_ACL     1007    /* Linux specific acl_t string representation
129                                                   * from acl_to_text (POSIX acl) for default acls.
130                                                   */
131 #define STREAM_ACL_LINUX_ACCESS_ACL      1008    /* Linux specific acl_t string representation
132                                                   * from acl_to_text (POSIX acl) for access acls.
133                                                   */
134 #define STREAM_ACL_TRU64_DEFAULT_ACL     1009    /* Tru64 specific acl_t string representation
135                                                   * from acl_to_text (POSIX acl) for default acls.
136                                                   */
137 #define STREAM_ACL_TRU64_DEFAULT_DIR_ACL 1010    /* Tru64 specific acl_t string representation
138                                                   * from acl_to_text (POSIX acl) for default acls.
139                                                   */
140 #define STREAM_ACL_TRU64_ACCESS_ACL      1011    /* Tru64 specific acl_t string representation
141                                                   * from acl_to_text (POSIX acl) for access acls.
142                                                   */
143 #define STREAM_ACL_SOLARIS_ACLENT        1012    /* Solaris specific aclent_t string representation
144                                                   * from acltotext or acl_totext (POSIX acl)
145                                                   */
146 #define STREAM_ACL_SOLARIS_ACE           1013    /* Solaris specific ace_t string representation from
147                                                   * from acl_totext (NFSv4 or ZFS acl)
148                                                   */
149 #define STREAM_ACL_AFS_TEXT              1014    /* AFS specific string representation from pioctl */
150
151 #define STREAM_ACL_AIX_AIXC              1015    /* AIX specific string representation from
152                                                   * aclx_printStr (POSIX acl)
153                                                   */
154 #define STREAM_ACL_AIX_NFS4              1016    /* AIX specific string representation from
155                                                   * aclx_printStr (NFSv4 acl)
156                                                   */
157 #define STREAM_ACL_FREEBSD_NFS4_ACL      1017    /* FreeBSD specific acl_t string representation
158                                                   * from acl_to_text (NFSv4 or ZFS acl)
159                                                   */
160 #define STREAM_ACL_HURD_DEFAULT_ACL      1018    /* GNU HURD specific acl_t string representation
161                                                   * from acl_to_text (POSIX acl) for default acls.
162                                                   */
163 #define STREAM_ACL_HURD_ACCESS_ACL       1019    /* GNU HURD specific acl_t string representation
164                                                   * from acl_to_text (POSIX acl) for access acls.
165                                                   */
166 #define STREAM_XATTR_HURD                1989    /* GNU HURD specific extended attributes */
167 #define STREAM_XATTR_IRIX                1990    /* IRIX specific extended attributes */
168 #define STREAM_XATTR_TRU64               1991    /* TRU64 specific extended attributes */
169 #define STREAM_XATTR_AIX                 1992    /* AIX specific extended attributes */
170 #define STREAM_XATTR_OPENBSD             1993    /* OpenBSD specific extended attributes */
171 #define STREAM_XATTR_SOLARIS_SYS         1994    /* Solaris specific extensible attributes or
172                                                   * otherwise named extended system attributes.
173                                                   */
174 #define STREAM_XATTR_SOLARIS             1995    /* Solaris specific extented attributes */
175 #define STREAM_XATTR_DARWIN              1996    /* Darwin (OSX) specific extended attributes */
176 #define STREAM_XATTR_FREEBSD             1997    /* FreeBSD specific extended attributes */
177 #define STREAM_XATTR_LINUX               1998    /* Linux specific extended attributes */
178 #define STREAM_XATTR_NETBSD              1999    /* NetBSD specific extended attributes */
179
180 /* WARNING!!! do not define more than 2047 of these old types */
181
182 #endif /* __BSTREAMS_H */