]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/stored_conf.h
Change copyright as per agreement with FSFE
[bacula/bacula] / bacula / src / stored / stored_conf.h
index 585030e9da903f7f3d069d44edd040767640d5ea..9dee7ba687930089c778e75926f7c70d9ca547ba 100644 (file)
 /*
- * Resource codes -- they must be sequential for indexing   
- *
- *   Version $Id$
- */
-/*
-   Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker
+   Bacula(R) - The Network Backup Solution
 
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of
-   the License, or (at your option) any later version.
+   Copyright (C) 2000-2016 Kern Sibbald
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-   General Public License for more details.
+   The original author of Bacula is Kern Sibbald, with contributions
+   from many others, a complete list can be found in the file AUTHORS.
 
-   You should have received a copy of the GNU General Public
-   License along with this program; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-   MA 02111-1307, USA.
+   You may use this file and others of this release according to the
+   license defined in the LICENSE file, which includes the Affero General
+   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 
+   conveyed and/or propagated.
 
-#define R_FIRST                       3001
+   Bacula(R) is a registered trademark of Kern Sibbald.
+*/
 
-#define R_DIRECTOR                    3001
-#define R_STORAGE                     3002
-#define R_DEVICE                      3003
-#define R_MSGS                        3004
+extern s_kw dev_types[];
 
-#define R_LAST                        R_MSGS
+/*
+ * Resource codes -- they must be sequential for indexing
+ *
+ */
 
+enum {
+   R_DIRECTOR = 3001,
+   R_STORAGE,
+   R_DEVICE,
+   R_MSGS,
+   R_AUTOCHANGER,
+   R_FIRST = R_DIRECTOR,
+   R_LAST  = R_AUTOCHANGER            /* keep this updated */
+};
 
-#define R_NAME                        3020
-#define R_ADDRESS                     3021
-#define R_PASSWORD                    3022
-#define R_TYPE                        3023
-#define R_BACKUP                      3024
+enum {
+   R_NAME = 3020,
+   R_ADDRESS,
+   R_PASSWORD,
+   R_TYPE,
+   R_BACKUP
+};
 
-#define STORAGE_DAEMON 1
 
 /* Definition of the contents of each Resource */
-struct s_res_dir {
+class DIRRES {
+public:
    RES   hdr;
 
    char *password;                    /* Director password */
    char *address;                     /* Director IP address or zero */
+   bool monitor;                      /* Have only access to status and .status functions */
+   bool tls_authenticate;             /* Authenticate with TLS */
+   bool tls_enable;                   /* Enable TLS */
+   bool tls_require;                  /* Require TLS */
+   bool tls_verify_peer;              /* TLS Verify Client Certificate */
+   char *tls_ca_certfile;             /* TLS CA Certificate File */
+   char *tls_ca_certdir;              /* TLS CA Certificate Directory */
+   char *tls_certfile;                /* TLS Server Certificate File */
+   char *tls_keyfile;                 /* TLS Server Key File */
+   char *tls_dhfile;                  /* TLS Diffie-Hellman Parameters */
+   alist *tls_allowed_cns;            /* TLS Allowed Clients */
+
+   TLS_CONTEXT *tls_ctx;              /* Shared TLS Context */
 };
-typedef struct s_res_dir DIRRES;
 
 
 /* Storage daemon "global" definitions */
-struct s_res_store {
+class s_res_store {
+public:
    RES   hdr;
 
-   char *address;
-   int   SDport;                      /* Where we listen for Directors */
-   int   SDDport;                     /* "Data" port where we listen for File daemons */
+   dlist *sdaddrs;
+   dlist *sddaddrs;
    char *working_directory;           /* working directory for checkpoints */
    char *pid_directory;
    char *subsys_directory;
+   char *plugin_directory;            /* Plugin directory */
+   char *scripts_directory;
    uint32_t max_concurrent_jobs;      /* maximum concurrent jobs to run */
-   struct s_res_msgs *messages;       /* Daemon message handler */
+   MSGS *messages;                    /* Daemon message handler */
+   utime_t ClientConnectTimeout;      /* Max time to wait to connect client */
+   utime_t heartbeat_interval;        /* Interval to send hb to FD */
+   utime_t client_wait;               /* Time to wait for FD to connect */
+   bool tls_authenticate;             /* Authenticate with TLS */
+   bool tls_enable;                   /* Enable TLS */
+   bool tls_require;                  /* Require TLS */
+   bool tls_verify_peer;              /* TLS Verify Client Certificate */
+   char *tls_ca_certfile;             /* TLS CA Certificate File */
+   char *tls_ca_certdir;              /* TLS CA Certificate Directory */
+   char *tls_certfile;                /* TLS Server Certificate File */
+   char *tls_keyfile;                 /* TLS Server Key File */
+   char *tls_dhfile;                  /* TLS Diffie-Hellman Parameters */
+   alist *tls_allowed_cns;            /* TLS Allowed Clients */
+   char *verid;                       /* Custom Id to print in version command */
+   TLS_CONTEXT *tls_ctx;              /* Shared TLS Context */
+
+};
+typedef class s_res_store STORES;
+
+class AUTOCHANGER {
+public:
+   RES hdr;
+   alist *device;                     /* List of DEVRES device pointers */
+   char *changer_name;                /* Changer device name */
+   char *changer_command;             /* Changer command  -- external program */
+   brwlock_t changer_lock;            /* One changer operation at a time */
 };
-typedef struct s_res_store STORES;
 
 /* Device specific definitions */
-struct s_res_dev {
+class DEVRES {
+public:
    RES   hdr;
 
    char *media_type;                  /* User assigned media type */
    char *device_name;                 /* Archive device name */
    char *changer_name;                /* Changer device name */
+   char *control_name;                /* SCSI control device name */
    char *changer_command;             /* Changer command  -- external program */
-   int  cap_bits;                     /* Capabilities of this device */
-   uint32_t max_changer_wait;         /* Changer timeout */
-   uint32_t max_rewind_wait;          /* maximum secs to wait for rewind */
-   uint32_t max_open_wait;            /* maximum secs to wait for open */
+   char *alert_command;               /* Alert command -- external program */
+   char *spool_directory;             /* Spool file directory */
+   uint32_t dev_type;                 /* device type */
+   uint32_t label_type;               /* label type */
+   bool enabled;                      /* Set when enabled (default) */
+   bool autoselect;                   /* Automatically select from AutoChanger */
+   bool read_only;                    /* Drive is read only */
+   uint32_t drive_index;              /* Autochanger drive index */
+   uint32_t cap_bits;                 /* Capabilities of this device */
+   utime_t max_changer_wait;          /* Changer timeout */
+   utime_t max_rewind_wait;           /* maximum secs to wait for rewind */
+   utime_t max_open_wait;             /* maximum secs to wait for open */
+   uint32_t padding_size;             /* adata block padding -- bytes */
+   uint32_t file_alignment;           /* adata file alignment -- bytes */
    uint32_t min_block_size;           /* min block size */
    uint32_t max_block_size;           /* max block size */
    uint32_t max_volume_jobs;          /* max jobs to put on one volume */
+   uint32_t max_network_buffer_size;  /* max network buf size */
+   uint32_t max_concurrent_jobs;      /* maximum concurrent jobs this drive */
+   utime_t  vol_poll_interval;        /* interval between polling volume during mount */
    int64_t max_volume_files;          /* max files to put on one volume */
    int64_t max_volume_size;           /* max bytes to put on one volume */
    int64_t max_file_size;             /* max file size in bytes */
    int64_t volume_capacity;           /* advisory capacity */
+   int64_t min_free_space;            /* Minimum disk free space */
+   int64_t max_spool_size;            /* Max spool size for all jobs */
+   int64_t max_job_spool_size;        /* Max spool size for any single job */
+
+   int64_t max_part_size;             /* Max part size */
+   char *mount_point;                 /* Mount point for require mount devices */
+   char *mount_command;               /* Mount command */
+   char *unmount_command;             /* Unmount command */
+   char *write_part_command;          /* Write part command */
+   char *free_space_command;          /* Free space command */
+
+   /* The following are set at runtime */
    DEVICE *dev;                       /* Pointer to phyical dev -- set at runtime */
+   AUTOCHANGER *changer_res;          /* pointer to changer res if any */
 };
-typedef struct s_res_dev DEVRES;
 
-union u_res {
-   struct s_res_dir     res_dir;
-   struct s_res_store   res_store;
-   struct s_res_dev     res_dev;
-   struct s_res_msgs    res_msgs;
-   RES hdr;
+
+union URES {
+   DIRRES      res_dir;
+   STORES      res_store;
+   DEVRES      res_dev;
+   MSGS        res_msgs;
+   AUTOCHANGER res_changer;
+   RES         hdr;
 };
-typedef union u_res URES;