X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fdird%2Fdird_conf.h;h=0d10339a8d480f7aa6b40c6a63e7f6e39209245a;hb=c47244310936864c0e9aaf1784a87c2436e58fd3;hp=2ba9f5afcc796318e577d70112ee9253401dc1d9;hpb=ba04dcc67cdf85fbec6f5fe1b6c7a86041f95e3a;p=bacula%2Fbacula diff --git a/bacula/src/dird/dird_conf.h b/bacula/src/dird/dird_conf.h index 2ba9f5afcc..0d10339a8d 100644 --- a/bacula/src/dird/dird_conf.h +++ b/bacula/src/dird/dird_conf.h @@ -1,14 +1,14 @@ /* Bacula® - The Network Backup Solution - Copyright (C) 2000-2007 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 @@ -72,20 +72,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 */ @@ -110,6 +110,7 @@ public: 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 */ @@ -124,6 +125,8 @@ 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 */ @@ -147,10 +150,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 +186,7 @@ enum { FileSet_ACL, Catalog_ACL, Where_ACL, + PluginOptions_ACL, Num_ACL /* keep last */ }; @@ -201,6 +205,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,13 +225,14 @@ 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; @@ -243,7 +249,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 +264,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 +284,28 @@ 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 */ 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,44 +363,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 */ + MSGS *messages; /* How and where to send messages */ SCHED *schedule; /* When -- Automatic schedule */ CLIENT *client; /* Who to backup */ @@ -402,13 +408,33 @@ 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 OptimizeJobScheduling; /* Set if we should optimize Job scheduling */ + bool stats_enabled; /* Keep job records in a table for long term statistics */ + bool accurate; /* Set if it is an accurate backup job */ + bool AllowDuplicateJobs; /* Allow duplicate jobs */ + bool AllowHigherDuplicates; /* Permit Higher Level */ + bool CancelQueuedDuplicates; /* Cancel queued jobs */ + bool CancelRunningDuplicates; /* Cancel Running jobs */ + /* Methods */ char *name() const; @@ -417,7 +443,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 { @@ -434,6 +460,8 @@ struct FOPTS { alist drivetype; /* drive type limitation */ char *reader; /* reader program */ char *writer; /* writer program */ + char *ignoredir; /* ignoredir string */ + char *plugin; /* plugin program */ }; @@ -441,8 +469,9 @@ 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 */ }; /* @@ -455,9 +484,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,6 +561,8 @@ public: bool AutoPrune; /* default for pool auto prune */ bool Recycle; /* default for media recycle yes/no */ POOL *RecyclePool; /* RecyclePool destination when media is purged */ + alist *CopyPool; /* List of copy pools */ + CAT *catalog; /* Catalog to be used */ /* Methods */ char *name() const; }; @@ -567,9 +598,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 */ @@ -582,8 +613,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 */ @@ -593,3 +624,10 @@ public: char wom[nbytes_for_bits(5)]; /* week of month */ char woy[nbytes_for_bits(54)]; /* week of year */ }; + +#define GetPoolResWithName(x) ((POOL *)GetResWithName(R_POOL, (x))) +#define GetStoreResWithName(x) ((STORE *)GetResWithName(R_STORAGE, (x))) +#define GetClientResWithName(x) ((CLIENT *)GetResWithName(R_CLIENT, (x))) +#define GetJobResWithName(x) ((JOB *)GetResWithName(R_JOB, (x))) +#define GetFileSetResWithName(x) ((FILESET *)GetResWithName(R_FILESET, (x))) +#define GetCatalogResWithName(x) ((CAT *)GetResWithName(R_CATALOG, (x)))