]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/dird_conf.h
Drop old semaphore and workq code
[bacula/bacula] / bacula / src / dird / dird_conf.h
index 4cd6fba0bf2fbc4b60a1a26c5f8ac4c8c928bef7..247610f1a5d5ac8a54a06f2c4a9783fa3bdee0f3 100644 (file)
 /*
  * 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_LAST                        R_COUNTER
+#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
 
 /*
  * Some resource attributes
  */
-#define R_NAME                        1020
-#define R_ADDRESS                     1021
-#define R_PASSWORD                    1022
-#define R_TYPE                        1023
-#define R_BACKUP                      1024
+#define R_NAME                1020
+#define R_ADDRESS             1021
+#define R_PASSWORD            1022
+#define R_TYPE                1023
+#define R_BACKUP              1024
 
 
 /* Used for certain KeyWord tables */
@@ -76,32 +77,65 @@ struct s_jt {
 };
 
 /* Definition of the contents of each Resource */
+/* Needed for forward references */
+struct SCHED;
+struct CLIENT;
+struct FILESET;
+struct POOL;
+struct RUN;
 
 /* 
  *   Director Resource  
  *
  */
-struct s_res_dir {
+struct DIRRES {
    RES   hdr;
    int   DIRport;                     /* where we listen -- UA port server port */
    char *DIRaddr;                     /* bind address */
    char *password;                    /* Password for UA access */
+   int enable_ssl;                    /* Use SSL for UA */
    char *query_file;                  /* SQL query file */
    char *working_directory;           /* WorkingDirectory */
    char *pid_directory;               /* PidDirectory */
    char *subsys_directory;            /* SubsysDirectory */
-   struct s_res_msgs *messages;       /* Daemon message handler */
+   int require_ssl;                   /* Require SSL for all connections */
+   MSGS *messages;                    /* Daemon message handler */
    uint32_t MaxConcurrentJobs;        /* Max concurrent jobs for whole director */
    utime_t FDConnectTimeout;          /* timeout for connect in seconds */
    utime_t SDConnectTimeout;          /* timeout in seconds */
 };
-typedef struct s_res_dir DIRRES;
+
+/* 
+ *    Console Resource
+ */
+struct CONRES {
+   RES   hdr;
+   char *password;                    /* UA server password */
+   int enable_ssl;                    /* Use SSL */
+};
+
+
+/*
+ *   Catalog Resource
+ *
+ */
+struct CAT {
+   RES   hdr;
+
+   int   db_port;                     /* Port -- not yet implemented */
+   char *db_address;                  /* host name for remote access */
+   char *db_socket;                   /* Socket for local access */
+   char *db_password;
+   char *db_user;
+   char *db_name;
+};
+
 
 /*
  *   Client Resource
  *
  */
-struct s_res_client {
+struct CLIENT {
    RES   hdr;
 
    int   FDport;                      /* Where File daemon listens */
@@ -110,17 +144,17 @@ struct s_res_client {
    utime_t JobRetention;              /* job retention period in seconds */
    char *address;
    char *password;
-   struct s_res_cat    *catalog;       /* Catalog resource */
+   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 */
 };
-typedef struct s_res_client CLIENT;
 
 /*
  *   Store Resource
  * 
  */
-struct s_res_store {
+struct STORE {
    RES   hdr;
 
    int   SDport;                      /* port where Directors connect */
@@ -131,35 +165,21 @@ struct s_res_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 */
 };
-typedef struct s_res_store STORE;
 
-/*
- *   Catalog Resource
- *
- */
-struct s_res_cat {
-   RES   hdr;
-
-   int   db_port;                     /* Port -- not yet implemented */
-   char *db_address;                  /* host name for remote access */
-   char *db_socket;                   /* Socket for local access */
-   char *db_password;
-   char *db_user;
-   char *db_name;
-};
-typedef struct s_res_cat CAT;
 
 /*
  *   Job Resource
  *
  */
-struct s_res_job {
+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 */
@@ -175,45 +195,42 @@ struct s_res_job {
    int PruneVolumes;                  /* Force pruning of Volumes */
    int SpoolAttributes;               /* Set to spool attributes 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 */
   
-   struct s_res_msgs   *messages;     /* How and where to send messages */
-   struct s_res_sch    *schedule;     /* When -- Automatic schedule */
-   struct s_res_client *client;       /* Who to backup */
-   struct s_res_fs     *fileset;      /* What to backup -- Fileset */
-   struct s_res_store  *storage;      /* Where is device -- Storage daemon */
-   struct s_res_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 */
+   uint32_t NumConcurrentJobs;        /* number of concurrent jobs running */
 };
-typedef struct s_res_job JOB;
 
 #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 match;                       /* match string(s) */
+   alist base_list;                   /* 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
  *
  */
-struct s_res_fs {
+struct FILESET {
    RES   hdr;
 
    int finclude;                      /* Set if finclude/fexclude used */
@@ -225,57 +242,57 @@ struct s_res_fs {
    struct MD5Context md5c;            /* MD5 of include/exclude */
    char MD5[30];                      /* base 64 representation of MD5 */
 };
-typedef struct s_res_fs FILESET;
 
  
 /* 
  *   Schedule Resource
  *
  */
-struct s_res_sch {
+struct SCHED {
    RES   hdr;
 
-   struct s_run *run;
+   RUN *run;
 };
-typedef struct s_res_sch SCHED;
 
 /*
  *   Group Resource (not used)
  *
  */
-struct s_res_group {
+struct GROUP {
    RES   hdr;
 };
-typedef struct s_res_group GROUP;
 
 /*
  *   Counter Resource
  */
-struct s_res_counter {
+struct COUNTER {
    RES   hdr;
 
    int32_t MinValue;                  /* Minimum value */
    int32_t MaxValue;                  /* Maximum value */
-   int     Global;                    /* global/local */
-   char  *WrapCounter;                /* Wrap counter name */
+   int32_t CurrentValue;              /* Current value */
+   CAT   *WrapCounter;                /* Wrap counter name */
+   CAT   *Catalog;                    /* Where to store */
+   bool    created;                   /* Created in DB */
 };
-typedef struct s_res_counter COUNTER;
 
 /*
  *   Pool Resource   
  *
  */
-struct s_res_pool {
+struct POOL {
    RES   hdr;
 
-   struct s_res_counter counter;      /* Counter resources */
    char *pool_type;                   /* Pool type */
    char *label_format;                /* Label format string */
+   char *cleaning_prefix;             /* Cleaning label prefix */
    int   use_catalog;                 /* maintain catalog for media */
    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 */
@@ -285,34 +302,34 @@ struct s_res_pool {
    int   AutoPrune;                   /* default for pool auto prune */
    int   Recycle;                     /* default for media recycle yes/no */
 };
-typedef struct s_res_pool POOL;
 
 
 /* Define the Union of all the above
  * resource structure definitions.
  */
-union u_res {
-   struct s_res_dir     res_dir;
-   struct s_res_client  res_client;
-   struct s_res_store   res_store;
-   struct s_res_cat     res_cat;
-   struct s_res_job     res_job;
-   struct s_res_fs      res_fs;
-   struct s_res_sch     res_sch;
-   struct s_res_group   res_group;
-   struct s_res_pool    res_pool;
-   struct s_res_msgs    res_msgs;
-   struct s_res_counter res_counter;
-   RES hdr;
+union URES {
+   DIRRES     res_dir;
+   CONRES     res_con;
+   CLIENT     res_client;
+   STORE      res_store;
+   CAT        res_cat;
+   JOB        res_job;
+   FILESET    res_fs;
+   SCHED      res_sch;
+   GROUP      res_group;
+   POOL       res_pool;
+   MSGS       res_msgs;
+   COUNTER    res_counter;
+   RES        hdr;
 };
 
-typedef union u_res URES;
 
 
 /* Run structure contained in Schedule Resource */
-struct s_run {
-   struct s_run *next;                /* points to next run record */
+struct RUN {
+   RUN *next;                         /* points to next run record */
    int level;                         /* level override */
+   int Priority;                      /* priority override */
    int job_type;  
    POOL *pool;                        /* Pool override */
    STORE *storage;                    /* Storage override */
@@ -328,4 +345,3 @@ struct s_run {
    char wday[nbytes_for_bits(7)];     /* bit set for each day of the week */
    char wpos[nbytes_for_bits(5)];     /* week position */
 };
-typedef struct s_run RUN;