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