To write a Bacula plugin, you create a dynamic shared object program (or dll on
Win32) with a particular name and two exported entry points, place it in the
Plugins Directory, which is defined in the bacula-fd.conf file in
the Client resource, and when the FD starts, it will load all the plugins
that end with -fd.so (or -fd.dll on Win32) found in that directory.
Subsections
- Normal vs Command Plugins
- Loading Plugins
- loadPlugin
- Plugin Entry Points
- newPlugin(bpContext *ctx)
- freePlugin(bpContext *ctx)
- getPluginValue(bpContext *ctx, pVariable var, void *value)
- setPluginValue(bpContext *ctx, pVariable var, void *value)
- handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
- startBackupFile(bpContext *ctx, struct save_pkt *sp)
- endBackupFile(bpContext *ctx)
- startRestoreFile(bpContext *ctx, const char *cmd)
- createFile(bpContext *ctx, struct restore_pkt *rp)
- setFileAttributes(bpContext *ctx, struct restore_pkt *rp)
- endRestoreFile(bpContext *ctx)
- pluginIO(bpContext *ctx, struct io_pkt *io)
- bool checkFile(bpContext *ctx, char *fname)
- Bacula Plugin Entrypoints
- bRC registerBaculaEvents(bpContext *ctx, ...)
- 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, 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)
- Building Bacula Plugins
Kern Sibbald
2010-08-30