/*
Bacula® - The Network Backup Solution
- Copyright (C) 2007-2008 Free Software Foundation Europe e.V.
+ Copyright (C) 2007-2010 Free Software Foundation Europe e.V.
The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
#define _FILE_OFFSET_BITS 64
#define _LARGEFILE_SOURCE 1
#define _LARGE_FILES 1
-#endif
+#endif /* ! _BACULA_H */
#include <sys/types.h>
#else
#include "winconfig.h"
#endif
-#else
+#else /* !HAVE_WIN32 */
#ifndef __CONFIG_H
#include "config.h"
#define __CONFIG_H
#include "bc_types.h"
#include "lib/plugins.h"
#include <sys/stat.h>
+#ifdef HAVE_WIN32
+#include "../win32/filed/vss.h"
+#endif
+
+/*
+ * This packet is used for the restore objects
+ * It is passed to the plugin when restoring
+ * the object.
+ */
+struct restore_object_pkt {
+ int32_t pkt_size; /* size of this packet */
+ char *object_name; /* Object name */
+ char *object; /* restore object data to save */
+ int32_t object_type; /* FT_xx for this file */
+ int32_t object_len; /* restore object length */
+ int32_t object_index; /* restore object index */
+ int32_t stream; /* attribute stream id */
+ uint32_t JobId; /* JobId object came from */
+ int32_t pkt_end; /* end packet sentinel */
+};
/*
* This packet is used for file save info transfer.
uint32_t flags; /* Bacula internal flags */
bool portable; /* set if data format is portable */
char *cmd; /* command */
+ char *object_name; /* Object name to create */
+ char *object; /* restore object data to save */
+ int32_t object_len; /* restore object length */
+ int32_t index; /* restore object index */
int32_t pkt_end; /* end packet sentinel */
};
bVarClient = 5,
bVarJobName = 6,
bVarJobStatus = 7,
- bVarSinceTime = 8
+ bVarSinceTime = 8,
+ bVarAccurate = 9,
+ bVarFileSeen = 10,
+ bVarVssObject = 11,
+ bVarVssDllHandle = 12,
+ bVarWorkingDir = 13
} bVariable;
/* Events that are passed to plugin */
typedef enum {
- bEventJobStart = 1,
- bEventJobEnd = 2,
- bEventStartBackupJob = 3,
- bEventEndBackupJob = 4,
- bEventStartRestoreJob = 5,
- bEventEndRestoreJob = 6,
- bEventStartVerifyJob = 7,
- bEventEndVerifyJob = 8,
- bEventBackupCommand = 9,
- bEventRestoreCommand = 10,
- bEventLevel = 11,
- bEventSince = 12,
- bEventCancelCommand = 13,
+ bEventJobStart = 1,
+ bEventJobEnd = 2,
+ bEventStartBackupJob = 3,
+ bEventEndBackupJob = 4,
+ bEventStartRestoreJob = 5,
+ bEventEndRestoreJob = 6,
+ bEventStartVerifyJob = 7,
+ bEventEndVerifyJob = 8,
+ bEventBackupCommand = 9,
+ bEventRestoreCommand = 10,
+ bEventLevel = 11,
+ bEventSince = 12,
+ bEventCancelCommand = 13,
+ bEventVssBackupAddComponents = 14,
+ bEventVssRestoreLoadComponentMetadata = 15,
+ bEventVssRestoreSetComponentsSelected = 16,
+ bEventRestoreObject = 17,
} bEventType;
typedef struct s_bEvent {
int plugin_create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace);
bool plugin_set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd);
int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level);
+bool plugin_check_file(JCR *jcr, char *fname);
#endif
#ifdef __cplusplus
bRC (*getBaculaValue)(bpContext *ctx, bVariable var, void *value);
bRC (*setBaculaValue)(bpContext *ctx, bVariable var, void *value);
bRC (*JobMessage)(bpContext *ctx, const char *file, int line,
- int type, time_t mtime, const char *fmt, ...);
+ int type, utime_t mtime, const char *fmt, ...);
bRC (*DebugMessage)(bpContext *ctx, const char *file, int line,
int level, const char *fmt, ...);
void *(*baculaMalloc)(bpContext *ctx, const char *file, int line,
size_t size);
void (*baculaFree)(bpContext *ctx, const char *file, int line, void *mem);
+ bRC (*AddExclude)(bpContext *ctx, const char *file);
} bFuncs;
#define FD_PLUGIN_MAGIC "*FDPluginData*"
-#define FD_PLUGIN_INTERFACE_VERSION 2
+#define FD_PLUGIN_INTERFACE_VERSION 4
typedef struct s_pluginInfo {
uint32_t size;
bRC (*pluginIO)(bpContext *ctx, struct io_pkt *io);
bRC (*createFile)(bpContext *ctx, struct restore_pkt *rp);
bRC (*setFileAttributes)(bpContext *ctx, struct restore_pkt *rp);
+ bRC (*checkFile)(bpContext *ctx, char *fname);
} pFuncs;
#define plug_func(plugin) ((pFuncs *)(plugin->pfuncs))