]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/dird.c
Alpha integration of Dir plugin
[bacula/bacula] / bacula / src / dird / dird.c
index bccd480be136f8ee857d1a28fcbac718befbe500..db0c015d7c0daf229ed0a329be3fd2392085173e 100644 (file)
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2008 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.
@@ -58,6 +58,7 @@ void term_job_server();
 void store_jobtype(LEX *lc, RES_ITEM *item, int index, int pass);
 void store_level(LEX *lc, RES_ITEM *item, int index, int pass);
 void store_replace(LEX *lc, RES_ITEM *item, int index, int pass);
+void store_migtype(LEX *lc, RES_ITEM *item, int index, int pass);
 void init_device_resources();
 
 static char *runjob = NULL;
@@ -140,6 +141,8 @@ int main (int argc, char *argv[])
    init_reload();
    daemon_start_time = time(NULL);
 
+   console_command = run_console_command;
+
    while ((ch = getopt(argc, argv, "c:d:fg:r:stu:v?")) != -1) {
       switch (ch) {
       case 'c':                    /* specify config file */
@@ -244,6 +247,8 @@ int main (int argc, char *argv[])
       read_state_file(director->working_directory, "bacula-dir", get_first_port_host_order(director->DIRaddrs));
    }
 
+   load_dir_plugins(director->plugin_directory);
+
    drop(uid, gid);                    /* reduce privileges if requested */
 
    if (!check_catalog()) {
@@ -330,6 +335,7 @@ void terminate_dird(int sig)
    already_here = true;
    stop_watchdog();
    generate_daemon_event(NULL, "Exit");
+   unload_plugins();
    write_state_file(director->working_directory, "bacula-dir", get_first_port_host_order(director->DIRaddrs));
    delete_pid_file(director->pid_directory, "bacula-dir", get_first_port_host_order(director->DIRaddrs));
    term_scheduler();
@@ -707,6 +713,7 @@ static bool check_resources()
                           job_items[i].handler == store_jobtype ||
                           job_items[i].handler == store_level   ||
                           job_items[i].handler == store_pint    ||
+                          job_items[i].handler == store_migtype ||
                           job_items[i].handler == store_replace) {
                   def_ivalue = (int *)((char *)(job->jobdefs) + offset);
                   Dmsg5(400, "Job \"%s\", field \"%s\" def_ivalue=%d item %d offset=%u\n",