return config_errors(NULL);
}
+am_host_t *
+get_hostlist(void)
+{
+ return hostlist;
+}
+
am_host_t *
lookup_host(
const char *hostname)
disk = alloc(SIZEOF(disk_t));
bzero(disk, SIZEOF(disk_t));
disk->line = 0;
+ disk->allow_split = 0;
+ disk->splitsize = (off_t)0;
disk->tape_splitsize = (off_t)0;
disk->split_diskbuffer = NULL;
disk->fallback_splitsize = (off_t)0;
}
disk->dtype_name = dumptype_name(dtype);
+ disk->config = dtype;
disk->program = dumptype_get_program(dtype);
disk->exclude_list = duplicate_sl(dumptype_get_exclude(dtype).sl_list);
disk->exclude_file = duplicate_sl(dumptype_get_exclude(dtype).sl_file);
/* disk->frequency = dumptype_get_frequency(dtype);*/
disk->auth = dumptype_get_auth(dtype);
disk->maxdumps = dumptype_get_maxdumps(dtype);
+ disk->allow_split = dumptype_get_allow_split(dtype);
disk->tape_splitsize = dumptype_get_tape_splitsize(dtype);
disk->split_diskbuffer = dumptype_get_split_diskbuffer(dtype);
disk->fallback_splitsize = dumptype_get_fallback_splitsize(dtype);
+ if (disk->allow_split) {
+ tapetype_t *tapetype = lookup_tapetype(getconf_str(CNF_TAPETYPE));
+ disk->splitsize = tapetype_get_part_size(tapetype);
+ } else {
+ disk->splitsize = disk->tape_splitsize;
+ }
disk->maxpromoteday = dumptype_get_maxpromoteday(dtype);
disk->bumppercent = dumptype_get_bumppercent(dtype);
disk->bumpsize = dumptype_get_bumpsize(dtype);
disk->comprate[0] = dumptype_get_comprate(dtype)[0];
disk->comprate[1] = dumptype_get_comprate(dtype)[1];
disk->data_path = dumptype_get_data_path(dtype);
+ disk->dump_limit = dumptype_get_dump_limit(dtype);
/*
* Boolean parameters with no value (Appears here as value 2) defaults
disk_t * dp,
int to_server)
{
- char *auth_opt = stralloc("");
- char *kencrypt_opt = stralloc("");
- char *compress_opt = stralloc("");
+ char *auth_opt;
+ char *kencrypt_opt;
+ char *compress_opt;
char *encrypt_opt = stralloc("");
char *decrypt_opt = stralloc("");
- char *record_opt = stralloc("");
- char *index_opt = stralloc("");
+ char *record_opt;
+ char *index_opt;
char *data_path_opt = stralloc("");
char *exclude = stralloc("");
char *exclude_file = NULL;
qdpname = quote_string(dp->name);
if (am_has_feature(their_features, fe_options_auth)) {
auth_opt = vstralloc(" <auth>", dp->auth, "</auth>\n", NULL);
+ } else {
+ auth_opt = stralloc("");
}
switch(dp->compress) {
case COMP_FAST:
- compress_opt = " <compress>FAST</compress>\n";
+ compress_opt = stralloc(" <compress>FAST</compress>\n");
break;
case COMP_BEST:
- compress_opt = " <compress>BEST</compress>\n";
+ compress_opt = stralloc(" <compress>BEST</compress>\n");
break;
case COMP_CUST:
compress_opt = vstralloc(" <compress>CUSTOM"
" </compress>\n", NULL);
break;
case COMP_SERVER_FAST:
- compress_opt = " <compress>SERVER-FAST</compress>\n";
+ compress_opt = stralloc(" <compress>SERVER-FAST</compress>\n");
break;
case COMP_SERVER_BEST:
- compress_opt = " <compress>SERVER-BEST</compress>\n";
+ compress_opt = stralloc(" <compress>SERVER-BEST</compress>\n");
break;
case COMP_SERVER_CUST:
- compress_opt = " <compress>SERVER-CUSTOM</compress>\n";
compress_opt = vstralloc(" <compress>SERVER-CUSTOM"
"<custom-compress-program>",
dp->srvcompprog,
"</custom-compress-program>\n"
" </compress>\n", NULL);
break;
+ default:
+ compress_opt = stralloc("");
}
switch(dp->encrypt) {
if(dp->index) {
index_opt = " <index>YES</index>\n";
+ } else {
+ index_opt = "";
}
if (dp->kencrypt) {
kencrypt_opt = " <kencrypt>YES</kencrypt>\n";
+ } else {
+ kencrypt_opt = "";
}
if (am_has_feature(their_features, fe_xml_data_path)) {
switch(dp->data_path) {
case DATA_PATH_AMANDA:
+ amfree(data_path_opt);
data_path_opt = stralloc(" <datapath>AMANDA</datapath>\n");
break;
case DATA_PATH_DIRECTTCP:
char *s, *sc;
char *value, *b64value;
+ amfree(data_path_opt);
data_path_opt = stralloc(" <datapath>DIRECTTCP");
if (dp->dataport_list) {
s = sc = stralloc(dp->dataport_list);
amfree(qdpname);
amfree(auth_opt);
amfree(data_path_opt);
+ amfree(compress_opt);
amfree(exclude);
amfree(exclude_list);
amfree(exclude_file);
amfree(exc);
amfree(decrypt_opt);
amfree(encrypt_opt);
+ amfree(script_opt);
/* result contains at least 'auth=...' */
return result;
{
char *plugin;
char *b64plugin;
+ char *client_name;
xml_app_t xml_app;
proplist_t proplist;
proplist = application_get_property(application);
g_hash_table_foreach(proplist, xml_property, &xml_app);
+ client_name = application_get_client_name(application);
+ if (client_name && strlen(client_name) > 0 &&
+ am_has_feature(their_features, fe_application_client_name)) {
+ char *b64client_name = amxml_format_tag("client_name", client_name);
+ vstrextend(&xml_app.result, " ", b64client_name, "\n", NULL);
+ }
+
vstrextend(&xml_app.result, " </backup-program>\n", NULL);
amfree(b64plugin);
{
char *plugin;
char *b64plugin;
+ char *client_name;
char *xml_scr;
char *xml_scr1;
char *str = "";
execute_on = pp_script_get_execute_on(pp_script);
sep = "";
- eo_str = NULL;
+ eo_str = stralloc("");
if (execute_on & EXECUTE_ON_PRE_DLE_AMCHECK) {
eo_str = vstrextend(&eo_str, sep, "PRE-DLE-AMCHECK", NULL);
sep = ",";
proplist = pp_script_get_property(pp_script);
xml_app.result = stralloc("");
g_hash_table_foreach(proplist, xml_property, &xml_app);
+
+ client_name = pp_script_get_client_name(pp_script);
+ if (client_name && strlen(client_name) > 0 &&
+ am_has_feature(their_features, fe_script_client_name)) {
+ char *b64client_name = amxml_format_tag("client_name",
+ client_name);
+ vstrextend(&xml_app.result, " ", b64client_name, "\n", NULL);
+ }
+
xml_scr = vstrextend(&xml_scr, xml_scr1, xml_app.result, " </script>\n", NULL);
amfree(b64plugin);
amfree(xml_app.result);
+ amfree(xml_scr1);
}
return xml_scr;
}
dp->todo = 1;
match_a_disk = 1;
prev_match = 0;
- } else { /* dp->todo == 0 */
+ } else if (dp->todo == 0) {
match_a_disk = 1;
prev_match = 0;
dp_skip = dp;
+ } else { /* dp->todo == 1 */
+ match_a_disk = 1;
+ prev_match = 0;
}
}
}
return errstr;
}
+gboolean
+match_dumpfile(
+ dumpfile_t *file,
+ int sargc,
+ char ** sargv)
+{
+ disk_t d;
+ am_host_t h;
+ disklist_t dl;
+
+ /* rather than try to reproduce the adaptive matching logic in
+ * match_disklist, this simply creates a new, fake disklist with one
+ * element in it, and calls match_disklist directly */
+
+ bzero(&h, sizeof(h));
+ h.hostname = file->name;
+ h.disks = &d;
+
+ bzero(&d, sizeof(d));
+ d.host = &h;
+ d.hostname = file->name;
+ d.name = file->disk;
+ d.device = file->disk;
+ d.todo = 1;
+
+ dl.head = dl.tail = &d;
+
+ (void)match_disklist(&dl, sargc, sargv);
+ return d.todo;
+}
+
netif_t *
disklist_netifs(void)
{