/*
Bacula® - The Network Backup Solution
- Copyright (C) 2007-2008 Free Software Foundation Europe e.V.
+ Copyright (C) 2007-2009 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.
Switzerland, email:ftf@fsfeurope.org.
*/
/*
- * Bacula plugin loader/unloader
+ * Common plugin definitions
*
* Kern Sibbald, October 2007
*/
#ifndef __PLUGINS_H
#define __PLUGINS_H
-#include "bacula.h"
-#include <dlfcn.h>
-#ifdef HAVE_DIRENT_H
-#include <dirent.h>
-#define NAMELEN(dirent) (strlen((dirent)->d_name))
-#endif
-#ifndef HAVE_READDIR_R
-int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
-#endif
-
-#ifndef RTLD_NOW
-#define RTLD_NOW 2
-#endif
-
/****************************************************************************
* *
* Common definitions for all plugins *
* *
****************************************************************************/
+#ifndef BUILD_PLUGIN
extern DLL_IMP_EXP alist *plugin_list;
+#endif
-/* Universal return codes from all functions */
+/* Universal return codes from all plugin functions */
typedef enum {
- bRC_OK = 0, /* OK */
- bRC_Stop = 1, /* Stop calling other plugins */
- bRC_Error = 2, /* Some kind of error */
- bRC_More = 3, /* More files to backup */
+ bRC_OK = 0, /* OK */
+ bRC_Stop = 1, /* Stop calling other plugins */
+ bRC_Error = 2, /* Some kind of error */
+ bRC_More = 3, /* More files to backup */
+ bRC_Term = 4, /* Unload me */
+ bRC_Seen = 5, /* Return code from checkFiles */
+
+ bRC_Max = 9999 /* Max code Bacula can use */
} bRC;
+
+
/* Context packet as first argument of all functions */
-typedef struct s_bpContext {
+struct bpContext {
void *bContext; /* Bacula private context */
void *pContext; /* Plugin private context */
-} bpContext;
+};
extern "C" {
typedef bRC (*t_loadPlugin)(void *binfo, void *bfuncs, void **pinfo, void **pfuncs);
void *pinfo;
void *pfuncs;
void *pHandle;
+ bool disabled;
};
/* Functions */
extern Plugin *new_plugin();
-extern bool load_plugins(void *binfo, void *bfuncs, const char *plugin_dir, const char *type);
+extern bool load_plugins(void *binfo, void *bfuncs, const char *plugin_dir,
+ const char *type, bool is_plugin_compatible(Plugin *plugin));
extern void unload_plugins();
+/* Each daemon can register a debug hook that will be called
+ * after a fatal signal
+ */
+typedef void (dbg_plugin_hook_t)(Plugin *plug, FILE *fp);
+extern void dbg_plugin_add_hook(dbg_plugin_hook_t *fct);
#endif /* __PLUGINS_H */