]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/dird_conf.h
Fix #3284 about Client address not reloaded properly
[bacula/bacula] / bacula / src / dird / dird_conf.h
index b1101bd04cfd91b63b8fa2918497485885b79756..67aca36078ce043c5f55de6a6c316202d48637a0 100644 (file)
@@ -1,8 +1,7 @@
 /*
    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.
@@ -12,7 +11,7 @@
    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.
@@ -21,7 +20,6 @@
  * Director specific configuration and defines
  *
  *     Kern Sibbald, Feb MM
- *
  */
 
 /* NOTE:  #includes at the end of this file */
@@ -44,6 +42,7 @@ enum {
    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 */
 };
@@ -122,6 +121,7 @@ public:
    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 */
@@ -183,7 +183,10 @@ enum {
    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 */
 };
 
 /*
@@ -228,6 +231,7 @@ public:
    char *db_user;
    char *db_name;
    char *db_driver;                   /* Select appropriate driver */
+   char *db_ssl_mode;                 /* specifies the security state of the connection to the server */
    char *db_ssl_key;                  /* the path name to the key file */
    char *db_ssl_cert;                 /* the path name to the certificate file */
    char *db_ssl_ca;                   /* the path name to the certificate authority file */
@@ -243,6 +247,14 @@ public:
 
 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 */
+   int enabled;                       /* -1: not set, 0 disabled, 1 enabled */
+};
 
 /*
  *   Client Resource
@@ -250,19 +262,18 @@ inline char *CAT::name() const { return hdr.name; }
  */
 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 */
@@ -272,18 +283,35 @@ public:
    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 */
+   int enabled;                       /* -1: not set, 0: disabled, 1: enabled */
+};
+
+
 /*
  *   Store Resource
  *
@@ -291,7 +319,7 @@ inline char *CLIENT::name() const { return hdr.name; }
 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;
@@ -301,8 +329,6 @@ public:
    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 */
@@ -311,9 +337,12 @@ public:
    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 */
@@ -321,6 +350,13 @@ public:
    /* 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
@@ -366,6 +402,13 @@ inline void USTORE::set_source(const char *where)
    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 */
+   int enabled;                       /* -1: disabled, 0: disabled, 1: Enabled */
+};
 
 /*
  *   Job Resource
@@ -373,7 +416,7 @@ inline void USTORE::set_source(const char *where)
 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 */
@@ -403,13 +446,14 @@ public:
    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 */
@@ -420,6 +464,7 @@ public:
    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;
@@ -442,7 +487,7 @@ public:
    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 */
@@ -450,13 +495,18 @@ public:
    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; }
@@ -489,6 +539,7 @@ enum {
    INC_KW_STRIPPATH,
    INC_KW_HONOR_NODUMP,
    INC_KW_XATTR,
+   INC_KW_DEDUP,
    INC_KW_MAX                   /* Keep this last */
 };
 
@@ -552,18 +603,28 @@ public:
 
 inline char *FILESET::name() const { return hdr.name; }
 
+class SCHED_GLOBALS {
+public:
+   dlink link;                        /* double link */
+   const char *name;                  /* resource name */
+   int enabled;                       /* -1: not set, 0: disabled, 1: Enabled */
+};
+
 /*
  *   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; }
@@ -581,6 +642,7 @@ public:
    COUNTER *WrapCounter;              /* Wrap counter name */
    CAT     *Catalog;                  /* Where to store */
    bool     created;                  /* Created in DB */
+
    /* Methods */
    char *name() const;
 };
@@ -601,6 +663,7 @@ public:
    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 */
@@ -676,6 +739,7 @@ public:
    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 */
@@ -696,6 +760,7 @@ public:
 
 #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)))
@@ -708,6 +773,7 @@ void store_replace(LEX *lc, RES_ITEM *item, int index, int pass);
 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);