X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fdird%2Fdird_conf.h;h=58eb7e0058c40d551117504e6651fe5fb3a1ae0e;hb=9f9219844777d0ffa3182869d0d2a778e51984ef;hp=869343b245bd8bf6da8ccc15c5d9387dc5d2a21b;hpb=13bba8315847b06f69a9e6f2768a5bfb0d5ebbb2;p=bacula%2Fbacula diff --git a/bacula/src/dird/dird_conf.h b/bacula/src/dird/dird_conf.h index 869343b245..58eb7e0058 100644 --- a/bacula/src/dird/dird_conf.h +++ b/bacula/src/dird/dird_conf.h @@ -6,7 +6,7 @@ * Version $Id$ */ /* - Copyright (C) 2000-2003 2002 Kern Sibbald and John Walker + Copyright (C) 2000-2004 Kern Sibbald and John Walker This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -30,31 +30,34 @@ /* * Resource codes -- they must be sequential for indexing */ -#define R_FIRST 1001 - -#define R_DIRECTOR 1001 -#define R_CLIENT 1002 -#define R_JOB 1003 -#define R_STORAGE 1004 -#define R_CATALOG 1005 -#define R_SCHEDULE 1006 -#define R_FILESET 1007 -#define R_GROUP 1008 -#define R_POOL 1009 -#define R_MSGS 1010 -#define R_COUNTER 1011 -#define R_CONSOLE 1012 - -#define R_LAST R_CONSOLE +enum { + R_DIRECTOR = 1001, + R_CLIENT, + R_JOB, + R_STORAGE, + R_CATALOG, + R_SCHEDULE, + R_FILESET, + R_POOL, + R_MSGS, + R_COUNTER, + R_CONSOLE, + R_JOBDEFS, + R_FIRST = R_DIRECTOR, + R_LAST = R_JOBDEFS /* keep this updated */ +}; + /* * Some resource attributes */ -#define R_NAME 1020 -#define R_ADDRESS 1021 -#define R_PASSWORD 1022 -#define R_TYPE 1023 -#define R_BACKUP 1024 +enum { + R_NAME = 1020, + R_ADDRESS, + R_PASSWORD, + R_TYPE, + R_BACKUP +}; /* Used for certain KeyWord tables */ @@ -105,6 +108,23 @@ struct DIRRES { utime_t SDConnectTimeout; /* timeout in seconds */ }; + +/* + * Console ACL positions + */ +enum { + Job_ACL = 0, + Client_ACL, + Storage_ACL, + Schedule_ACL, + Run_ACL, + Pool_ACL, + Command_ACL, + FileSet_ACL, + Catalog_ACL, + Num_ACL /* keep last */ +}; + /* * Console Resource */ @@ -112,6 +132,7 @@ struct CONRES { RES hdr; char *password; /* UA server password */ int enable_ssl; /* Use SSL */ + alist *ACL_lists[Num_ACL]; /* pointers to ACLs */ }; @@ -146,7 +167,7 @@ struct CLIENT { char *password; CAT *catalog; /* Catalog resource */ uint32_t MaxConcurrentJobs; /* Maximume concurrent jobs */ - semlock_t sem; /* client semaphore */ + uint32_t NumConcurrentJobs; /* number of concurrent jobs running */ int enable_ssl; /* Use SSL */ }; @@ -165,70 +186,78 @@ struct STORE { char *dev_name; int autochanger; /* set if autochanger */ uint32_t MaxConcurrentJobs; /* Maximume concurrent jobs */ - semlock_t sem; /* storage semaphore */ + uint32_t NumConcurrentJobs; /* number of concurrent jobs running */ int enable_ssl; /* Use SSL */ }; /* * Job Resource - * */ struct JOB { RES hdr; int JobType; /* job type (backup, verify, restore */ int level; /* default backup/verify level */ + int Priority; /* Job priority */ int RestoreJobId; /* What -- JobId to restore */ char *RestoreWhere; /* Where on disk to restore -- directory */ char *RestoreBootstrap; /* Bootstrap file */ char *RunBeforeJob; /* Run program before Job */ char *RunAfterJob; /* Run program after Job */ + char *RunAfterFailedJob; /* Run program after Job that errs */ + char *ClientRunBeforeJob; /* Run client program before Job */ + char *ClientRunAfterJob; /* Run client program after Job */ char *WriteBootstrap; /* Where to write bootstrap Job updates */ int replace; /* How (overwrite, ..) */ utime_t MaxRunTime; /* max run time in seconds */ + utime_t MaxWaitTime; /* max blocking time in seconds */ utime_t MaxStartDelay; /* max start delay in seconds */ int PrefixLinks; /* prefix soft links with Where path */ int PruneJobs; /* Force pruning of Jobs */ int PruneFiles; /* Force pruning of Files */ int PruneVolumes; /* Force pruning of Volumes */ int SpoolAttributes; /* Set to spool attributes in SD */ + int spool_data; /* Set to spool data in SD */ uint32_t MaxConcurrentJobs; /* Maximume concurrent jobs */ int RescheduleOnError; /* Set to reschedule on error */ int RescheduleTimes; /* Number of times to reschedule job */ utime_t RescheduleInterval; /* Reschedule interval */ + utime_t JobRetention; /* job retention period in seconds */ - MSGS *messages; /* How and where to send messages */ - SCHED *schedule; /* When -- Automatic schedule */ - CLIENT *client; /* Who to backup */ - FILESET *fileset; /* What to backup -- Fileset */ - STORE *storage; /* Where is device -- Storage daemon */ - POOL *pool; /* Where is media -- Media Pool */ - - semlock_t sem; /* Job semaphore */ + MSGS *messages; /* How and where to send messages */ + SCHED *schedule; /* When -- Automatic schedule */ + CLIENT *client; /* Who to backup */ + FILESET *fileset; /* What to backup -- Fileset */ + STORE *storage; /* Where is device -- Storage daemon */ + POOL *pool; /* Where is media -- Media Pool */ + POOL *full_pool; /* Pool for Full backups */ + POOL *inc_pool; /* Pool for Incremental backups */ + POOL *dif_pool; /* Pool for Differental backups */ + JOB *verify_job; /* Job name to verify */ + JOB *jobdefs; /* Job defaults */ + uint32_t NumConcurrentJobs; /* number of concurrent jobs running */ }; +#undef MAX_FOPTS #define MAX_FOPTS 30 -struct s_fopts_item { +/* File options structure */ +struct FOPTS { char opts[MAX_FOPTS]; /* options string */ - char *match; /* match string */ - char **base_list; /* list of base job names */ - int num_base; /* number of bases in list */ + alist regex; /* regex string(s) */ + alist wild; /* wild card strings */ + alist base; /* list of base names */ }; -typedef struct s_fopts_item FOPTS; /* This is either an include item or an exclude item */ -struct s_incexc_item { +struct INCEXE { FOPTS *current_opts; /* points to current options structure */ FOPTS **opts_list; /* options list */ int num_opts; /* number of options items */ - char **name_list; /* filename list */ - int max_names; /* malloc'ed size of name list */ - int num_names; /* number of names in the list */ + alist name_list; /* filename list -- holds char * */ }; -typedef struct s_incexc_item INCEXE; /* * FileSet Resource @@ -237,12 +266,12 @@ typedef struct s_incexc_item INCEXE; struct FILESET { RES hdr; - int finclude; /* Set if finclude/fexclude used */ + bool new_include; /* Set if new include used */ INCEXE **include_items; /* array of incexe structures */ int num_includes; /* number in array */ INCEXE **exclude_items; int num_excludes; - int have_MD5; /* set if MD5 initialized */ + bool have_MD5; /* set if MD5 initialized */ struct MD5Context md5c; /* MD5 of include/exclude */ char MD5[30]; /* base 64 representation of MD5 */ }; @@ -258,26 +287,18 @@ struct SCHED { RUN *run; }; -/* - * Group Resource (not used) - * - */ -struct GROUP { - RES hdr; -}; - /* * Counter Resource */ struct COUNTER { RES hdr; - int32_t MinValue; /* Minimum value */ - int32_t MaxValue; /* Maximum value */ - int32_t CurrentValue; /* Current value */ - CAT *WrapCounter; /* Wrap counter name */ - CAT *Catalog; /* Where to store */ - bool created; /* Created in DB */ + int32_t MinValue; /* Minimum value */ + int32_t MaxValue; /* Maximum value */ + int32_t CurrentValue; /* Current value */ + COUNTER *WrapCounter; /* Wrap counter name */ + CAT *Catalog; /* Where to store */ + bool created; /* Created in DB */ }; /* @@ -294,7 +315,9 @@ struct POOL { int catalog_files; /* maintain file entries in catalog */ int use_volume_once; /* write on volume only once */ int accept_any_volume; /* accept any volume */ - int recycle_oldest_volume; /* recycle oldest volume */ + int purge_oldest_volume; /* purge oldest volume */ + int recycle_oldest_volume; /* attempt to recycle oldest volume */ + int recycle_current_volume; /* attempt recycle of current volume */ uint32_t max_volumes; /* max number of volumes */ utime_t VolRetention; /* volume retention period in seconds */ utime_t VolUseDuration; /* duration volume can be used */ @@ -318,7 +341,6 @@ union URES { JOB res_job; FILESET res_fs; SCHED res_sch; - GROUP res_group; POOL res_pool; MSGS res_msgs; COUNTER res_counter; @@ -331,8 +353,14 @@ union URES { struct RUN { RUN *next; /* points to next run record */ int level; /* level override */ + int Priority; /* priority override */ int job_type; + bool spool_data; /* Data spooling override */ + bool spool_data_set; /* Data spooling override given */ POOL *pool; /* Pool override */ + POOL *full_pool; /* Pool override */ + POOL *inc_pool; /* Pool override */ + POOL *dif_pool; /* Pool override */ STORE *storage; /* Storage override */ MSGS *msgs; /* Messages override */ char *since; @@ -344,5 +372,6 @@ struct RUN { char mday[nbytes_for_bits(31)]; /* bit set for each day of month */ char month[nbytes_for_bits(12)]; /* bit set for each month */ char wday[nbytes_for_bits(7)]; /* bit set for each day of the week */ - char wpos[nbytes_for_bits(5)]; /* week position */ + char wom[nbytes_for_bits(5)]; /* week of month */ + char woy[nbytes_for_bits(54)]; /* week of year */ };