]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/baconfig.h
Add Jmsg7 and Jmsg8
[bacula/bacula] / bacula / src / baconfig.h
index c9ed17001bd204920de58b8fe37081d90f682692..6a7a69c6028937e3147512e0aeef2515eb92d2f6 100644 (file)
@@ -6,7 +6,7 @@
    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 two of the GNU General Public
+   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.
 
@@ -15,7 +15,7 @@
    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 General Public License
+   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.
@@ -58,6 +58,8 @@
 #define ioctl_req_t int
 #endif
 
+#define MANUAL_AUTH_URL "http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi.html#SECTION00260000000000000000"
+
 #ifdef PROTOTYPES
 # define __PROTO(p)     p
 #else
@@ -80,8 +82,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)
@@ -166,6 +169,9 @@ void InitWinAPIWrapper();
 /* Maximum Name length including EOS */
 #define MAX_NAME_LENGTH 128
 
+/* Maximum escaped Name lenght including EOS 2*MAX_NAME_LENGTH+1 */
+#define MAX_ESCAPE_NAME_LENGTH 257
+
 /* Maximume number of user entered command args */
 #define MAX_CMD_ARGS 30
 
@@ -198,156 +204,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    /* Special 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_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
  */
@@ -361,7 +217,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))
@@ -559,6 +415,8 @@ void b_memset(const char *file, int line, void *mem, int val, size_t num);
 #define Jmsg4(jcr, typ, lvl, msg, a1, a2, a3, a4) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2, a3, a4)
 #define Jmsg5(jcr, typ, lvl, msg, a1, a2, a3, a4, a5) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2, a3, a4, a5)
 #define Jmsg6(jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6)
+#define Jmsg7(jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6, a7) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6, a7)
+#define Jmsg8(jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6, a7, a8) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6, a7, a8)
 
 /** Queued Job Error Messages that are delivered according to the message resource */
 #define Qmsg0(jcr, typ, lvl, msg)             q_msg(__FILE__, __LINE__, jcr, typ, lvl, msg)
@@ -653,47 +511,56 @@ int  m_msg(const char *file, int line, POOLMEM *&pool_buf, const char *fmt, ...)
  *               OS Dependent defines
  * ============================================================= 
  */
-
-#ifndef HAVE_FSEEKO
-/* Bad news. This OS cannot handle 64 bit fseeks and ftells */
-#define fseeko fseek
-#define ftello ftell
-#endif
-
 #if defined (__digital__) && defined (__unix__)
 /* Tru64 - it does have fseeko and ftello , but since ftell/fseek are also 64 bit */
 /* take this 'shortcut' */
 #define fseeko fseek
 #define ftello ftell
+#else
+#ifndef HAVE_FSEEKO
+/* Bad news. This OS cannot handle 64 bit fseeks and ftells */
+#define fseeko fseek
+#define ftello ftell
+#endif
 #endif
-
 
 #ifdef HAVE_SUN_OS
-   /**
-    * On Solaris 2.5, threads are not timesliced by default, so we need to
-    * explictly increase the conncurrency level.
-    */
+/*
+ * On Solaris 2.5/2.6/7 and 8, threads are not timesliced by default,
+ * so we need to explictly increase the conncurrency level.
+ */
+#ifdef USE_THR_SETCONCURRENCY
 #include <thread.h>
 #define set_thread_concurrency(x)  thr_setconcurrency(x)
 extern int thr_setconcurrency(int);
 #define SunOS 1
-
 #else
+#define set_thread_concurrency(x)
+#endif
 
-
-/** Not needed on most systems */
+#else
+/*
+ * Not needed on most systems
+ */
 #define set_thread_concurrency(x)
 
 #endif
 
-#if defined(HAVE_DARWIN_OS) || defined(HAVE_OSF1_OS)
+#ifdef HAVE_DARWIN_OS
 /* Apparently someone forgot to wrap getdomainname as a C function */
-extern "C" int getdomainname(char *name, int len);
-#endif
-
-
+#ifdef  __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+int getdomainname(char *name, int len);
+#ifdef  __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* HAVE_DARWIN_OS */
 
 #if defined(HAVE_WIN32)
+/*
+ *   Windows
+ */
 #define DEFAULT_CONFIGDIR "C:\\Documents and Settings\\All Users\\Application Data\\Bacula"
 #define PathSeparator '\\'
 
@@ -705,6 +572,9 @@ extern void pause_msg(const char *file, const char *func, int line, const char *
 #define pause(msg) if (debug_level) pause_msg(__FILE__, __func__, __LINE__, (msg))
 
 #else
+/*
+ *   Unix/Linix
+ */
 #define PathSeparator '/'
 /* Define Winsock functions if we aren't on Windows */
 
@@ -728,16 +598,28 @@ extern int h_errno;
  * the problem is no system headers declares the prototypes for these functions
  * this is done below
  */
-extern "C" int getdomainname(char *name, int namelen);
-extern "C" int setdomainname(char *name, int namelen);
+#ifdef  __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+int getdomainname(char *name, int namelen);
+int setdomainname(char *name, int namelen);
+#ifdef  __cplusplus
+}
+#endif /* __cplusplus */
 #endif /* HAVE_HPUX_OS */
 
 
 #ifdef HAVE_OSF1_OS
-extern "C" int fchdir(int filedes);
-extern "C" long gethostid(void);
-extern "C" int mknod(const char *path, int mode, dev_t device );
-#endif
+#ifdef  __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+int fchdir(int filedes);
+long gethostid(void);
+int getdomainname(char *name, int len);
+#ifdef  __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* HAVE_OSF1_OS */
 
 
 /** Disabled because it breaks internationalisation...