X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=bacula%2Fsrc%2Fstored%2Fstored_conf.h;h=7b7467de910bb102e10d32d457b46a4b7c163772;hb=137bb193b84b61ecd75ea4d5093ced7c190809be;hp=d2bef94658f130c5dfe2242d2f00f628f200d629;hpb=63a40ba952ce1b9daae9bc91d5d9fd1ea01a960b;p=bacula%2Fbacula diff --git a/bacula/src/stored/stored_conf.h b/bacula/src/stored/stored_conf.h index d2bef94658..7b7467de91 100644 --- a/bacula/src/stored/stored_conf.h +++ b/bacula/src/stored/stored_conf.h @@ -1,35 +1,44 @@ /* - * Resource codes -- they must be sequential for indexing + * Resource codes -- they must be sequential for indexing * * Version $Id$ */ /* - Copyright (C) 2000-2004 Kern Sibbald and John Walker + Bacula® - 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-2006 Free Software Foundation Europe e.V. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of + The main author of Bacula is Kern Sibbald, with contributions from + many others, a complete list can be found in the file AUTHORS. + This program is Free Software; you can redistribute it and/or + modify it under the terms of version two of the GNU General Public + License as published by the Free Software Foundation plus additions + that are listed in the file LICENSE. + + 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. - 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 should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. - */ + Bacula® is a registered trademark of John Walker. + The licensor of Bacula is the Free Software Foundation Europe + (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, + Switzerland, email:ftf@fsfeurope.org. +*/ enum { R_DIRECTOR = 3001, R_STORAGE, R_DEVICE, R_MSGS, + R_AUTOCHANGER, R_FIRST = R_DIRECTOR, - R_LAST = R_MSGS /* keep this updated */ + R_LAST = R_AUTOCHANGER /* keep this updated */ }; enum { @@ -42,65 +51,115 @@ enum { /* Definition of the contents of each Resource */ -struct DIRRES { - RES hdr; +class DIRRES { +public: + RES hdr; - char *password; /* Director password */ - char *address; /* Director IP address or zero */ - int enable_ssl; /* Use SSL with this Director */ + char *password; /* Director password */ + char *address; /* Director IP address or zero */ + int monitor; /* Have only access to status and .status functions */ + int tls_enable; /* Enable TLS */ + int tls_require; /* Require TLS */ + int 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 */ }; /* Storage daemon "global" definitions */ -struct s_res_store { - RES hdr; +class s_res_store { +public: + RES hdr; dlist *sdaddrs; dlist *sddaddrs; - char *working_directory; /* working directory for checkpoints */ + char *working_directory; /* working directory for checkpoints */ char *pid_directory; char *subsys_directory; - int require_ssl; /* Require SSL on all connections */ + char *scripts_directory; uint32_t max_concurrent_jobs; /* maximum concurrent jobs to run */ - MSGS *messages; /* Daemon message handler */ - utime_t heartbeat_interval; /* Interval to send hb to FD */ + MSGS *messages; /* Daemon message handler */ + utime_t heartbeat_interval; /* Interval to send hb to FD */ + utime_t client_wait; /* Time to wait for FD to connect */ + int tls_enable; /* Enable TLS */ + int tls_require; /* Require TLS */ + int 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 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 */ + pthread_mutex_t changer_mutex; /* One changer operation at a time */ }; -typedef struct s_res_store STORES; /* Device specific definitions */ -struct DEVRES { - RES hdr; - - char *media_type; /* User assigned media type */ - char *device_name; /* Archive device name */ - char *changer_name; /* Changer device name */ - char *changer_command; /* Changer command -- external program */ - char *alert_command; /* Alert command -- external program */ - char *spool_directory; /* Spool file directory */ - uint32_t drive_index; /* Autochanger drive index */ - uint32_t 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 */ - uint32_t max_open_vols; /* maximum simultaneous open volumes */ - 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 */ +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 *changer_command; /* Changer command -- external program */ + char *alert_command; /* Alert command -- external program */ + char *spool_directory; /* Spool file directory */ + int dev_type; /* device type */ + int label_type; /* label type */ + int autoselect; /* Automatically select from AutoChanger */ + 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 max_open_vols; /* maximum simultaneous open volumes */ + 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 */ - 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 max_spool_size; /* Max spool size for all jobs */ - int64_t max_job_spool_size; /* Max spool size for any single job */ - DEVICE *dev; /* Pointer to phyical dev -- set at runtime */ + 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 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 */ }; + union URES { - DIRRES res_dir; - STORES res_store; - DEVRES res_dev; - MSGS res_msgs; - RES hdr; + DIRRES res_dir; + STORES res_store; + DEVRES res_dev; + MSGS res_msgs; + AUTOCHANGER res_changer; + RES hdr; };