Merge tag 'upstream/3.3.3'
[debian/amanda] / server-src / diskfile.h
index 06660975df6606c5abe657b4f216dfe9d584439c..5d744609c82f493ecfffab8b895e274b0f929bb7 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * Amanda, The Advanced Maryland Automatic Network Disk Archiver
  * Copyright (c) 1991-1998 University of Maryland at College Park
+ * Copyright (c) 2007-2012 Zmanda, Inc.  All Rights Reserved.
  * All Rights Reserved.
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
@@ -34,6 +35,7 @@
 
 #include "amanda.h"
 #include "conffile.h"
+#include "fileheader.h"
 #include "amfeatures.h"
 
 typedef struct netif_s {
@@ -58,6 +60,7 @@ typedef struct amhost_s {
 
 typedef struct disk_s {
     int                line;                   /* line number of last definition */
+    char       *filename;               /* the filename where it is read */
     struct disk_s *prev, *next;                /* doubly linked disk list */
 
     am_host_t  *host;                  /* host list */
@@ -67,6 +70,7 @@ typedef struct disk_s {
     char       *name;                  /* label name for disk */
     char       *device;                /* device name for disk, eg "sd0g" */
     char       *dtype_name;            /* name of dump type */
+    dumptype_t *config;                /* pointer to the dumptype config */
     char       *program;               /* dump program, eg DUMP, STAR, GNUTAR */
     char       *srvcompprog;           /* custom compression server filter */
     char       *clntcompprog;          /* custom compression client filter */
@@ -76,16 +80,19 @@ typedef struct disk_s {
     char       *client_username;       /* username to connect on the client */
     char       *client_port;           /* port to connect on the client */
     char       *ssh_keys;              /* ssh_key file to use */
-    sl_t       *exclude_file;          /* file exclude spec */
-    sl_t       *exclude_list;          /* exclude list */
-    sl_t       *include_file;          /* file include spec */
-    sl_t       *include_list;          /* include list */
+    am_sl_t    *exclude_file;          /* file exclude spec */
+    am_sl_t    *exclude_list;          /* exclude list */
+    am_sl_t    *include_file;          /* file include spec */
+    am_sl_t    *include_list;          /* include list */
     int                exclude_optional;       /* exclude list are optional */
     int                include_optional;       /* include list are optional */
     int                priority;               /* priority of disk */
-    off_t      tape_splitsize;         /* size of dumpfile chunks on tape */
-    char       *split_diskbuffer;      /* place where we can buffer PORT-WRITE dumps other than RAM */
-    off_t      fallback_splitsize;     /* size for in-RAM PORT-WRITE buffers */
+    int                allow_split;
+    int         max_warnings;
+    off_t      splitsize;
+    off_t      tape_splitsize;         /* size of dumpfile chunks on tape */
+    char       *split_diskbuffer;      /* place where we can buffer PORT-WRITE dumps other than RAM */
+    off_t      fallback_splitsize;     /* size for in-RAM PORT-WRITE buffers */
     int                dumpcycle;              /* days between fulls */
     long       frequency;              /* XXX - not used */
     char       *auth;                  /* type of authentication (per disk) */
@@ -119,6 +126,7 @@ typedef struct disk_s {
     int                todo;
     char       *application;
     identlist_t pp_scriptlist;
+    host_limit_t *dump_limit;
     void       *up;                    /* generic user pointer */
 } disk_t;
 
@@ -132,6 +140,7 @@ typedef struct disklist_s {
  * value just as you would the return of config_init() */
 cfgerr_level_t read_diskfile(const char *, disklist_t *);
 
+am_host_t *get_hostlist(void);
 am_host_t *lookup_host(const char *hostname);
 disk_t *lookup_disk(const char *hostname, const char *diskname);
 
@@ -157,10 +166,11 @@ char *optionstr(disk_t *dp);
 GPtrArray *validate_optionstr(disk_t *dp);
 char *xml_optionstr(disk_t *dp, int to_server);
 char *xml_estimate(estimatelist_t estimatelist, am_feature_t *their_features);
-char *clean_dle_str_for_client(char *dle_str);
+char *clean_dle_str_for_client(char *dle_str, am_feature_t *their_features);
 char *xml_application(disk_t *dp, application_t *application,
                      am_feature_t *their_features);
 char *xml_scripts(identlist_t pp_scriptlist, am_feature_t *their_features);
+char *xml_dumptype_properties(disk_t *dp);
 
 /* disable_skip_disk() set the db->todo flag to 0 for each dle with 'ignore'
  * 'strategy skip'. It is useful for all programs that want to skip them,i
@@ -169,7 +179,10 @@ char *xml_scripts(identlist_t pp_scriptlist, am_feature_t *their_features);
  */
 void disable_skip_disk(disklist_t *origqp);
 
-char *match_disklist(disklist_t *origqp, int sargc, char **sargv);
+char *match_disklist(disklist_t *origqp, gboolean exact_match, int sargc,
+                    char **sargv);
+gboolean match_dumpfile(dumpfile_t *file, gboolean exact_match, int sargc,
+                       char **sargv);
 void free_disklist(disklist_t *dl);
 
 netif_t *disklist_netifs(void);