-/*
- * Bacula JCR Structure definition for Daemons and the Library
- * This definition consists of a "Global" definition common
- * to all daemons and used by the library routines, and a
- * daemon specific part that is enabled with #defines.
- *
- * Kern Sibbald, Nov MM
- *
- * Version $Id$
- */
/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-2006 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-2008 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 two of the GNU General Public
- License as published by the Free Software Foundation plus additions
- that are listed in the file LICENSE.
+ 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
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
*/
+/*
+ * Bacula JCR Structure definition for Daemons and the Library
+ * This definition consists of a "Global" definition common
+ * to all daemons and used by the library routines, and a
+ * daemon specific part that is enabled with #defines.
+ *
+ * Kern Sibbald, Nov MM
+ *
+ * Version $Id$
+ */
#ifndef __JCR_H_
#define JS_WaitMaxJobs 'd' /* Waiting for maximum jobs */
#define JS_WaitStartTime 't' /* Waiting for start time */
#define JS_WaitPriority 'p' /* Waiting for higher priority jobs to finish */
+#define JS_AttrDespooling 'a' /* SD despooling attributes */
+#define JS_AttrInserting 'i' /* Doing batch insert file records */
+#define JS_DataDespooling 'l' /* Doing data despooling */
+#define JS_DataCommitting 'L' /* Committing data (last despool) */
/* Migration selection types */
enum {
struct FF_PKT;
struct B_DB;
struct ATTR_DBR;
+struct Plugin;
+struct save_pkt;
+
+#ifdef FILE_DAEMON
+class htable;
+struct TCHDB;
+
+struct CRYPTO_CTX {
+ bool pki_sign; /* Enable PKI Signatures? */
+ bool pki_encrypt; /* Enable PKI Encryption? */
+ DIGEST *digest; /* Last file's digest context */
+ X509_KEYPAIR *pki_keypair; /* Encryption key pair */
+ alist *pki_signers; /* Trusted Signers */
+ alist *pki_recipients; /* Trusted Recipients */
+ CRYPTO_SESSION *pki_session; /* PKE Public Keys + Symmetric Session Keys */
+ POOLMEM *pki_session_encoded; /* Cached DER-encoded copy of pki_session */
+ int32_t pki_session_encoded_size; /* Size of DER-encoded pki_session */
+ POOLMEM *crypto_buf; /* Encryption/Decryption buffer */
+};
+#endif
typedef void (JCR_free_HANDLER)(JCR *jcr);
MSGS *jcr_msgs; /* Copy of message resource -- actually used */
uint32_t ClientId; /* Client associated with Job */
char *where; /* prefix to restore files to */
+ char *RegexWhere; /* file relocation in restore */
+ alist *where_bregexp; /* BREGEXP alist for path manipulation */
int cached_pnl; /* cached path length */
POOLMEM *cached_path; /* cached path */
bool prefix_links; /* Prefix links with Where path */
bool cached_attribute; /* set if attribute is cached */
POOLMEM *attr; /* Attribute string from SD */
B_DB *db; /* database pointer */
+ B_DB *db_batch; /* database pointer for batch insert */
ATTR_DBR *ar; /* DB attribute record */
+ guid_list *id_list; /* User/group id to name list */
+ bool accurate; /* true if job is accurate */
+
+ void *plugin_ctx_list; /* list of contexts for plugins */
+ void *plugin_ctx; /* current plugin context */
+ Plugin *plugin; /* plugin instance */
+ save_pkt *plugin_sp; /* plugin save packet */
+ char *plugin_options; /* user set options for plugin */
/* Daemon specific part of JCR */
/* This should be empty in the library */
alist *wstorage; /* Write storage possibilities */
STORE *wstore; /* Selected write storage */
CLIENT *client; /* Client resource */
- POOL *pool; /* Pool resource */
+ POOL *pool; /* Pool resource = write for migration */
+ POOL *rpool; /* Read pool. Used only in migration */
POOL *full_pool; /* Full backup pool resource */
POOL *inc_pool; /* Incremental backup pool resource */
- POOL *diff_pool; /* Differential backup pool resource */
+ POOL *diff_pool; /* Differential backup pool resource */
bool run_pool_override;
bool run_full_pool_override;
bool run_inc_pool_override;
};
POOLMEM *client_uname; /* client uname */
POOLMEM *pool_source; /* Where pool came from */
+ POOLMEM *rpool_source; /* Where migrate read pool came from */
POOLMEM *rstore_source; /* Where read storage came from */
POOLMEM *wstore_source; /* Where write storage came from */
+ POOLMEM *catalog_source; /* Where catalog came from */
int replace; /* Replace option */
int NumVols; /* Number of Volume used in pool */
int reschedule_count; /* Number of times rescheduled */
+ int FDVersion; /* File daemon version number */
+ int64_t spool_size; /* Spool size for this job */
bool spool_data; /* Spool data in SD */
bool acquired_resource_locks; /* set if resource locks acquired */
bool term_wait_inited; /* Set when cond var inited */
bool needs_sd; /* set if SD needed by Job */
bool cloned; /* set if cloned */
bool unlink_bsr; /* Unlink bsr file created */
+ bool VSS; /* VSS used by FD */
+ bool Encrypt; /* Encryption used by FD */
+ bool stats_enabled; /* Keep all job records in a table for long term statistics */
#endif /* DIRECTOR_DAEMON */
uint32_t StartBlock;
uint32_t EndBlock;
pthread_t heartbeat_id; /* id of heartbeat thread */
- volatile BSOCK *hb_bsock; /* duped SD socket */
- volatile BSOCK *hb_dir_bsock; /* duped DIR socket */
+ BSOCK *hb_bsock; /* duped SD socket */
+ BSOCK *hb_dir_bsock; /* duped DIR socket */
alist *RunScripts; /* Commands to run before and after job */
- bool pki_sign; /* Enable PKI Signatures? */
- bool pki_encrypt; /* Enable PKI Encryption? */
- DIGEST *digest; /* Last file's digest context */
- X509_KEYPAIR *pki_keypair; /* Encryption key pair */
- alist *pki_signers; /* Trusted Signers */
- alist *pki_recipients; /* Trusted Recipients */
- CRYPTO_SESSION *pki_session; /* PKE Public Keys + Symmetric Session Keys */
- uint8_t *pki_session_encoded; /* Cached DER-encoded copy of pki_session */
- int32_t pki_session_encoded_size; /* Size of DER-encoded pki_session */
- POOLMEM *crypto_buf; /* Encryption/Decryption buffer */
- int32_t crypto_count; /* Count of bytes currently in crypto_buf */
- int32_t crypto_size; /* Total bytes in packet */
+ CRYPTO_CTX crypto; /* Crypto ctx */
DIRRES* director; /* Director resource */
- bool runscript_after; /* Don't run After Script twice */
+ bool VSS; /* VSS used by FD */
+#ifdef USE_TCHDB
+ TCHDB *file_list; /* Previous file list (accurate mode) */
+#else
+ htable *file_list; /* Previous file list (accurate mode) */
+#endif
#endif /* FILE_DAEMON */
/* Storage Daemon specific part of JCR */
JCR *next_dev; /* next JCR attached to device */
JCR *prev_dev; /* previous JCR attached to device */
+ char *dir_auth_key; /* Dir auth key */
pthread_cond_t job_start_wait; /* Wait for FD to start Job */
int type;
DCR *read_dcr; /* device context for reading */
POOLMEM *fileset_name; /* FileSet */
POOLMEM *fileset_md5; /* MD5 for FileSet */
VOL_LIST *VolList; /* list to read */
- int32_t NumVolumes; /* number of volumes used */
- int32_t CurVolume; /* current volume number */
+ int32_t NumWriteVolumes; /* number of volumes written */
+ int32_t NumReadVolumes; /* total number of volumes to read */
+ int32_t CurReadVolume; /* current read volume number */
int label_errors; /* count of label errors */
bool session_opened;
long Ticket; /* ticket for this job */
bool ignore_label_errors; /* ignore Volume label errors */
bool spool_attributes; /* set if spooling attributes */
bool no_attributes; /* set if no attributes wanted */
+ int64_t spool_size; /* Spool size for this job */
bool spool_data; /* set to spool data */
int CurVol; /* Current Volume count */
DIRRES* director; /* Director resource */