*
*/
/*
- Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker
+ Copyright (C) 2002-2006 Kern Sibbald
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.
+ modify it under the terms of the GNU General Public License
+ version 2 as amended with additional clauses defined in the
+ file LICENSE in the main source directory.
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.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ the file LICENSE for additional details.
*/
#ifndef __BSR_H
#define __BSR_H 1
-#include "findlib/find.h"
-
/*
* List of Volume names to be read by Storage daemon.
- * Formed by Storage daemon from BSR
+ * Formed by Storage daemon from BSR
*/
-struct s_vol_list {
- struct s_vol_list *next;
+struct VOL_LIST {
+ VOL_LIST *next;
char VolumeName[MAX_NAME_LENGTH];
- int Slot;
- int start_file;
+ char MediaType[MAX_NAME_LENGTH];
+ char device[MAX_NAME_LENGTH]; /* ***FIXME*** use alist here */
+ int Slot;
+ uint32_t start_file;
};
-typedef struct s_vol_list VOL_LIST;
/*
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*/
-typedef struct s_bsr_volume {
- struct s_bsr_volume *next;
+struct BSR_VOLUME {
+ BSR_VOLUME *next;
char VolumeName[MAX_NAME_LENGTH];
-} BSR_VOLUME;
+ char MediaType[MAX_NAME_LENGTH];
+ char device[MAX_NAME_LENGTH]; /* ***FIXME*** use alist here */
+ int32_t Slot; /* Slot */
+};
-typedef struct s_bsr_client {
- struct s_bsr_client *next;
+struct BSR_CLIENT {
+ BSR_CLIENT *next;
char ClientName[MAX_NAME_LENGTH];
-} BSR_CLIENT;
+};
-typedef struct s_bsr_sessid {
- struct s_bsr_sessid *next;
+struct BSR_SESSID {
+ BSR_SESSID *next;
uint32_t sessid;
uint32_t sessid2;
- int done; /* local done */
-} BSR_SESSID;
+};
-typedef struct s_bsr_sesstime {
- struct s_bsr_sesstime *next;
+struct BSR_SESSTIME {
+ BSR_SESSTIME *next;
uint32_t sesstime;
- int done; /* local done */
-} BSR_SESSTIME;
+ bool done; /* local done */
+};
-typedef struct s_bsr_volfile {
- struct s_bsr_volfile *next;
+struct BSR_VOLFILE {
+ BSR_VOLFILE *next;
uint32_t sfile; /* start file */
uint32_t efile; /* end file */
- int done; /* local done */
-} BSR_VOLFILE;
+ bool done; /* local done */
+};
+
+struct BSR_VOLBLOCK {
+ BSR_VOLBLOCK *next;
+ uint32_t sblock; /* start block */
+ uint32_t eblock; /* end block */
+ bool done; /* local done */
+};
-typedef struct s_bsr_findex {
- struct s_bsr_findex *next;
+
+struct BSR_FINDEX {
+ BSR_FINDEX *next;
int32_t findex; /* start file index */
int32_t findex2; /* end file index */
- int done; /* local done */
-} BSR_FINDEX;
+ bool done; /* local done */
+};
-typedef struct s_bsr_jobid {
- struct s_bsr_jobid *next;
+struct BSR_JOBID {
+ BSR_JOBID *next;
uint32_t JobId;
uint32_t JobId2;
-} BSR_JOBID;
+};
-typedef struct s_bsr_jobtype {
- struct s_bsr_jobtype *next;
+struct BSR_JOBTYPE {
+ BSR_JOBTYPE *next;
uint32_t JobType;
-} BSR_JOBTYPE;
+};
-typedef struct s_bsr_joblevel {
- struct s_bsr_joblevel *next;
+struct BSR_JOBLEVEL {
+ BSR_JOBLEVEL *next;
uint32_t JobLevel;
-} BSR_JOBLEVEL;
+};
-typedef struct s_bsr_job {
- struct s_bsr_job *next;
+struct BSR_JOB {
+ BSR_JOB *next;
char Job[MAX_NAME_LENGTH];
- int done;
-} BSR_JOB;
+ bool done; /* local done */
+};
-typedef struct s_bsr_stream {
- struct s_bsr_stream *next;
+struct BSR_STREAM {
+ BSR_STREAM *next;
int32_t stream; /* stream desired */
-} BSR_STREAM;
+};
-typedef struct s_bsr {
- struct s_bsr *next; /* pointer to next one */
- int done; /* set when everything found */
+struct BSR {
+ BSR *next; /* pointer to next one */
+ BSR *root; /* root bsr */
+ bool reposition; /* set when any bsr is marked done */
+ bool mount_next_volume; /* set when next volume should be mounted */
+ bool done; /* set when everything found for this bsr */
+ bool use_fast_rejection; /* set if fast rejection can be used */
+ bool use_positioning; /* set if we can position the archive */
BSR_VOLUME *volume;
- int32_t Slot; /* Slot */
uint32_t count; /* count of files to restore this bsr */
uint32_t found; /* count of restored files this bsr */
BSR_VOLFILE *volfile;
+ BSR_VOLBLOCK *volblock;
BSR_SESSTIME *sesstime;
BSR_SESSID *sessid;
BSR_JOBID *JobId;
BSR_JOBTYPE *JobType;
BSR_JOBLEVEL *JobLevel;
BSR_STREAM *stream;
-// FF_PKT *ff; /* include/exclude */
-} BSR;
+};
#endif