/*
Bacula(R) - The Network Backup Solution
- Copyright (C) 2000-2015 Kern Sibbald
- Copyright (C) 2000-2014 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-2017 Kern Sibbald
The original author of Bacula is Kern Sibbald, with contributions
from many others, a complete list can be found in the file AUTHORS.
Public License, v3.0 ("AGPLv3") and some additional permissions and
terms pursuant to its AGPLv3 Section 7.
- This notice must be preserved when any source code is
+ This notice must be preserved when any source code is
conveyed and/or propagated.
Bacula(R) is a registered trademark of Kern Sibbald.
* Director specific configuration and defines
*
* Kern Sibbald, Feb MM
- *
*/
/* NOTE: #includes at the end of this file */
R_JOBDEFS,
R_DEVICE, /* This is the real last device class */
+ R_AUTOCHANGER, /* Alias for R_STORAGE after R_LAST */
R_FIRST = R_DIRECTOR,
R_LAST = R_DEVICE /* keep this updated */
};
alist *tls_allowed_cns; /* TLS Allowed Clients */
TLS_CONTEXT *tls_ctx; /* Shared TLS Context */
utime_t stats_retention; /* Stats retention period in seconds */
+ bool comm_compression; /* Enable comm line compression */
bool tls_authenticate; /* Authenticated with TLS */
bool tls_enable; /* Enable TLS */
bool tls_require; /* Require TLS */
Catalog_ACL,
Where_ACL,
PluginOptions_ACL,
- Num_ACL /* keep last */
+ RestoreClient_ACL,
+ BackupClient_ACL,
+ Directory_ACL, /* List of directories that can be accessed in the restore tree */
+ Num_ACL /* keep last */
};
/*
inline char *CAT::name() const { return hdr.name; }
+class CLIENT_GLOBALS {
+public:
+ dlink link; /* double link */
+ const char *name; /* resource name */
+ int32_t NumConcurrentJobs; /* number of concurrent jobs running */
+ char *SetIPaddress; /* address from SetIP command */
+ bool enabled; /* Enabled/disabled */
+};
/*
* Client Resource
*/
class CLIENT {
public:
- RES hdr;
-
+ RES hdr;
+ CLIENT_GLOBALS *globals; /* global variables */
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 SnapRetention; /* Snapshot retention period in seconds */
utime_t heartbeat_interval; /* Interval to send heartbeats */
- char *address;
+ char *client_address; /* Client address from .conf file */
char *fd_storage_address; /* Storage address to use from FD side */
char *password;
CAT *catalog; /* Catalog resource */
int32_t MaxConcurrentJobs; /* Maximum concurrent jobs */
- int32_t NumConcurrentJobs; /* number of concurrent jobs running */
char *tls_ca_certfile; /* TLS CA Certificate File */
char *tls_ca_certdir; /* TLS CA Certificate Directory */
char *tls_certfile; /* TLS Client Certificate File */
bool tls_authenticate; /* Authenticated with TLS */
bool tls_enable; /* Enable TLS */
bool tls_require; /* Require TLS */
- bool enabled; /* Set if client enabled */
+ bool Enabled; /* Set if client enabled */
bool AutoPrune; /* Do automatic pruning? */
bool sd_calls_client; /* SD calls the client */
int64_t max_bandwidth; /* Limit speed on this client */
/* Methods */
char *name() const;
+ void create_client_globals();
+ int32_t getNumConcurrentJobs();
+ void setNumConcurrentJobs(int32_t num);
+ char *address();
+ void setAddress(char *addr);
+ bool is_enabled();
+ void setEnabled(bool val);
};
inline char *CLIENT::name() const { return hdr.name; }
+class STORE_GLOBALS {
+public:
+ dlink link; /* double link */
+ const char *name; /* resource name */
+ int32_t NumConcurrentJobs; /* number of concurrent jobs running */
+ int32_t NumConcurrentReadJobs; /* number of concurrent read jobs running */
+ bool enabled; /* Enabled/disabled */
+};
+
+
/*
* Store Resource
*
class STORE {
public:
RES hdr;
-
+ STORE_GLOBALS *globals; /* global variables */
uint32_t SDport; /* port where Directors connect */
uint32_t SDDport; /* data port for File daemon */
char *address;
alist *device; /* Alternate devices for this Storage */
int32_t MaxConcurrentJobs; /* Maximum concurrent jobs */
int32_t MaxConcurrentReadJobs; /* Maximum concurrent jobs reading */
- int32_t NumConcurrentJobs; /* number of concurrent jobs running */
- int32_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 */
bool tls_authenticate; /* Authenticated with TLS */
bool tls_enable; /* Enable TLS */
bool tls_require; /* Require TLS */
- bool enabled; /* Set if device is enabled */
+ bool Enabled; /* Set if device is enabled */
bool AllowCompress; /* set if this Storage should allow jobs to enable compression */
bool autochanger; /* set if we are part of an autochanger */
+ POOLMEM *ac_group; /* Autochanger StorageId group */
+ STORE *changer; /* points to autochanger */
+ STORE *shared_storage; /* points to shared storage */
int64_t StorageId; /* Set from Storage DB record */
utime_t heartbeat_interval; /* Interval to send heartbeats */
uint32_t drives; /* number of drives in autochanger */
/* Methods */
char *dev_name() const;
char *name() const;
+ void create_store_globals();
+ int32_t getNumConcurrentJobs();
+ int32_t getNumConcurrentReadJobs();
+ void setNumConcurrentJobs(int32_t num);
+ void setNumConcurrentReadJobs(int32_t num);
+ bool is_enabled();
+ void setEnabled(bool val);
};
inline char *STORE::dev_name() const
pm_strcpy(store_source, where);
}
+class JOB_GLOBALS {
+public:
+ dlink link; /* double link */
+ const char *name; /* resource name */
+ int32_t NumConcurrentJobs; /* number of concurrent jobs running */
+ bool enabled; /* Enabled/disabled */
+};
/*
* Job Resource
class JOB {
public:
RES hdr;
-
+ JOB_GLOBALS *globals; /* global variables */
uint32_t JobType; /* job type (backup, verify, restore */
uint32_t JobLevel; /* default backup/verify level */
uint32_t RestoreJobId; /* What -- JobId to restore */
utime_t MaxRunSchedTime; /* max run time in seconds from Scheduled time*/
utime_t RescheduleInterval; /* Reschedule interval */
utime_t MaxFullInterval; /* Maximum time interval between Fulls */
+ utime_t MaxVirtualFullInterval; /* Maximum time interval between Virtual Fulls */
utime_t MaxDiffInterval; /* Maximum time interval between Diffs */
utime_t DuplicateJobProximity; /* Permitted time between duplicicates */
utime_t SnapRetention; /* Snapshot retention period in seconds */
int64_t spool_size; /* Size of spool file for this job */
int32_t MaxConcurrentJobs; /* Maximum concurrent jobs */
- int32_t NumConcurrentJobs; /* number of concurrent jobs running */
uint32_t MaxSpawnedJobs; /* Max Jobs that can be started by Migration/Copy */
+ uint32_t BackupsToKeep; /* Number of backups to keep in Virtual Full */
bool allow_mixed_priority; /* Allow jobs with higher priority concurrently with this */
MSGS *messages; /* How and where to send messages */
POOL *pool; /* Where is media -- Media Pool */
POOL *next_pool; /* Next Pool for Copy/Migrate/VirtualFull */
POOL *full_pool; /* Pool for Full backups */
+ POOL *vfull_pool; /* Pool for Virtual Full backups */
POOL *inc_pool; /* Pool for Incremental backups */
POOL *diff_pool; /* Pool for Differental backups */
char *selection_pattern;
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 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 CancelQueuedDuplicates; /* Cancel queued jobs */
bool CancelRunningDuplicates; /* Cancel Running jobs */
bool PurgeMigrateJob; /* Purges source job on completion */
- bool IgnoreDuplicateJobChecking; /* Set to ignore Duplicate Job Checking */
+ bool DeleteConsolidatedJobs; /* Delete or not consolidated Virtual Full jobs */
alist *base; /* Base jobs */
int64_t max_bandwidth; /* Speed limit on this job */
/* Methods */
char *name() const;
+ void create_job_globals();
+ int32_t getNumConcurrentJobs();
+ void setNumConcurrentJobs(int32_t num);
+ bool is_enabled();
+ void setEnabled(bool val);
};
inline char *JOB::name() const { return hdr.name; }
INC_KW_STRIPPATH,
INC_KW_HONOR_NODUMP,
INC_KW_XATTR,
+ INC_KW_DEDUP,
INC_KW_MAX /* Keep this last */
};
inline char *FILESET::name() const { return hdr.name; }
+class SCHED_GLOBALS {
+public:
+ dlink link; /* double link */
+ const char *name; /* resource name */
+ bool enabled; /* Enabled/disabled */
+};
+
/*
* Schedule Resource
- *
*/
class SCHED {
public:
RES hdr;
-
+ SCHED_GLOBALS *globals;
RUN *run;
- bool enabled; /* set if enabled */
+ bool Enabled; /* set if enabled */
+
/* Methods */
char *name() const;
+ void create_sched_globals();
+ bool is_enabled();
+ void setEnabled(bool val);
};
inline char *SCHED::name() const { return hdr.name; }
COUNTER *WrapCounter; /* Wrap counter name */
CAT *Catalog; /* Where to store */
bool created; /* Created in DB */
+
/* Methods */
char *name() const;
};
int32_t LabelType; /* Bacula/ANSI/IBM label type */
uint32_t max_volumes; /* max number of volumes */
utime_t VolRetention; /* volume retention period in seconds */
+ utime_t CacheRetention; /* cloud cache retention period in seconds */
utime_t VolUseDuration; /* duration volume can be used */
uint32_t MaxVolJobs; /* Maximum jobs on the Volume */
uint32_t MaxVolFiles; /* Maximum files on the Volume */
POOL *pool; /* Pool override */
POOL *next_pool; /* Next pool override */
POOL *full_pool; /* Pool override */
+ POOL *vfull_pool; /* Pool override */
POOL *inc_pool; /* Pool override */
POOL *diff_pool; /* Pool override */
STORE *storage; /* Storage override */
#define GetPoolResWithName(x) ((POOL *)GetResWithName(R_POOL, (x)))
#define GetStoreResWithName(x) ((STORE *)GetResWithName(R_STORAGE, (x)))
+#define GetSchedResWithName(x) ((SCHED *)GetResWithName(R_SCHEDULE, (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)))
void store_migtype(LEX *lc, RES_ITEM *item, int index, int pass);
void store_acl(LEX *lc, RES_ITEM *item, int index, int pass);
void store_ac_res(LEX *lc, RES_ITEM *item, int index, int pass);
+void store_device(LEX *lc, RES_ITEM *item, int index, int pass);
void store_actiononpurge(LEX *lc, RES_ITEM *item, int index, int pass);
void store_inc(LEX *lc, RES_ITEM *item, int index, int pass);
void store_regex(LEX *lc, RES_ITEM *item, int index, int pass);