struct key_value_list_item *kv_item;
struct qb_list_head *iter, *tmp_iter;
int uid, gid;
+ cs_error_t cs_err;
+
+ cs_err = CS_OK;
switch (type) {
case PARSER_CB_START:
if (safe_atoq(value, &val, val_type) != 0) {
goto atoi_error;
}
- icmap_set_uint32_r(config_map, path, val);
+ if ((cs_err = icmap_set_uint32_r(config_map, path, val)) != CS_OK) {
+ goto icmap_set_error;
+ }
add_as_string = 0;
}
break;
if (safe_atoq(value, &val, val_type) != 0) {
goto atoi_error;
}
- icmap_set_uint32_r(config_map, path, val);
+ if ((cs_err = icmap_set_uint32_r(config_map, path, val)) != CS_OK) {
+ goto icmap_set_error;
+ }
add_as_string = 0;
}
if (safe_atoq(value, &val, val_type) != 0) {
goto atoi_error;
}
- icmap_set_uint8_r(config_map, path, val);
+ if ((cs_err = icmap_set_uint8_r(config_map, path, val)) != CS_OK) {
+ goto icmap_set_error;
+ }
add_as_string = 0;
}
break;
if (safe_atoq(value, &val, val_type) != 0) {
goto atoi_error;
}
- icmap_set_uint32_r(config_map, path, val);
+ if ((cs_err = icmap_set_uint32_r(config_map, path, val)) != CS_OK) {
+ goto icmap_set_error;
+ }
add_as_string = 0;
}
if ((strcmp(path, "quorum.device.master_wins") == 0)) {
if (safe_atoq(value, &val, val_type) != 0) {
goto atoi_error;
}
- icmap_set_uint8_r(config_map, path, val);
+ if ((cs_err = icmap_set_uint8_r(config_map, path, val)) != CS_OK) {
+ goto icmap_set_error;
+ }
add_as_string = 0;
}
break;
if (safe_atoq(value, &val, val_type) != 0) {
goto atoi_error;
}
- icmap_set_uint32_r(config_map,path, val);
+ if ((cs_err = icmap_set_uint32_r(config_map,path, val)) != CS_OK) {
+ goto icmap_set_error;
+ }
add_as_string = 0;
}
if (strcmp(path, "totem.knet_compression_level") == 0) {
if (safe_atoq(value, &val, val_type) != 0) {
goto atoi_error;
}
- icmap_set_int32_r(config_map, path, val);
+ if ((cs_err = icmap_set_int32_r(config_map, path, val)) != CS_OK) {
+ goto icmap_set_error;
+ }
add_as_string = 0;
}
if (strcmp(path, "totem.config_version") == 0) {
if (str_to_ull(value, &ull) != 0) {
goto atoi_error;
}
- icmap_set_uint64_r(config_map, path, ull);
+ if ((cs_err = icmap_set_uint64_r(config_map, path, ull)) != CS_OK) {
+ goto icmap_set_error;
+ }
add_as_string = 0;
}
if (strcmp(path, "totem.ip_version") == 0) {
}
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.config.uid.%u",
uid);
- icmap_set_uint8_r(config_map, key_name, 1);
+ if ((cs_err = icmap_set_uint8_r(config_map, key_name, 1)) != CS_OK) {
+ goto icmap_set_error;
+ }
add_as_string = 0;
} else if (strcmp(key, "gid") == 0) {
gid = gid_determine(value);
}
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.config.gid.%u",
gid);
- icmap_set_uint8_r(config_map, key_name, 1);
+ if ((cs_err = icmap_set_uint8_r(config_map, key_name, 1)) != CS_OK) {
+ goto icmap_set_error;
+ }
add_as_string = 0;
} else {
*error_string = "uidgid: Only uid and gid are allowed items";
goto atoi_error;
}
- icmap_set_uint32_r(config_map, key_name, val);
+ if ((cs_err = icmap_set_uint32_r(config_map, key_name, val)) != CS_OK) {
+ goto icmap_set_error;
+ }
add_as_string = 0;
}
if (add_as_string) {
- icmap_set_string_r(config_map, key_name, value);
+ if ((cs_err = icmap_set_string_r(config_map, key_name, value)) != CS_OK) {
+ goto icmap_set_error;
+ };
add_as_string = 0;
}
break;
if (safe_atoq(value, &val, val_type) != 0) {
goto atoi_error;
}
- icmap_set_uint32_r(config_map,path, val);
+ if ((cs_err = icmap_set_uint32_r(config_map,path, val)) != CS_OK) {
+ goto icmap_set_error;
+ }
add_as_string = 0;
}
break;
if (str_to_ull(value, &ull) != 0) {
goto atoi_error;
}
- icmap_set_uint64_r(config_map,path, ull);
+ if ((cs_err = icmap_set_uint64_r(config_map,path, ull)) != CS_OK) {
+ goto icmap_set_error;
+ }
add_as_string = 0;
}
break;
if (str_to_ull(value, &ull) != 0) {
goto atoi_error;
}
- icmap_set_uint64_r(config_map,path, ull);
+ if ((cs_err = icmap_set_uint64_r(config_map,path, ull)) != CS_OK) {
+ goto icmap_set_error;
+ }
add_as_string = 0;
}
break;
}
if (add_as_string) {
- icmap_set_string_r(config_map, path, value);
+ if ((cs_err = icmap_set_string_r(config_map, path, value)) != CS_OK) {
+ goto icmap_set_error;
+ }
}
break;
case PARSER_CB_SECTION_START:
if (data->bindnetaddr != NULL) {
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.bindnetaddr",
data->linknumber);
- icmap_set_string_r(config_map, key_name, data->bindnetaddr);
+ cs_err = icmap_set_string_r(config_map, key_name, data->bindnetaddr);
free(data->bindnetaddr);
data->bindnetaddr = NULL;
+
+ if (cs_err != CS_OK) {
+ goto icmap_set_error;
+ }
}
if (data->mcastaddr != NULL) {
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.mcastaddr",
data->linknumber);
- icmap_set_string_r(config_map, key_name, data->mcastaddr);
+ cs_err = icmap_set_string_r(config_map, key_name, data->mcastaddr);
free(data->mcastaddr);
data->mcastaddr = NULL;
+
+ if (cs_err != CS_OK) {
+ goto icmap_set_error;
+ }
}
if (data->broadcast != NULL) {
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.broadcast",
data->linknumber);
- icmap_set_string_r(config_map, key_name, data->broadcast);
+ cs_err = icmap_set_string_r(config_map, key_name, data->broadcast);
free(data->broadcast);
data->broadcast = NULL;
+
+ if (cs_err != CS_OK) {
+ goto icmap_set_error;
+ }
}
if (data->mcastport > -1) {
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.mcastport",
data->linknumber);
- icmap_set_uint16_r(config_map, key_name, data->mcastport);
+ if ((cs_err = icmap_set_uint16_r(config_map, key_name,
+ data->mcastport)) != CS_OK) {
+ goto icmap_set_error;
+ }
}
if (data->ttl > -1) {
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.ttl",
data->linknumber);
- icmap_set_uint8_r(config_map, key_name, data->ttl);
+ if ((cs_err = icmap_set_uint8_r(config_map, key_name, data->ttl)) != CS_OK) {
+ goto icmap_set_error;
+ }
}
if (data->knet_link_priority > -1) {
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.knet_link_priority",
data->linknumber);
- icmap_set_uint8_r(config_map, key_name, data->knet_link_priority);
+ if ((cs_err = icmap_set_uint8_r(config_map, key_name,
+ data->knet_link_priority)) != CS_OK) {
+ goto icmap_set_error;
+ }
}
if (data->knet_ping_interval > -1) {
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.knet_ping_interval",
data->linknumber);
- icmap_set_uint32_r(config_map, key_name, data->knet_ping_interval);
+ if ((cs_err = icmap_set_uint32_r(config_map, key_name,
+ data->knet_ping_interval)) != CS_OK) {
+ goto icmap_set_error;
+ }
}
if (data->knet_ping_timeout > -1) {
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.knet_ping_timeout",
data->linknumber);
- icmap_set_uint32_r(config_map, key_name, data->knet_ping_timeout);
+ if ((cs_err = icmap_set_uint32_r(config_map, key_name,
+ data->knet_ping_timeout)) != CS_OK) {
+ goto icmap_set_error;
+ }
}
if (data->knet_ping_precision > -1) {
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.knet_ping_precision",
data->linknumber);
- icmap_set_uint32_r(config_map, key_name, data->knet_ping_precision);
+ if ((cs_err = icmap_set_uint32_r(config_map, key_name,
+ data->knet_ping_precision)) != CS_OK) {
+ goto icmap_set_error;
+ }
}
if (data->knet_pong_count > -1) {
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.knet_pong_count",
data->linknumber);
- icmap_set_uint32_r(config_map, key_name, data->knet_pong_count);
+ if ((cs_err = icmap_set_uint32_r(config_map, key_name,
+ data->knet_pong_count)) != CS_OK) {
+ goto icmap_set_error;
+ }
}
if (data->knet_transport) {
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.knet_transport",
data->linknumber);
- icmap_set_string_r(config_map, key_name, data->knet_transport);
+ cs_err = icmap_set_string_r(config_map, key_name, data->knet_transport);
free(data->knet_transport);
+
+ if (cs_err != CS_OK) {
+ goto icmap_set_error;
+ }
}
ii = 0;
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.member.%u",
data->linknumber, ii);
- icmap_set_string_r(config_map, key_name, kv_item->value);
+ cs_err = icmap_set_string_r(config_map, key_name, kv_item->value);
free(kv_item->value);
free(kv_item->key);
free(kv_item);
ii++;
+
+ if (cs_err != CS_OK) {
+ goto icmap_set_error;
+ }
}
break;
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "logging.logger_subsys.%s.%s",
data->subsys, kv_item->key);
- icmap_set_string_r(config_map, key_name, kv_item->value);
+ cs_err = icmap_set_string_r(config_map, key_name, kv_item->value);
free(kv_item->value);
free(kv_item->key);
free(kv_item);
+
+ if (cs_err != CS_OK) {
+ goto icmap_set_error;
+ }
}
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "logging.logger_subsys.%s.subsys",
data->subsys);
- icmap_set_string_r(config_map, key_name, data->subsys);
+ cs_err = icmap_set_string_r(config_map, key_name, data->subsys);
free(data->subsys);
+ if (cs_err != CS_OK) {
+ goto icmap_set_error;
+ }
break;
case MAIN_CP_CB_DATA_STATE_LOGGING_DAEMON:
if (data->logging_daemon_name == NULL) {
kv_item->key);
}
}
- icmap_set_string_r(config_map, key_name, kv_item->value);
+ cs_err = icmap_set_string_r(config_map, key_name, kv_item->value);
free(kv_item->value);
free(kv_item->key);
free(kv_item);
+
+ if (cs_err != CS_OK) {
+ goto icmap_set_error;
+ }
}
if (data->subsys == NULL) {
if (strcmp(data->logging_daemon_name, "corosync") != 0) {
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "logging.logging_daemon.%s.name",
data->logging_daemon_name);
- icmap_set_string_r(config_map, key_name, data->logging_daemon_name);
+ cs_err = icmap_set_string_r(config_map, key_name, data->logging_daemon_name);
}
} else {
if (strcmp(data->logging_daemon_name, "corosync") == 0) {
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "logging.logger_subsys.%s.subsys",
data->subsys);
- icmap_set_string_r(config_map, key_name, data->subsys);
+ cs_err = icmap_set_string_r(config_map, key_name, data->subsys);
} else {
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "logging.logging_daemon.%s.%s.subsys",
data->logging_daemon_name, data->subsys);
- icmap_set_string_r(config_map, key_name, data->subsys);
+ cs_err = icmap_set_string_r(config_map, key_name, data->subsys);
+
+ if (cs_err != CS_OK) {
+ free(data->subsys);
+ free(data->logging_daemon_name);
+
+ goto icmap_set_error;
+ }
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "logging.logging_daemon.%s.%s.name",
data->logging_daemon_name, data->subsys);
- icmap_set_string_r(config_map, key_name, data->logging_daemon_name);
+ cs_err = icmap_set_string_r(config_map, key_name, data->logging_daemon_name);
}
}
free(data->subsys);
free(data->logging_daemon_name);
+ if (cs_err != CS_OK) {
+ goto icmap_set_error;
+ }
break;
case MAIN_CP_CB_DATA_STATE_NODELIST_NODE:
data->node_number++;
key, min_val, max_val, value);
*error_string = formated_err;
+ return (0);
+
+icmap_set_error:
+ if (snprintf(formated_err, sizeof(formated_err),
+ "Can't store key \"%s\" into icmap, returned error is %s",
+ key, cs_strerror(cs_err)) >= sizeof(formated_err)) {
+ *error_string = "Can't format parser error message";
+ } else {
+ *error_string = formated_err;
+ }
+
return (0);
}
{
char key_name[ICMAP_KEYNAME_MAXLEN];
int uid, gid;
+ static char formated_err[256];
+ cs_error_t cs_err;
+
+ cs_err = CS_OK;
switch (type) {
case PARSER_CB_START:
}
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.config.uid.%u",
uid);
- icmap_set_uint8_r(config_map, key_name, 1);
+ if ((cs_err = icmap_set_uint8_r(config_map, key_name, 1)) != CS_OK) {
+ goto icmap_set_error;
+ }
} else if (strcmp(path, "uidgid.gid") == 0) {
gid = gid_determine(value);
if (gid == -1) {
}
snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.config.gid.%u",
gid);
- icmap_set_uint8_r(config_map, key_name, 1);
+ if ((cs_err = icmap_set_uint8_r(config_map, key_name, 1)) != CS_OK) {
+ goto icmap_set_error;
+ }
} else {
*error_string = "uidgid: Only uid and gid are allowed items";
return (0);
}
return (1);
+
+icmap_set_error:
+ if (snprintf(formated_err, sizeof(formated_err),
+ "Can't store key \"%s\" into icmap, returned error is %s",
+ key, cs_strerror(cs_err)) >= sizeof(formated_err)) {
+ *error_string = "Can't format parser error message";
+ } else {
+ *error_string = formated_err;
+ }
+
+ return (0);
}
static int read_uidgid_files_into_icmap(