+ case R_DIRECTOR:
+ sendit(sock, "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n",
+ reshdr->name, res->res_dir.MaxConcurrentJobs,
+ edit_uint64(res->res_dir.FDConnectTimeout, ed1),
+ edit_uint64(res->res_dir.SDConnectTimeout, ed2));
+ if (res->res_dir.query_file) {
+ sendit(sock, " query_file=%s\n", res->res_dir.query_file);
+ }
+ if (res->res_dir.messages) {
+ sendit(sock, " --> ");
+ dump_resource(-R_MSGS, (RES *)res->res_dir.messages, sendit, sock);
+ }
+ break;
+ case R_CONSOLE:
+ sendit(sock, "Console: name=%s SSL=%d\n",
+ res->res_con.hdr.name, res->res_con.enable_ssl);
+ break;
+ case R_COUNTER:
+ if (res->res_counter.WrapCounter) {
+ sendit(sock, "Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n",
+ res->res_counter.hdr.name, res->res_counter.MinValue,
+ res->res_counter.MaxValue, res->res_counter.CurrentValue,
+ res->res_counter.WrapCounter->hdr.name);
+ } else {
+ sendit(sock, "Counter: name=%s min=%d max=%d\n",
+ res->res_counter.hdr.name, res->res_counter.MinValue,
+ res->res_counter.MaxValue);
+ }
+ if (res->res_counter.Catalog) {
+ sendit(sock, " --> ");
+ dump_resource(-R_CATALOG, (RES *)res->res_counter.Catalog, sendit, sock);
+ }
+ break;
+
+ case R_CLIENT:
+ sendit(sock, "Client: name=%s address=%s FDport=%d MaxJobs=%u\n",
+ res->res_client.hdr.name, res->res_client.address, res->res_client.FDport,
+ res->res_client.MaxConcurrentJobs);
+ sendit(sock, " JobRetention=%s FileRetention=%s AutoPrune=%d\n",
+ edit_utime(res->res_client.JobRetention, ed1),
+ edit_utime(res->res_client.FileRetention, ed2),
+ res->res_client.AutoPrune);
+ if (res->res_client.catalog) {
+ sendit(sock, " --> ");
+ dump_resource(-R_CATALOG, (RES *)res->res_client.catalog, sendit, sock);
+ }
+ break;
+ case R_STORAGE:
+ sendit(sock, "Storage: name=%s address=%s SDport=%d MaxJobs=%u\n\
+ DeviceName=%s MediaType=%s\n",
+ res->res_store.hdr.name, res->res_store.address, res->res_store.SDport,
+ res->res_store.MaxConcurrentJobs,
+ res->res_store.dev_name, res->res_store.media_type);
+ break;
+ case R_CATALOG:
+ sendit(sock, "Catalog: name=%s address=%s DBport=%d db_name=%s\n\
+ db_user=%s\n",
+ res->res_cat.hdr.name, NPRT(res->res_cat.db_address),
+ res->res_cat.db_port, res->res_cat.db_name, NPRT(res->res_cat.db_user));
+ break;
+ case R_JOB:
+ case R_JOBDEFS:
+ sendit(sock, "%s: name=%s JobType=%d level=%s Priority=%d MaxJobs=%u\n",
+ type == R_JOB ? "Job" : "JobDefs",
+ res->res_job.hdr.name, res->res_job.JobType,
+ level_to_str(res->res_job.level), res->res_job.Priority,
+ res->res_job.MaxConcurrentJobs);
+ sendit(sock, " Resched=%d Times=%d Interval=%s Spool=%d\n",
+ res->res_job.RescheduleOnError, res->res_job.RescheduleTimes,
+ edit_uint64_with_commas(res->res_job.RescheduleInterval, ed1),
+ res->res_job.spool_data);
+ if (res->res_job.client) {
+ sendit(sock, " --> ");
+ dump_resource(-R_CLIENT, (RES *)res->res_job.client, sendit, sock);
+ }
+ if (res->res_job.fileset) {
+ sendit(sock, " --> ");
+ dump_resource(-R_FILESET, (RES *)res->res_job.fileset, sendit, sock);
+ }
+ if (res->res_job.schedule) {
+ sendit(sock, " --> ");
+ dump_resource(-R_SCHEDULE, (RES *)res->res_job.schedule, sendit, sock);
+ }
+ if (res->res_job.RestoreWhere) {
+ sendit(sock, " --> Where=%s\n", NPRT(res->res_job.RestoreWhere));
+ }
+ if (res->res_job.RestoreBootstrap) {
+ sendit(sock, " --> Bootstrap=%s\n", NPRT(res->res_job.RestoreBootstrap));
+ }
+ if (res->res_job.RunBeforeJob) {
+ sendit(sock, " --> RunBefore=%s\n", NPRT(res->res_job.RunBeforeJob));
+ }
+ if (res->res_job.RunAfterJob) {
+ sendit(sock, " --> RunAfter=%s\n", NPRT(res->res_job.RunAfterJob));
+ }
+ if (res->res_job.RunAfterFailedJob) {
+ sendit(sock, " --> RunAfterFailed=%s\n", NPRT(res->res_job.RunAfterFailedJob));
+ }
+ if (res->res_job.WriteBootstrap) {
+ sendit(sock, " --> WriteBootstrap=%s\n", NPRT(res->res_job.WriteBootstrap));
+ }
+ if (res->res_job.storage) {
+ sendit(sock, " --> ");
+ dump_resource(-R_STORAGE, (RES *)res->res_job.storage, sendit, sock);
+ }
+ if (res->res_job.pool) {
+ sendit(sock, " --> ");
+ dump_resource(-R_POOL, (RES *)res->res_job.pool, sendit, sock);
+ }
+ if (res->res_job.full_pool) {
+ sendit(sock, " --> ");
+ dump_resource(-R_POOL, (RES *)res->res_job.full_pool, sendit, sock);
+ }
+ if (res->res_job.inc_pool) {
+ sendit(sock, " --> ");
+ dump_resource(-R_POOL, (RES *)res->res_job.inc_pool, sendit, sock);
+ }
+ if (res->res_job.dif_pool) {
+ sendit(sock, " --> ");
+ dump_resource(-R_POOL, (RES *)res->res_job.dif_pool, sendit, sock);
+ }
+ if (res->res_job.verify_job) {
+ sendit(sock, " --> ");
+ dump_resource(-type, (RES *)res->res_job.verify_job, sendit, sock);
+ }
+ break;
+ if (res->res_job.messages) {
+ sendit(sock, " --> ");
+ dump_resource(-R_MSGS, (RES *)res->res_job.messages, sendit, sock);
+ }
+ break;
+ case R_FILESET:
+ {
+ int i, j, k;
+ sendit(sock, "FileSet: name=%s\n", res->res_fs.hdr.name);
+ for (i=0; i<res->res_fs.num_includes; i++) {
+ INCEXE *incexe = res->res_fs.include_items[i];
+ for (j=0; j<incexe->num_opts; j++) {
+ FOPTS *fo = incexe->opts_list[j];
+ sendit(sock, " O %s\n", fo->opts);
+ for (k=0; k<fo->regex.size(); k++) {
+ sendit(sock, " R %s\n", fo->regex.get(k));
+ }
+ for (k=0; k<fo->wild.size(); k++) {
+ sendit(sock, " W %s\n", fo->wild.get(k));
+ }
+ for (k=0; k<fo->base.size(); k++) {
+ sendit(sock, " B %s\n", fo->base.get(k));
+ }
+ sendit(sock, " N\n");