X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fdird%2Fdird_conf.h;h=cf82a7ee8a78118ab8baa1a34ee5213dad4e573c;hb=048853078b8aefb9a59a7fc981c0c1c259d849cb;hp=425db2216f469e8b3fb2694335dce0eef68f3059;hpb=eb326beecb6fc8803ab73e6395c68c5a29ac8cc2;p=bacula%2Fbacula diff --git a/bacula/src/dird/dird_conf.h b/bacula/src/dird/dird_conf.h index 425db2216f..cf82a7ee8a 100644 --- a/bacula/src/dird/dird_conf.h +++ b/bacula/src/dird/dird_conf.h @@ -1,7 +1,7 @@ /* Bacula® - The Network Backup Solution - Copyright (C) 2000-2007 Free Software Foundation Europe e.V. + 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. @@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - Bacula® is a registered trademark of John Walker. + 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. @@ -30,7 +30,6 @@ * * Kern Sibbald, Feb MM * - * Version $Id$ */ /* NOTE: #includes at the end of this file */ @@ -72,20 +71,20 @@ enum { /* Used for certain KeyWord tables */ struct s_kw { const char *name; - int token; + uint32_t token; }; /* Job Level keyword structure */ struct s_jl { - const char *level_name; /* level keyword */ - int level; /* level */ - int job_type; /* JobType permitting this level */ + const char *level_name; /* level keyword */ + int32_t level; /* level */ + int32_t job_type; /* JobType permitting this level */ }; /* Job Type keyword structure */ struct s_jt { const char *type_name; - int job_type; + int32_t job_type; }; /* Definition of the contents of each Resource */ @@ -106,14 +105,17 @@ class DIRRES { public: RES hdr; dlist *DIRaddrs; + dlist *DIRsrc_addr; /* address to source connections from */ char *password; /* Password for UA access */ char *query_file; /* SQL query file */ char *working_directory; /* WorkingDirectory */ const char *scripts_directory; /* ScriptsDirectory */ + const char *plugin_directory; /* Plugin Directory */ char *pid_directory; /* PidDirectory */ char *subsys_directory; /* SubsysDirectory */ MSGS *messages; /* Daemon message handler */ uint32_t MaxConcurrentJobs; /* Max concurrent jobs for whole director */ + uint32_t MaxConsoleConnect; /* Max concurrent console session */ utime_t FDConnectTimeout; /* timeout for connect in seconds */ utime_t SDConnectTimeout; /* timeout in seconds */ utime_t heartbeat_interval; /* Interval to send heartbeats */ @@ -124,10 +126,12 @@ public: char *tls_dhfile; /* TLS Diffie-Hellman Parameters */ alist *tls_allowed_cns; /* TLS Allowed Clients */ TLS_CONTEXT *tls_ctx; /* Shared TLS Context */ + utime_t stats_retention; /* Stats retention period in seconds */ + bool tls_authenticate; /* Authenticated with TLS */ bool tls_enable; /* Enable TLS */ bool tls_require; /* Require TLS */ bool tls_verify_peer; /* TLS Verify Client Certificate */ - + char *verid; /* Custom Id to print in version command */ /* Methods */ char *name() const; }; @@ -147,10 +151,10 @@ public: RES hdr; bool found; /* found with SD */ - int num_writers; /* number of writers */ - int max_writers; /* = 1 for files */ - int reserved; /* number of reserves */ - int num_drives; /* for autochanger */ + int32_t num_writers; /* number of writers */ + int32_t max_writers; /* = 1 for files */ + int32_t reserved; /* number of reserves */ + int32_t num_drives; /* for autochanger */ bool autochanger; /* set if device is autochanger */ bool open; /* drive open */ bool append; /* in append mode */ @@ -183,6 +187,7 @@ enum { FileSet_ACL, Catalog_ACL, Where_ACL, + PluginOptions_ACL, Num_ACL /* keep last */ }; @@ -201,6 +206,7 @@ public: char *tls_dhfile; /* TLS Diffie-Hellman Parameters */ alist *tls_allowed_cns; /* TLS Allowed Clients */ TLS_CONTEXT *tls_ctx; /* Shared TLS Context */ + bool tls_authenticate; /* Authenticated with TLS */ bool tls_enable; /* Enable TLS */ bool tls_require; /* Require TLS */ bool tls_verify_peer; /* TLS Verify Client Certificate */ @@ -220,16 +226,18 @@ class CAT { public: RES hdr; - int db_port; /* Port */ + uint32_t db_port; /* Port */ char *db_address; /* host name for remote access */ char *db_socket; /* Socket for local access */ char *db_password; char *db_user; char *db_name; - int mult_db_connections; /* set if multiple connections wanted */ + char *db_driver; /* Select appropriate driver */ + uint32_t mult_db_connections; /* set if multiple connections wanted */ /* Methods */ char *name() const; + char *display(POOLMEM *dst); /* Get catalog information */ }; inline char *CAT::name() const { return hdr.name; } @@ -243,7 +251,7 @@ class CLIENT { public: RES hdr; - int FDport; /* Where File daemon listens */ + uint32_t FDport; /* Where File daemon listens */ utime_t FileRetention; /* file retention period in seconds */ utime_t JobRetention; /* job retention period in seconds */ utime_t heartbeat_interval; /* Interval to send heartbeats */ @@ -258,6 +266,7 @@ public: char *tls_keyfile; /* TLS Client Key File */ alist *tls_allowed_cns; /* TLS Allowed Clients */ TLS_CONTEXT *tls_ctx; /* Shared TLS Context */ + bool tls_authenticate; /* Authenticated with TLS */ bool tls_enable; /* Enable TLS */ bool tls_require; /* Require TLS */ bool AutoPrune; /* Do automatic pruning? */ @@ -277,26 +286,29 @@ class STORE { public: RES hdr; - int SDport; /* port where Directors connect */ - int SDDport; /* data port for File daemon */ + uint32_t SDport; /* port where Directors connect */ + uint32_t SDDport; /* data port for File daemon */ char *address; char *password; char *media_type; alist *device; /* Alternate devices for this Storage */ uint32_t MaxConcurrentJobs; /* Maximume concurrent jobs */ uint32_t NumConcurrentJobs; /* number of concurrent jobs running */ + uint32_t NumConcurrentReadJobs; /* number of jobs reading */ char *tls_ca_certfile; /* TLS CA Certificate File */ char *tls_ca_certdir; /* TLS CA Certificate Directory */ char *tls_certfile; /* TLS Client Certificate File */ char *tls_keyfile; /* TLS Client Key File */ TLS_CONTEXT *tls_ctx; /* Shared TLS Context */ + bool tls_authenticate; /* Authenticated with TLS */ bool tls_enable; /* Enable TLS */ bool tls_require; /* Require TLS */ bool enabled; /* Set if device is enabled */ bool autochanger; /* set if autochanger */ + bool AllowCompress; /* set if this Storage should allow jobs to enable compression */ int64_t StorageId; /* Set from Storage DB record */ utime_t heartbeat_interval; /* Interval to send heartbeats */ - int drives; /* number of drives in autochanger */ + uint32_t drives; /* number of drives in autochanger */ /* Methods */ char *dev_name() const; @@ -354,45 +366,41 @@ class JOB { public: RES hdr; - int JobType; /* job type (backup, verify, restore */ - int JobLevel; /* default backup/verify level */ - int Priority; /* Job priority */ - int RestoreJobId; /* What -- JobId to restore */ + uint32_t JobType; /* job type (backup, verify, restore */ + uint32_t JobLevel; /* default backup/verify level */ + int32_t Priority; /* Job priority */ + uint32_t RestoreJobId; /* What -- JobId to restore */ + int32_t RescheduleTimes; /* Number of times to reschedule job */ + uint32_t replace; /* How (overwrite, ..) */ + uint32_t selection_type; + char *RestoreWhere; /* Where on disk to restore -- directory */ char *RegexWhere; /* RegexWhere option */ char *strip_prefix; /* remove prefix from filename */ char *add_prefix; /* add prefix to filename */ char *add_suffix; /* add suffix to filename -- .old */ - bool where_use_regexp; /* true if RestoreWhere is a BREGEXP */ char *RestoreBootstrap; /* Bootstrap file */ - alist *RunScripts; /* Run {client} program {after|before} Job */ + char *PluginOptions; /* Options to pass to plugin */ union { char *WriteBootstrap; /* Where to write bootstrap Job updates */ char *WriteVerifyList; /* List of changed files */ }; - int replace; /* How (overwrite, ..) */ utime_t MaxRunTime; /* max run time in seconds */ utime_t MaxWaitTime; /* max blocking time in seconds */ - utime_t FullMaxWaitTime; /* Max Full job wait time */ - utime_t DiffMaxWaitTime; /* Max Differential job wait time */ - utime_t IncMaxWaitTime; /* Max Incremental job wait time */ + utime_t FullMaxRunTime; /* Max Full job run time */ + utime_t DiffMaxRunTime; /* Max Differential job run time */ + utime_t IncMaxRunTime; /* Max Incremental job run time */ utime_t MaxStartDelay; /* max start delay in seconds */ + utime_t MaxRunSchedTime; /* max run time in seconds from Scheduled time*/ utime_t RescheduleInterval; /* Reschedule interval */ - utime_t JobRetention; /* job retention period in seconds */ + utime_t MaxFullInterval; /* Maximum time interval between Fulls */ + utime_t MaxDiffInterval; /* Maximum time interval between Diffs */ + utime_t DuplicateJobProximity; /* Permitted time between duplicicates */ + int64_t spool_size; /* Size of spool file for this job */ uint32_t MaxConcurrentJobs; /* Maximum concurrent jobs */ - int RescheduleTimes; /* Number of times to reschedule job */ - bool RescheduleOnError; /* Set to reschedule on error */ - bool PrefixLinks; /* prefix soft links with Where path */ - bool PruneJobs; /* Force pruning of Jobs */ - bool PruneFiles; /* Force pruning of Files */ - bool PruneVolumes; /* Force pruning of Volumes */ - bool SpoolAttributes; /* Set to spool attributes in SD */ - bool spool_data; /* Set to spool data in SD */ - bool rerun_failed_levels; /* Upgrade to rerun failed levels */ - bool PreferMountedVolumes; /* Prefer vols mounted rather than new one */ - bool write_part_after_job; /* Set to write part after job in SD */ - bool enabled; /* Set if job enabled */ - + uint32_t NumConcurrentJobs; /* number of concurrent jobs running */ + bool allow_mixed_priority; /* Allow jobs with higher priority concurrently with this */ + MSGS *messages; /* How and where to send messages */ SCHED *schedule; /* When -- Automatic schedule */ CLIENT *client; /* Who to backup */ @@ -403,13 +411,32 @@ public: POOL *inc_pool; /* Pool for Incremental backups */ POOL *diff_pool; /* Pool for Differental backups */ char *selection_pattern; - int selection_type; union { - JOB *verify_job; /* Job name to verify */ + JOB *verify_job; /* Job name to verify */ }; JOB *jobdefs; /* Job defaults */ alist *run_cmds; /* Run commands */ - uint32_t NumConcurrentJobs; /* number of concurrent jobs running */ + alist *RunScripts; /* Run {client} program {after|before} Job */ + + bool where_use_regexp; /* true if RestoreWhere is a BREGEXP */ + bool RescheduleOnError; /* Set to reschedule on error */ + bool PrefixLinks; /* prefix soft links with Where path */ + bool PruneJobs; /* Force pruning of Jobs */ + bool PruneFiles; /* Force pruning of Files */ + bool PruneVolumes; /* Force pruning of Volumes */ + bool SpoolAttributes; /* Set to spool attributes in SD */ + bool spool_data; /* Set to spool data in SD */ + bool rerun_failed_levels; /* Upgrade to rerun failed levels */ + bool PreferMountedVolumes; /* Prefer vols mounted rather than new one */ + bool write_part_after_job; /* Set to write part after job in SD */ + bool enabled; /* Set if job enabled */ + bool accurate; /* Set if it is an accurate backup job */ + bool AllowDuplicateJobs; /* Allow duplicate jobs */ + bool AllowHigherDuplicates; /* Permit Higher Level */ + bool CancelLowerLevelDuplicates; /* Cancel lower level backup jobs */ + bool CancelQueuedDuplicates; /* Cancel queued jobs */ + bool CancelRunningDuplicates; /* Cancel Running jobs */ + alist *base; /* Base jobs */ /* Methods */ char *name() const; @@ -418,7 +445,7 @@ public: inline char *JOB::name() const { return hdr.name; } #undef MAX_FOPTS -#define MAX_FOPTS 34 +#define MAX_FOPTS 40 /* File options structure */ struct FOPTS { @@ -435,6 +462,7 @@ struct FOPTS { alist drivetype; /* drive type limitation */ char *reader; /* reader program */ char *writer; /* writer program */ + char *plugin; /* plugin program */ }; @@ -442,8 +470,10 @@ struct FOPTS { struct INCEXE { FOPTS *current_opts; /* points to current options structure */ FOPTS **opts_list; /* options list */ - int num_opts; /* number of options items */ + int32_t num_opts; /* number of options items */ alist name_list; /* filename list -- holds char * */ + alist plugin_list; /* filename list for plugins */ + char *ignoredir; /* ignoredir string */ }; /* @@ -456,9 +486,9 @@ public: bool new_include; /* Set if new include used */ INCEXE **include_items; /* array of incexe structures */ - int num_includes; /* number in array */ + int32_t num_includes; /* number in array */ INCEXE **exclude_items; - int num_excludes; + int32_t num_excludes; bool have_MD5; /* set if MD5 initialized */ struct MD5Context md5c; /* MD5 of include/exclude */ char MD5[30]; /* base 64 representation of MD5 */ @@ -532,7 +562,14 @@ public: bool recycle_current_volume; /* attempt recycle of current volume */ bool AutoPrune; /* default for pool auto prune */ bool Recycle; /* default for media recycle yes/no */ + uint32_t action_on_purge; /* action on purge, e.g. truncate the disk volume */ POOL *RecyclePool; /* RecyclePool destination when media is purged */ + POOL *ScratchPool; /* ScratchPool source when requesting media */ + alist *CopyPool; /* List of copy pools */ + CAT *catalog; /* Catalog to be used */ + utime_t FileRetention; /* file retention period in seconds */ + utime_t JobRetention; /* job retention period in seconds */ + /* Methods */ char *name() const; }; @@ -568,9 +605,9 @@ union URES { class RUN { public: RUN *next; /* points to next run record */ - int level; /* level override */ - int Priority; /* priority override */ - int job_type; + uint32_t level; /* level override */ + int32_t Priority; /* priority override */ + uint32_t job_type; bool spool_data; /* Data spooling override */ bool spool_data_set; /* Data spooling override given */ bool write_part_after_job; /* Write part after job override */ @@ -583,8 +620,8 @@ public: STORE *storage; /* Storage override */ MSGS *msgs; /* Messages override */ char *since; - int level_no; - int minute; /* minute to run job */ + uint32_t level_no; + uint32_t minute; /* minute to run job */ time_t last_run; /* last time run */ time_t next_run; /* next time to run */ char hour[nbytes_for_bits(24)]; /* bit set for each hour */