X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fdird%2Fprotos.h;h=893b980bb68d34d9f224b52692ebf0097aacab59;hb=6fa75d791efc5530f4fe9ffc4d21b8866d1543aa;hp=da56c4701c42c710dcab43dd64d42d281fa91845;hpb=4f7896c56213a88d17777db9041a9643ae541c5f;p=bacula%2Fbacula diff --git a/bacula/src/dird/protos.h b/bacula/src/dird/protos.h index da56c4701c..893b980bb6 100644 --- a/bacula/src/dird/protos.h +++ b/bacula/src/dird/protos.h @@ -1,22 +1,35 @@ +/* + Bacula® - The Network Backup Solution + + Copyright (C) 2000-2007 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 + License as published by the Free Software Foundation and included + in the file LICENSE. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + 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 + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. + + Bacula® is a registered trademark of John Walker. + The licensor of Bacula is the Free Software Foundation Europe + (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, + Switzerland, email:ftf@fsfeurope.org. +*/ /* * Director external function prototypes * * Version $Id$ */ -/* - Copyright (C) 2000-2005 Kern Sibbald - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - version 2 as amended with additional clauses defined in the - file LICENSE in the main source directory. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - the file LICENSE for additional details. - - */ /* admin.c */ extern bool do_admin_init(JCR *jcr); @@ -30,8 +43,8 @@ extern int authenticate_file_daemon(JCR *jcr); extern int authenticate_user_agent(UAContext *ua); /* autoprune.c */ -extern int do_autoprune(JCR *jcr); -extern int prune_volumes(JCR *jcr); +extern void do_autoprune(JCR *jcr); +extern bool prune_volumes(JCR *jcr, bool InChanger, MEDIA_DBR *mr); /* autorecycle.c */ extern bool recycle_oldest_purged_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr); @@ -39,7 +52,7 @@ extern int recycle_volume(JCR *jcr, MEDIA_DBR *mr); extern bool find_recycled_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr); /* backup.c */ -extern int wait_for_job_termination(JCR *jcr); +extern int wait_for_job_termination(JCR *jcr, int timeout=0); extern bool do_backup_init(JCR *jcr); extern bool do_backup(JCR *jcr); extern void backup_cleanup(JCR *jcr, int TermCode); @@ -62,6 +75,7 @@ extern void catalog_update(JCR *jcr, BSOCK *bs); /* dird_conf.c */ extern const char *level_to_str(int level); +extern "C" char *job_code_callback_filesetname(JCR *jcr, const char*); /* expand.c */ int variable_expansion(JCR *jcr, char *inp, POOLMEM **exp); @@ -98,17 +112,31 @@ extern DBId_t get_or_create_pool_record(JCR *jcr, char *pool_name); extern void apply_pool_overrides(JCR *jcr); extern JobId_t run_job(JCR *jcr); extern bool cancel_job(UAContext *ua, JCR *jcr); +extern void get_job_storage(USTORE *store, JOB *job, RUN *run); extern void init_jcr_job_record(JCR *jcr); -extern void copy_storage(JCR *jcr, alist *storage, const char *where); -extern void set_storage(JCR *jcr, STORE *store); +extern void update_job_end(JCR *jcr, int TermCode); +extern void copy_rwstorage(JCR *jcr, alist *storage, const char *where); +extern void set_rwstorage(JCR *jcr, USTORE *store); +extern void free_rwstorage(JCR *jcr); +extern void copy_wstorage(JCR *jcr, alist *storage, const char *where); +extern void set_wstorage(JCR *jcr, USTORE *store); +extern void free_wstorage(JCR *jcr); +extern void copy_rstorage(JCR *jcr, alist *storage, const char *where); +extern void set_rstorage(JCR *jcr, USTORE *store); +extern void free_rstorage(JCR *jcr); extern bool setup_job(JCR *jcr); extern void create_clones(JCR *jcr); extern bool create_restore_bootstrap_file(JCR *jcr); +extern void dird_free_jcr(JCR *jcr); +extern void dird_free_jcr_pointers(JCR *jcr); +extern void cancel_storage_daemon_job(JCR *jcr); +extern bool run_console_command(JCR *jcr, const char *cmd); /* migration.c */ extern bool do_migration(JCR *jcr); extern bool do_migration_init(JCR *jcr); extern void migration_cleanup(JCR *jcr, int TermCode); +extern bool set_migration_wstorage(JCR *jcr, POOL *pool); /* mountreq.c */ @@ -118,14 +146,16 @@ extern void mount_request(JCR *jcr, BSOCK *bs, char *buf); extern bool connect_to_storage_daemon(JCR *jcr, int retry_interval, int max_retry_time, int verbose); extern bool start_storage_daemon_job(JCR *jcr, alist *rstore, alist *wstore); -extern int start_storage_daemon_message_thread(JCR *jcr); +extern bool start_storage_daemon_message_thread(JCR *jcr); extern int bget_dirmsg(BSOCK *bs); extern void wait_for_storage_daemon_termination(JCR *jcr); /* next_vol.c */ -int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index, bool create); +int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index, + bool create, bool purge); bool has_volume_expired(JCR *jcr, MEDIA_DBR *mr); void check_if_volume_valid_or_recyclable(JCR *jcr, MEDIA_DBR *mr, const char **reason); +bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr); /* newvol.c */ bool newVolume(JCR *jcr, MEDIA_DBR *mr); @@ -141,13 +171,14 @@ extern void restore_cleanup(JCR *jcr, int TermCode); /* ua_acl.c */ -bool acl_access_ok(UAContext *ua, int acl, char *item); -bool acl_access_ok(UAContext *ua, int acl, char *item, int len); +bool acl_access_ok(UAContext *ua, int acl, const char *item); +bool acl_access_ok(UAContext *ua, int acl, const char *item, int len); /* ua_cmds.c */ -int do_a_command(UAContext *ua, const char *cmd); -int do_a_dot_command(UAContext *ua, const char *cmd); +bool do_a_command(UAContext *ua); +bool do_a_dot_command(UAContext *ua); int qmessagescmd(UAContext *ua, const char *cmd); +bool open_client_db(UAContext *ua); bool open_db(UAContext *ua); void close_db(UAContext *ua); enum e_pool_op { @@ -156,21 +187,29 @@ enum e_pool_op { }; int create_pool(JCR *jcr, B_DB *db, POOL *pool, e_pool_op op); void set_pool_dbr_defaults_in_media_dbr(MEDIA_DBR *mr, POOL_DBR *pr); +bool set_pooldbr_recyclepoolid(JCR *jcr, B_DB *db, POOL_DBR *pr, POOL *pool); void set_pooldbr_from_poolres(POOL_DBR *pr, POOL *pool, e_pool_op op); +int update_pool_recyclepool(JCR *jcr, B_DB *db, POOL *pool); /* ua_input.c */ int get_cmd(UAContext *ua, const char *prompt); bool get_pint(UAContext *ua, const char *prompt); bool get_yesno(UAContext *ua, const char *prompt); +bool is_yesno(char *val, int *ret); +int get_enabled(UAContext *ua, const char *val); void parse_ua_args(UAContext *ua); /* ua_label.c */ bool is_volume_name_legal(UAContext *ua, const char *name); int get_num_drives_from_SD(UAContext *ua); +void update_slots(UAContext *ua); + +/* ua_update.c */ +void update_vol_pool(UAContext *ua, char *val, MEDIA_DBR *mr, POOL_DBR *opr); /* ua_output.c */ void prtit(void *ctx, const char *msg); -int complete_jcr_for_job(JCR *jcr, JOB *job, POOL *pool); +bool complete_jcr_for_job(JCR *jcr, JOB *job, POOL *pool); RUN *find_next_run(RUN *run, JOB *job, time_t &runtime, int ndays); /* ua_restore.c */ @@ -178,7 +217,10 @@ int get_next_jobid_from_list(char **p, JobId_t *JobId); void find_storage_resource(UAContext *ua, RESTORE_CTX &rx, char *Storage, char *MediaType); /* ua_server.c */ -void bsendmsg(void *sock, const char *fmt, ...); +void bsendmsg(void *ua_ctx, const char *fmt, ...); +void berrormsg(void *ua_ctx, const char *fmt, ...); +void bwarningmsg(void *ua_ctx, const char *fmt, ...); +void binfomsg(void *ua_ctx, const char *fmt, ...); UAContext *new_ua_context(JCR *jcr); JCR *new_control_jcr(const char *base_name, int job_type); void free_ua_context(UAContext *ua); @@ -191,8 +233,8 @@ CLIENT *select_client_resource(UAContext *ua); FILESET *select_fileset_resource(UAContext *ua); int select_pool_and_media_dbr(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr); int select_media_dbr(UAContext *ua, MEDIA_DBR *mr); -bool select_pool_dbr(UAContext *ua, POOL_DBR *pr); -int select_client_dbr(UAContext *ua, CLIENT_DBR *cr); +bool select_pool_dbr(UAContext *ua, POOL_DBR *pr, const char *argk="pool"); +bool select_client_dbr(UAContext *ua, CLIENT_DBR *cr); void start_prompt(UAContext *ua, const char *msg); void add_prompt(UAContext *ua, const char *prompt); @@ -200,9 +242,10 @@ int do_prompt(UAContext *ua, const char *automsg, const char *msg, char *pro CAT *get_catalog_resource(UAContext *ua); STORE *get_storage_resource(UAContext *ua, bool use_default); int get_storage_drive(UAContext *ua, STORE *store); +int get_storage_slot(UAContext *ua, STORE *store); int get_media_type(UAContext *ua, char *MediaType, int max_media); -bool get_pool_dbr(UAContext *ua, POOL_DBR *pr); -int get_client_dbr(UAContext *ua, CLIENT_DBR *cr); +bool get_pool_dbr(UAContext *ua, POOL_DBR *pr, const char *argk="pool"); +bool get_client_dbr(UAContext *ua, CLIENT_DBR *cr); POOL *get_pool_resource(UAContext *ua); POOL *select_pool_resource(UAContext *ua); CLIENT *get_client_resource(UAContext *ua); @@ -215,6 +258,9 @@ int do_keyword_prompt(UAContext *ua, const char *msg, const char **list); int confirm_retention(UAContext *ua, utime_t *ret, const char *msg); bool get_level_from_name(JCR *jcr, const char *level_name); +/* ua_status.c */ +void list_dir_status_header(UAContext *ua); + /* ua_tree.c */ bool user_select_files_from_tree(TREE_CTX *tree); int insert_tree_handler(void *ctx, int num_fields, char **row); @@ -223,12 +269,20 @@ int insert_tree_handler(void *ctx, int num_fields, char **row); int prune_files(UAContext *ua, CLIENT *client); int prune_jobs(UAContext *ua, CLIENT *client, int JobType); bool prune_volume(UAContext *ua, MEDIA_DBR *mr); +int job_delete_handler(void *ctx, int num_fields, char **row); +int del_count_handler(void *ctx, int num_fields, char **row); +int file_delete_handler(void *ctx, int num_fields, char **row); +int get_prune_list_for_volume(UAContext *ua, MEDIA_DBR *mr, del_ctx *del); /* ua_purge.c */ +bool is_volume_purged(UAContext *ua, MEDIA_DBR *mr); bool mark_media_purged(UAContext *ua, MEDIA_DBR *mr); void purge_files_from_volume(UAContext *ua, MEDIA_DBR *mr ); -int purge_jobs_from_volume(UAContext *ua, MEDIA_DBR *mr); -void purge_files_from_job(UAContext *ua, JOB_DBR *jr); +bool purge_jobs_from_volume(UAContext *ua, MEDIA_DBR *mr); +void purge_files_from_jobs(UAContext *ua, char *jobs); +void purge_jobs_from_catalog(UAContext *ua, char *jobs); +void purge_job_list_from_catalog(UAContext *ua, del_ctx &del); +void purge_files_from_job_list(UAContext *ua, del_ctx &del); /* ua_run.c */