]> git.sur5r.net Git - bacula/bacula/commitdiff
Separate definitions of streams, filetypes, and fileoptions to separate files
authorKern Sibbald <kern@sibbald.com>
Wed, 24 Nov 2010 10:14:02 +0000 (11:14 +0100)
committerEric Bollengier <eric@eb.homelinux.org>
Thu, 25 Nov 2010 14:17:13 +0000 (15:17 +0100)
bacula/src/baconfig.h
bacula/src/bacula.h
bacula/src/fileopts.h [new file with mode: 0644]
bacula/src/filetypes.h [new file with mode: 0644]
bacula/src/findlib/find.h
bacula/src/streams.h [new file with mode: 0644]

index 825a102088d57ba21085622ca9f2991e6c5d05e4..6d2cc473c9171b70711aed954340f278c1f32aaa 100644 (file)
@@ -80,8 +80,9 @@
 
 #if defined(HAVE_WIN32)
 
-#define WIN32_REPARSE_POINT 1
-#define WIN32_MOUNT_POINT   2
+#define WIN32_REPARSE_POINT  1   /* Can be any number of "funny" directories except the next two */
+#define WIN32_MOUNT_POINT    2   /* Directory link to Volume */
+#define WIN32_JUNCTION_POINT 3   /* Directory link to a directory */
 
 /* Reduce compiler warnings from Windows vss code */
 #define uuid(x)
@@ -201,167 +202,6 @@ void InitWinAPIWrapper();
  */
 #define DEFAULT_NETWORK_BUFFER_SIZE (64 * 1024)
 
-/**
- * Stream definitions. Once defined these must NEVER
- *   change as they go on the storage media.
- * Note, the following streams are passed from the SD to the DIR
- *   so that they may be put into the catalog (actually only the
- *   stat packet part of the attr record is put in the catalog.
- *
- *   STREAM_UNIX_ATTRIBUTES
- *   STREAM_UNIX_ATTRIBUTES_EX
- *   STREAM_MD5_DIGEST
- *   STREAM_SHA1_DIGEST
- *   STREAM_SHA256_DIGEST
- *   STREAM_SHA512_DIGEST
- */
-#define STREAM_NONE                         0    /* Reserved Non-Stream */
-#define STREAM_UNIX_ATTRIBUTES              1    /* Generic Unix attributes */
-#define STREAM_FILE_DATA                    2    /* Standard uncompressed data */
-#define STREAM_MD5_SIGNATURE                3    /* deprecated */
-#define STREAM_MD5_DIGEST                   3    /* MD5 digest for the file */
-#define STREAM_GZIP_DATA                    4    /* GZip compressed file data */
-#define STREAM_UNIX_ATTRIBUTES_EX           5    /* Extended Unix attr for Win32 EX - Deprecated */
-#define STREAM_SPARSE_DATA                  6    /* Sparse data stream */
-#define STREAM_SPARSE_GZIP_DATA             7    /* Sparse gzipped data stream */
-#define STREAM_PROGRAM_NAMES                8    /* program names for program data */
-#define STREAM_PROGRAM_DATA                 9    /* Data needing program */
-#define STREAM_SHA1_SIGNATURE              10    /* deprecated */
-#define STREAM_SHA1_DIGEST                 10    /* SHA1 digest for the file */
-#define STREAM_WIN32_DATA                  11    /* Win32 BackupRead data */
-#define STREAM_WIN32_GZIP_DATA             12    /* Gzipped Win32 BackupRead data */
-#define STREAM_MACOS_FORK_DATA             13    /* Mac resource fork */
-#define STREAM_HFSPLUS_ATTRIBUTES          14    /* Mac OS extra attributes */
-#define STREAM_UNIX_ACCESS_ACL             15    /* Standard ACL attributes on UNIX - Deprecated */
-#define STREAM_UNIX_DEFAULT_ACL            16    /* Default ACL attributes on UNIX - Deprecated */
-#define STREAM_SHA256_DIGEST               17    /* SHA-256 digest for the file */
-#define STREAM_SHA512_DIGEST               18    /* SHA-512 digest for the file */
-#define STREAM_SIGNED_DIGEST               19    /* Signed File Digest, ASN.1, DER Encoded */
-#define STREAM_ENCRYPTED_FILE_DATA         20    /* Encrypted, uncompressed data */
-#define STREAM_ENCRYPTED_WIN32_DATA        21    /* Encrypted, uncompressed Win32 BackupRead data */
-#define STREAM_ENCRYPTED_SESSION_DATA      22    /* Encrypted Session Data, ASN.1, DER Encoded */
-#define STREAM_ENCRYPTED_FILE_GZIP_DATA    23    /* Encrypted, compressed data */
-#define STREAM_ENCRYPTED_WIN32_GZIP_DATA   24    /* Encrypted, compressed Win32 BackupRead data */
-#define STREAM_ENCRYPTED_MACOS_FORK_DATA   25    /* Encrypted, uncompressed Mac resource fork */
-#define STREAM_PLUGIN_NAME                 26    /* Plugin "file" string */
-#define STREAM_PLUGIN_DATA                 27    /* Plugin specific data */
-#define STREAM_RESTORE_OBJECT              28    /* Plugin restore object */
-
-/**
- * Additional Stream definitions. Once defined these must NEVER
- *   change as they go on the storage media.
- *
- * The Stream numbers from 1000-1999 are reserved for ACL and extended attribute streams.
- * Each different platform has its own stream id(s), if a platform supports multiple stream types
- * it should supply different handlers for each type it supports and this should be called
- * from the stream dispatch function. Currently in this reserved space we allocate the
- * different acl streams from 1000 on and the different extended attributes streams from
- * 1999 down. So the two naming spaces grows towards each other.
- */
-#define STREAM_ACL_AIX_TEXT              1000    /* AIX specific string representation from acl_get */
-#define STREAM_ACL_DARWIN_ACCESS_ACL     1001    /* Darwin (OSX) specific acl_t string representation
-                                                  * from acl_to_text (POSIX acl)
-                                                  */
-#define STREAM_ACL_FREEBSD_DEFAULT_ACL   1002    /* FreeBSD specific acl_t string representation
-                                                  * from acl_to_text (POSIX acl) for default acls.
-                                                  */
-#define STREAM_ACL_FREEBSD_ACCESS_ACL    1003    /* FreeBSD specific acl_t string representation
-                                                  * from acl_to_text (POSIX acl) for access acls.
-                                                  */
-#define STREAM_ACL_HPUX_ACL_ENTRY        1004    /* HPUX specific acl_entry string representation
-                                                  * from acltostr (POSIX acl)
-                                                  */
-#define STREAM_ACL_IRIX_DEFAULT_ACL      1005    /* IRIX specific acl_t string representation
-                                                  * from acl_to_text (POSIX acl) for default acls.
-                                                  */
-#define STREAM_ACL_IRIX_ACCESS_ACL       1006    /* IRIX specific acl_t string representation
-                                                  * from acl_to_text (POSIX acl) for access acls.
-                                                  */
-#define STREAM_ACL_LINUX_DEFAULT_ACL     1007    /* Linux specific acl_t string representation
-                                                  * from acl_to_text (POSIX acl) for default acls.
-                                                  */
-#define STREAM_ACL_LINUX_ACCESS_ACL      1008    /* Linux specific acl_t string representation
-                                                  * from acl_to_text (POSIX acl) for access acls.
-                                                  */
-#define STREAM_ACL_TRU64_DEFAULT_ACL     1009    /* Tru64 specific acl_t string representation
-                                                  * from acl_to_text (POSIX acl) for default acls.
-                                                  */
-#define STREAM_ACL_TRU64_DEFAULT_DIR_ACL 1010    /* Tru64 specific acl_t string representation
-                                                  * from acl_to_text (POSIX acl) for default acls.
-                                                  */
-#define STREAM_ACL_TRU64_ACCESS_ACL      1011    /* Tru64 specific acl_t string representation
-                                                  * from acl_to_text (POSIX acl) for access acls.
-                                                  */
-#define STREAM_ACL_SOLARIS_ACLENT        1012    /* Solaris specific aclent_t string representation
-                                                  * from acltotext or acl_totext (POSIX acl)
-                                                  */
-#define STREAM_ACL_SOLARIS_ACE           1013    /* Solaris specific ace_t string representation from
-                                                  * from acl_totext (NFSv4 or ZFS acl)
-                                                  */
-#define STREAM_ACL_AFS_TEXT              1014    /* AFS specific string representation from pioctl */
-
-#define STREAM_ACL_AIX_AIXC              1015    /* AIX specific string representation from
-                                                  * aclx_printStr (POSIX acl)
-                                                  */
-#define STREAM_ACL_AIX_NFS4              1016    /* AIX specific string representation from
-                                                  * aclx_printStr (NFSv4 acl)
-                                                  */
-#define STREAM_XATTR_IRIX                1990    /* IRIX specific extended attributes */
-#define STREAM_XATTR_TRU64               1991    /* TRU64 specific extended attributes */
-#define STREAM_XATTR_AIX                 1992    /* AIX specific extended attributes */
-#define STREAM_XATTR_OPENBSD             1993    /* OpenBSD specific extended attributes */
-#define STREAM_XATTR_SOLARIS_SYS         1994    /* Solaris specific extensible attributes or
-                                                  * otherwise named extended system attributes.
-                                                  */
-#define STREAM_XATTR_SOLARIS             1995    /* Solaris specific extented attributes */
-#define STREAM_XATTR_DARWIN              1996    /* Darwin (OSX) specific extended attributes */
-#define STREAM_XATTR_FREEBSD             1997    /* FreeBSD specific extended attributes */
-#define STREAM_XATTR_LINUX               1998    /* Linux specific extended attributes */
-#define STREAM_XATTR_NETBSD              1999    /* NetBSD specific extended attributes */
-
-/**
- *  File type (Bacula defined).
- *  NOTE!!! These are saved in the Attributes record on the tape, so
- *          do not change them. If need be, add to them.
- *
- *  This is stored as 32 bits on the Volume, but only FT_MASK (16) bits are
- *    used for the file type. The upper bits are used to indicate
- *    additional optional fields in the attribute record.
- */
-#define FT_MASK       0xFFFF          /* Bits used by FT (type) */
-#define FT_LNKSAVED   1               /* hard link to file already saved */
-#define FT_REGE       2               /* Regular file but empty */
-#define FT_REG        3               /* Regular file */
-#define FT_LNK        4               /* Soft Link */
-#define FT_DIREND     5               /* Directory at end (saved) */
-#define FT_SPEC       6               /* Special file -- chr, blk, fifo, sock */
-#define FT_NOACCESS   7               /* Not able to access */
-#define FT_NOFOLLOW   8               /* Could not follow link */
-#define FT_NOSTAT     9               /* Could not stat file */
-#define FT_NOCHG     10               /* Incremental option, file not changed */
-#define FT_DIRNOCHG  11               /* Incremental option, directory not changed */
-#define FT_ISARCH    12               /* Trying to save archive file */
-#define FT_NORECURSE 13               /* No recursion into directory */
-#define FT_NOFSCHG   14               /* Different file system, prohibited */
-#define FT_NOOPEN    15               /* Could not open directory */
-#define FT_RAW       16               /* Raw block device */
-#define FT_FIFO      17               /* Raw fifo device */
-/** 
- * The DIRBEGIN packet is sent to the FD file processing routine so
- * that it can filter packets, but otherwise, it is not used
- * or saved */
-#define FT_DIRBEGIN  18               /* Directory at beginning (not saved) */
-#define FT_INVALIDFS 19               /* File system not allowed for */
-#define FT_INVALIDDT 20               /* Drive type not allowed for */
-#define FT_REPARSE   21               /* Win NTFS reparse point */
-#define FT_PLUGIN    22               /* Plugin generated filename */
-#define FT_DELETED   23               /* Deleted file entry */
-#define FT_BASE      24               /* Duplicate base file entry */
-#define FT_RESTORE_FIRST 25           /* Restore this "object" first */
-
-/* Definitions for upper part of type word (see above). */
-#define AR_DATA_STREAM (1<<16)        /* Data stream id present */
-
 /**
  * Tape label types -- stored in catalog
  */
@@ -375,7 +215,7 @@ void InitWinAPIWrapper();
 #define ON_PURGE_TRUNCATE 1
 
 /* Size of File Address stored in STREAM_SPARSE_DATA. Do NOT change! */
-#define SPARSE_FADDR_SIZE (sizeof(uint64_t))
+#define OFFSET_FADDR_SIZE (sizeof(uint64_t))
 
 /* Size of crypto length stored at head of crypto buffer. Do NOT change! */
 #define CRYPTO_LEN_SIZE ((int)sizeof(uint32_t))
index f17856f082509bbc9a6db3f9a05e32454fea2cd6..ccaa9786932b98a469fe8e0b77109f692617a7a3 100644 (file)
@@ -169,6 +169,8 @@ extern "C" {
 
 #include "version.h"
 #include "bc_types.h"
+#include "streams.h"
+#include "filetypes.h"
 #include "baconfig.h"
 #include "lib/lib.h"
 
diff --git a/bacula/src/fileopts.h b/bacula/src/fileopts.h
new file mode 100644 (file)
index 0000000..c48ff24
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2001-2010 Free Software Foundation Europe e.V.
+
+   The main author of Bacula is Kern Sibbald, with contributions from
+   many others, a complete list can be found in the file AUTHORS.
+   This program is Free Software; you can redistribute it and/or
+   modify it under the terms of version three of the GNU Affero General Public
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU Affero General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+   The licensor of Bacula is the Free Software Foundation Europe
+   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+   Switzerland, email:ftf@fsfeurope.org.
+*/
+/*
+ * File types 
+ *
+ *     Kern Sibbald MMI
+ *
+ *  Extracted from findlib/find.h Nov 2010
+ *
+ */
+
+#ifndef __BFILEOPTS_H
+#define __BFILEOPTS_H
+
+/*  
+ * Options saved int "options" of the include/exclude lists.
+ * They are directly jammed ito  "flag" of ff packet
+ */
+#define FO_MD5          (1<<1)        /* Do MD5 checksum */
+#define FO_GZIP         (1<<2)        /* Do Zlib compression */
+#define FO_NO_RECURSION (1<<3)        /* no recursion in directories */
+#define FO_MULTIFS      (1<<4)        /* multiple file systems */
+#define FO_SPARSE       (1<<5)        /* do sparse file checking */
+#define FO_IF_NEWER     (1<<6)        /* replace if newer */
+#define FO_NOREPLACE    (1<<7)        /* never replace */
+#define FO_READFIFO     (1<<8)        /* read data from fifo */
+#define FO_SHA1         (1<<9)        /* Do SHA1 checksum */
+#define FO_PORTABLE     (1<<10)       /* Use portable data format -- no BackupWrite */
+#define FO_MTIMEONLY    (1<<11)       /* Use mtime rather than mtime & ctime */
+#define FO_KEEPATIME    (1<<12)       /* Reset access time */
+#define FO_EXCLUDE      (1<<13)       /* Exclude file */
+#define FO_ACL          (1<<14)       /* Backup ACLs */
+#define FO_NO_HARDLINK  (1<<15)       /* don't handle hard links */
+#define FO_IGNORECASE   (1<<16)       /* Ignore file name case */
+#define FO_HFSPLUS      (1<<17)       /* Resource forks and Finder Info */
+#define FO_WIN32DECOMP  (1<<18)       /* Use BackupRead decomposition */
+#define FO_SHA256       (1<<19)       /* Do SHA256 checksum */
+#define FO_SHA512       (1<<20)       /* Do SHA512 checksum */
+#define FO_ENCRYPT      (1<<21)       /* Encrypt data stream */
+#define FO_NOATIME      (1<<22)       /* Use O_NOATIME to prevent atime change */
+#define FO_ENHANCEDWILD (1<<23)       /* Enhanced wild card processing */
+#define FO_CHKCHANGES   (1<<24)       /* Check if file have been modified during backup */
+#define FO_STRIPPATH    (1<<25)       /* Check for stripping path */
+#define FO_HONOR_NODUMP (1<<26)       /* honor NODUMP flag */
+#define FO_XATTR        (1<<27)       /* Backup Extended Attributes */
+#define FO_DELTA        (1<<28)       /* Delta data -- i.e. all copies returned on restore */
+#define FO_PLUGIN       (1<<29)       /* Plugin data stream -- return to plugin on restore */
+#define FO_OFFSETS      (1<<30)       /* Keep I/O file offsets */
+
+#endif /* __BFILEOPTSS_H */
diff --git a/bacula/src/filetypes.h b/bacula/src/filetypes.h
new file mode 100644 (file)
index 0000000..d7bf3b7
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+
+   The main author of Bacula is Kern Sibbald, with contributions from
+   many others, a complete list can be found in the file AUTHORS.
+   This program is Free Software; you can redistribute it and/or
+   modify it under the terms of version three of the GNU Affero General Public
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU Affero General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+   The licensor of Bacula is the Free Software Foundation Europe
+   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+   Switzerland, email:ftf@fsfeurope.org.
+*/
+/**
+ * Stream definitions.  Split from baconfig.h Nov 2010
+ *
+ *  Kern Sibbald, MM
+ *
+ */
+
+#ifndef __BFILETYPES_H
+#define __BFILETYPES_H 1
+
+
+/**
+ *  File type (Bacula defined).
+ *  NOTE!!! These are saved in the Attributes record on the tape, so
+ *          do not change them. If need be, add to them.
+ *
+ *  This is stored as 32 bits on the Volume, but only FT_MASK (16) bits are
+ *    used for the file type. The upper bits are used to indicate
+ *    additional optional fields in the attribute record.
+ */
+#define FT_MASK       0xFFFF          /* Bits used by FT (type) */
+#define FT_LNKSAVED   1               /* hard link to file already saved */
+#define FT_REGE       2               /* Regular file but empty */
+#define FT_REG        3               /* Regular file */
+#define FT_LNK        4               /* Soft Link */
+#define FT_DIREND     5               /* Directory at end (saved) */
+#define FT_SPEC       6               /* Special file -- chr, blk, fifo, sock */
+#define FT_NOACCESS   7               /* Not able to access */
+#define FT_NOFOLLOW   8               /* Could not follow link */
+#define FT_NOSTAT     9               /* Could not stat file */
+#define FT_NOCHG     10               /* Incremental option, file not changed */
+#define FT_DIRNOCHG  11               /* Incremental option, directory not changed */
+#define FT_ISARCH    12               /* Trying to save archive file */
+#define FT_NORECURSE 13               /* No recursion into directory */
+#define FT_NOFSCHG   14               /* Different file system, prohibited */
+#define FT_NOOPEN    15               /* Could not open directory */
+#define FT_RAW       16               /* Raw block device */
+#define FT_FIFO      17               /* Raw fifo device */
+/** 
+ * The DIRBEGIN packet is sent to the FD file processing routine so
+ * that it can filter packets, but otherwise, it is not used
+ * or saved */
+#define FT_DIRBEGIN  18               /* Directory at beginning (not saved) */
+#define FT_INVALIDFS 19               /* File system not allowed for */
+#define FT_INVALIDDT 20               /* Drive type not allowed for */
+#define FT_REPARSE   21               /* Win NTFS reparse point */
+#define FT_PLUGIN    22               /* Plugin generated filename */
+#define FT_DELETED   23               /* Deleted file entry */
+#define FT_BASE      24               /* Duplicate base file entry */
+#define FT_RESTORE_FIRST 25           /* Restore this "object" first */
+#define FT_JUNCTION  26               /* Win32 Junction point */
+
+/* Definitions for upper part of type word (see above). */
+#define AR_DATA_STREAM (1<<16)        /* Data stream id present */
+
+#endif /* __BFILETYPES_H */
index 10cd6c05be1e0f31e4586cc9cf163e3731ecb21a..86710941fd43a00569538748d8c285c3278bf093 100644 (file)
@@ -35,6 +35,7 @@
 #define __FILES_H
 
 #include "jcr.h"
+#include "fileopts.h"
 #include "bfile.h"
 #include "../filed/fd_plugins.h"
 
@@ -71,38 +72,7 @@ struct utimbuf {
 int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
 #endif
 
-/*  
- * Options saved int "options" of the include/exclude lists.
- * They are directly jammed ito  "flag" of ff packet
- */
-#define FO_MD5          (1<<1)        /* Do MD5 checksum */
-#define FO_GZIP         (1<<2)        /* Do Zlib compression */
-#define FO_NO_RECURSION (1<<3)        /* no recursion in directories */
-#define FO_MULTIFS      (1<<4)        /* multiple file systems */
-#define FO_SPARSE       (1<<5)        /* do sparse file checking */
-#define FO_IF_NEWER     (1<<6)        /* replace if newer */
-#define FO_NOREPLACE    (1<<7)        /* never replace */
-#define FO_READFIFO     (1<<8)        /* read data from fifo */
-#define FO_SHA1         (1<<9)        /* Do SHA1 checksum */
-#define FO_PORTABLE     (1<<10)       /* Use portable data format -- no BackupWrite */
-#define FO_MTIMEONLY    (1<<11)       /* Use mtime rather than mtime & ctime */
-#define FO_KEEPATIME    (1<<12)       /* Reset access time */
-#define FO_EXCLUDE      (1<<13)       /* Exclude file */
-#define FO_ACL          (1<<14)       /* Backup ACLs */
-#define FO_NO_HARDLINK  (1<<15)       /* don't handle hard links */
-#define FO_IGNORECASE   (1<<16)       /* Ignore file name case */
-#define FO_HFSPLUS      (1<<17)       /* Resource forks and Finder Info */
-#define FO_WIN32DECOMP  (1<<18)       /* Use BackupRead decomposition */
-#define FO_SHA256       (1<<19)       /* Do SHA256 checksum */
-#define FO_SHA512       (1<<20)       /* Do SHA512 checksum */
-#define FO_ENCRYPT      (1<<21)       /* Encrypt data stream */
-#define FO_NOATIME      (1<<22)       /* Use O_NOATIME to prevent atime change */
-#define FO_ENHANCEDWILD (1<<23)       /* Enhanced wild card processing */
-#define FO_CHKCHANGES   (1<<24)       /* Check if file have been modified during backup */
-#define FO_STRIPPATH    (1<<25)       /* Check for stripping path */
-#define FO_HONOR_NODUMP (1<<26)       /* honor NODUMP flag */
-#define FO_XATTR        (1<<27)       /* Backup Extended Attributes */
-#define FO_DELTA        (1<<28)       /* Do delta on file */
+/* For options FO_xxx values see src/fileopts.h */
 
 struct s_included_file {
    struct s_included_file *next;
diff --git a/bacula/src/streams.h b/bacula/src/streams.h
new file mode 100644 (file)
index 0000000..73d91f7
--- /dev/null
@@ -0,0 +1,157 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+
+   The main author of Bacula is Kern Sibbald, with contributions from
+   many others, a complete list can be found in the file AUTHORS.
+   This program is Free Software; you can redistribute it and/or
+   modify it under the terms of version three of the GNU Affero General Public
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU Affero General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+   The licensor of Bacula is the Free Software Foundation Europe
+   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+   Switzerland, email:ftf@fsfeurope.org.
+*/
+/**
+ * Stream definitions.  Split from baconfig.h Nov 2010
+ *
+ *  Kern Sibbald, MM
+ *
+ */
+
+#ifndef __BSTREAMS_H
+#define __BSTREAMS_H 1
+
+
+/**
+ * Stream definitions. Once defined these must NEVER
+ *   change as they go on the storage media.
+ * Note, the following streams are passed from the SD to the DIR
+ *   so that they may be put into the catalog (actually only the
+ *   stat packet part of the attr record is put in the catalog.
+ *
+ *   STREAM_UNIX_ATTRIBUTES
+ *   STREAM_UNIX_ATTRIBUTES_EX
+ *   STREAM_MD5_DIGEST
+ *   STREAM_SHA1_DIGEST
+ *   STREAM_SHA256_DIGEST
+ *   STREAM_SHA512_DIGEST
+ */
+#define STREAM_NONE                         0    /* Reserved Non-Stream */
+#define STREAM_UNIX_ATTRIBUTES              1    /* Generic Unix attributes */
+#define STREAM_FILE_DATA                    2    /* Standard uncompressed data */
+#define STREAM_MD5_SIGNATURE                3    /* deprecated */
+#define STREAM_MD5_DIGEST                   3    /* MD5 digest for the file */
+#define STREAM_GZIP_DATA                    4    /* GZip compressed file data */
+#define STREAM_UNIX_ATTRIBUTES_EX           5    /* Extended Unix attr for Win32 EX - Deprecated */
+#define STREAM_SPARSE_DATA                  6    /* Sparse data stream */
+#define STREAM_SPARSE_GZIP_DATA             7    /* Sparse gzipped data stream */
+#define STREAM_PROGRAM_NAMES                8    /* program names for program data */
+#define STREAM_PROGRAM_DATA                 9    /* Data needing program */
+#define STREAM_SHA1_SIGNATURE              10    /* deprecated */
+#define STREAM_SHA1_DIGEST                 10    /* SHA1 digest for the file */
+#define STREAM_WIN32_DATA                  11    /* Win32 BackupRead data */
+#define STREAM_WIN32_GZIP_DATA             12    /* Gzipped Win32 BackupRead data */
+#define STREAM_MACOS_FORK_DATA             13    /* Mac resource fork */
+#define STREAM_HFSPLUS_ATTRIBUTES          14    /* Mac OS extra attributes */
+#define STREAM_UNIX_ACCESS_ACL             15    /* Standard ACL attributes on UNIX - Deprecated */
+#define STREAM_UNIX_DEFAULT_ACL            16    /* Default ACL attributes on UNIX - Deprecated */
+#define STREAM_SHA256_DIGEST               17    /* SHA-256 digest for the file */
+#define STREAM_SHA512_DIGEST               18    /* SHA-512 digest for the file */
+#define STREAM_SIGNED_DIGEST               19    /* Signed File Digest, ASN.1, DER Encoded */
+#define STREAM_ENCRYPTED_FILE_DATA         20    /* Encrypted, uncompressed data */
+#define STREAM_ENCRYPTED_WIN32_DATA        21    /* Encrypted, uncompressed Win32 BackupRead data */
+#define STREAM_ENCRYPTED_SESSION_DATA      22    /* Encrypted Session Data, ASN.1, DER Encoded */
+#define STREAM_ENCRYPTED_FILE_GZIP_DATA    23    /* Encrypted, compressed data */
+#define STREAM_ENCRYPTED_WIN32_GZIP_DATA   24    /* Encrypted, compressed Win32 BackupRead data */
+#define STREAM_ENCRYPTED_MACOS_FORK_DATA   25    /* Encrypted, uncompressed Mac resource fork */
+#define STREAM_PLUGIN_NAME                 26    /* Plugin "file" string */
+#define STREAM_PLUGIN_DATA                 27    /* Plugin specific data */
+#define STREAM_RESTORE_OBJECT              28    /* Plugin restore object */
+
+/**
+ * Additional Stream definitions. Once defined these must NEVER
+ *   change as they go on the storage media.
+ *
+ * The Stream numbers from 1000-1999 are reserved for ACL and extended attribute streams.
+ * Each different platform has its own stream id(s), if a platform supports multiple stream types
+ * it should supply different handlers for each type it supports and this should be called
+ * from the stream dispatch function. Currently in this reserved space we allocate the
+ * different acl streams from 1000 on and the different extended attributes streams from
+ * 1999 down. So the two naming spaces grows towards each other.
+ */
+#define STREAM_ACL_AIX_TEXT              1000    /* AIX specific string representation from acl_get */
+#define STREAM_ACL_DARWIN_ACCESS_ACL     1001    /* Darwin (OSX) specific acl_t string representation
+                                                  * from acl_to_text (POSIX acl)
+                                                  */
+#define STREAM_ACL_FREEBSD_DEFAULT_ACL   1002    /* FreeBSD specific acl_t string representation
+                                                  * from acl_to_text (POSIX acl) for default acls.
+                                                  */
+#define STREAM_ACL_FREEBSD_ACCESS_ACL    1003    /* FreeBSD specific acl_t string representation
+                                                  * from acl_to_text (POSIX acl) for access acls.
+                                                  */
+#define STREAM_ACL_HPUX_ACL_ENTRY        1004    /* HPUX specific acl_entry string representation
+                                                  * from acltostr (POSIX acl)
+                                                  */
+#define STREAM_ACL_IRIX_DEFAULT_ACL      1005    /* IRIX specific acl_t string representation
+                                                  * from acl_to_text (POSIX acl) for default acls.
+                                                  */
+#define STREAM_ACL_IRIX_ACCESS_ACL       1006    /* IRIX specific acl_t string representation
+                                                  * from acl_to_text (POSIX acl) for access acls.
+                                                  */
+#define STREAM_ACL_LINUX_DEFAULT_ACL     1007    /* Linux specific acl_t string representation
+                                                  * from acl_to_text (POSIX acl) for default acls.
+                                                  */
+#define STREAM_ACL_LINUX_ACCESS_ACL      1008    /* Linux specific acl_t string representation
+                                                  * from acl_to_text (POSIX acl) for access acls.
+                                                  */
+#define STREAM_ACL_TRU64_DEFAULT_ACL     1009    /* Tru64 specific acl_t string representation
+                                                  * from acl_to_text (POSIX acl) for default acls.
+                                                  */
+#define STREAM_ACL_TRU64_DEFAULT_DIR_ACL 1010    /* Tru64 specific acl_t string representation
+                                                  * from acl_to_text (POSIX acl) for default acls.
+                                                  */
+#define STREAM_ACL_TRU64_ACCESS_ACL      1011    /* Tru64 specific acl_t string representation
+                                                  * from acl_to_text (POSIX acl) for access acls.
+                                                  */
+#define STREAM_ACL_SOLARIS_ACLENT        1012    /* Solaris specific aclent_t string representation
+                                                  * from acltotext or acl_totext (POSIX acl)
+                                                  */
+#define STREAM_ACL_SOLARIS_ACE           1013    /* Solaris specific ace_t string representation from
+                                                  * from acl_totext (NFSv4 or ZFS acl)
+                                                  */
+#define STREAM_ACL_AFS_TEXT              1014    /* AFS specific string representation from pioctl */
+
+#define STREAM_ACL_AIX_AIXC              1015    /* AIX specific string representation from
+                                                  * aclx_printStr (POSIX acl)
+                                                  */
+#define STREAM_ACL_AIX_NFS4              1016    /* AIX specific string representation from
+                                                  * aclx_printStr (NFSv4 acl)
+                                                  */
+#define STREAM_XATTR_IRIX                1990    /* IRIX specific extended attributes */
+#define STREAM_XATTR_TRU64               1991    /* TRU64 specific extended attributes */
+#define STREAM_XATTR_AIX                 1992    /* AIX specific extended attributes */
+#define STREAM_XATTR_OPENBSD             1993    /* OpenBSD specific extended attributes */
+#define STREAM_XATTR_SOLARIS_SYS         1994    /* Solaris specific extensible attributes or
+                                                  * otherwise named extended system attributes.
+                                                  */
+#define STREAM_XATTR_SOLARIS             1995    /* Solaris specific extented attributes */
+#define STREAM_XATTR_DARWIN              1996    /* Darwin (OSX) specific extended attributes */
+#define STREAM_XATTR_FREEBSD             1997    /* FreeBSD specific extended attributes */
+#define STREAM_XATTR_LINUX               1998    /* Linux specific extended attributes */
+#define STREAM_XATTR_NETBSD              1999    /* NetBSD specific extended attributes */
+
+#endif /* __BSTREAMS_H */