X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Ffiled%2Ffd_plugins.h;h=8ff6b44ff05c75136a0f6eb7d1ef2ec37b751277;hb=bbbc4771dfad256a2ad69cbf8b5914e9f99e2463;hp=50ed3dde765c07fed59003359fbaeed05a0da88a;hpb=02e02102fa0207166361e96e684b1184cb9609bc;p=bacula%2Fbacula diff --git a/bacula/src/filed/fd_plugins.h b/bacula/src/filed/fd_plugins.h index 50ed3dde76..8ff6b44ff0 100644 --- a/bacula/src/filed/fd_plugins.h +++ b/bacula/src/filed/fd_plugins.h @@ -1,12 +1,12 @@ /* Bacula® - The Network Backup Solution - Copyright (C) 2007-2009 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. This program is Free Software; you can redistribute it and/or - modify it under the terms of version two of the GNU General Public + modify it under the terms of version three of the GNU Affero General Public License as published by the Free Software Foundation, which is listed in the file LICENSE. @@ -15,7 +15,7 @@ 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 + You should have received a copy of the GNU Affero 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. @@ -66,6 +66,28 @@ #include "bc_types.h" #include "lib/plugins.h" #include +#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_full_len; /* restore object uncompressed length */ + int32_t object_index; /* restore object index */ + int32_t object_compression; /* set to compression type */ + 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. @@ -79,6 +101,10 @@ struct save_pkt { 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 */ }; @@ -146,24 +172,33 @@ typedef enum { bVarJobStatus = 7, bVarSinceTime = 8, bVarAccurate = 9, - bVarFileSeen = 10 + 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, /* Executed by an other thread */ + bEventVssBackupAddComponents = 14, + bEventVssRestoreLoadComponentMetadata = 15, + bEventVssRestoreSetComponentsSelected = 16, + bEventRestoreObject = 17, + bEventEndFileSet = 18, + bEventPluginCommand = 19 /* Sent during FileSet creation */ } bEventType; typedef struct s_bEvent { @@ -212,6 +247,13 @@ typedef struct s_baculaFuncs { 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); + bRC (*AddInclude)(bpContext *ctx, const char *file); + bRC (*AddOptions)(bpContext *ctx, const char *opts); + bRC (*AddRegex)(bpContext *ctx, const char *item, int type); + bRC (*AddWild)(bpContext *ctx, const char *item, int type); + bRC (*NewOptions)(bpContext *ctx); + bRC (*NewInclude)(bpContext *ctx); } bFuncs;