Can you terminate the warnings with a period? Reviewed-by: Steven Dake <sdake@xxxxxxxxxx> On 01/19/2012 03:36 AM, Jan Friesse wrote: > Signed-off-by: Jan Friesse <jfriesse@xxxxxxxxxx> > --- > exec/main.c | 11 +++++++- > exec/totemconfig.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++--- > exec/totemconfig.h | 6 +++- > 3 files changed, 82 insertions(+), 7 deletions(-) > > diff --git a/exec/main.c b/exec/main.c > index 52af1ae..7eaddff 100644 > --- a/exec/main.c > +++ b/exec/main.c > @@ -1036,6 +1036,7 @@ int main (int argc, char **argv, char **envp) > struct stat stat_out; > char corosync_lib_dir[PATH_MAX]; > enum e_corosync_done flock_err; > + uint64_t totem_config_warnings; > > /* default configuration > */ > @@ -1142,12 +1143,20 @@ int main (int argc, char **argv, char **envp) > corosync_exit_error (COROSYNC_DONE_DIR_NOT_PRESENT); > } > > - res = totem_config_read (&totem_config, &error_string); > + res = totem_config_read (&totem_config, &error_string, &totem_config_warnings); > if (res == -1) { > log_printf (LOGSYS_LEVEL_ERROR, "%s", error_string); > corosync_exit_error (COROSYNC_DONE_MAINCONFIGREAD); > } > > + if (totem_config_warnings & TOTEM_CONFIG_WARNING_MEMBERS_IGNORED) { > + log_printf (LOGSYS_LEVEL_WARNING, "member section is used together with nodelist. members ignored"); > + } > + > + if (totem_config_warnings & TOTEM_CONFIG_WARNING_MEMBERS_DEPRECATED) { > + log_printf (LOGSYS_LEVEL_WARNING, "member section is deprecated. Please migrate config file to nodelist"); > + } > + > res = totem_config_keyread (&totem_config, &error_string); > if (res == -1) { > log_printf (LOGSYS_LEVEL_ERROR, "%s", error_string); > diff --git a/exec/totemconfig.c b/exec/totemconfig.c > index 1d90417..6aa7de9 100644 > --- a/exec/totemconfig.c > +++ b/exec/totemconfig.c > @@ -258,9 +258,60 @@ static int find_local_node_in_nodelist(struct totem_config *totem_config) > return (local_node_pos); > } > > +static void put_nodelist_members_to_config(struct totem_config *totem_config) > +{ > + icmap_iter_t iter, iter2; > + const char *iter_key, *iter_key2; > + int res = 0; > + int node_pos; > + char tmp_key[ICMAP_KEYNAME_MAXLEN]; > + char *node_addr_str; > + int member_count; > + unsigned int ringnumber = 0; > + > + iter = icmap_iter_init("nodelist.node."); > + while ((iter_key = icmap_iter_next(iter, NULL, NULL)) != NULL) { > + res = sscanf(iter_key, "nodelist.node.%u.%s", &node_pos, tmp_key); > + if (res != 2) { > + continue; > + } > + > + if (strcmp(tmp_key, "ring0_addr") != 0) { > + continue; > + } > + > + snprintf(tmp_key, ICMAP_KEYNAME_MAXLEN, "nodelist.node.%u.", node_pos); > + iter2 = icmap_iter_init(tmp_key); > + while ((iter_key2 = icmap_iter_next(iter2, NULL, NULL)) != NULL) { > + res = sscanf(iter_key2, "nodelist.node.%u.ring%u_addr", &node_pos, &ringnumber); > + if (res != 2) { > + continue; > + } > + > + if (icmap_get_string(iter_key2, &node_addr_str) != CS_OK) { > + continue; > + } > + > + member_count = totem_config->interfaces[ringnumber].member_count; > + > + res = totemip_parse(&totem_config->interfaces[ringnumber].member_list[member_count], > + node_addr_str, 0); > + if (res != -1) { > + totem_config->interfaces[ringnumber].member_count++; > + } > + free(node_addr_str); > + } > + > + icmap_iter_finalize(iter2); > + } > + > + icmap_iter_finalize(iter); > +} > + > extern int totem_config_read ( > struct totem_config *totem_config, > - const char **error_string) > + const char **error_string, > + uint64_t *warnings) > { > int res = 0; > char *str; > @@ -277,6 +328,8 @@ extern int totem_config_read ( > int i; > int local_node_pos; > > + *warnings = 0; > + > memset (totem_config, 0, sizeof (struct totem_config)); > totem_config->interfaces = malloc (sizeof (struct totem_interface) * INTERFACE_MAX); > if (totem_config->interfaces == 0) { > @@ -410,6 +463,16 @@ extern int totem_config_read ( > snprintf(tmp_key, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.member.", ringnumber); > member_iter = icmap_iter_init(tmp_key); > while ((member_iter_key = icmap_iter_next(member_iter, NULL, NULL)) != NULL) { > + if (member_count == 0) { > + if (icmap_get_string("nodelist.node.0.ring0_addr", &str) == CS_OK) { > + free(str); > + *warnings |= TOTEM_CONFIG_WARNING_MEMBERS_IGNORED; > + break; > + } else { > + *warnings |= TOTEM_CONFIG_WARNING_MEMBERS_DEPRECATED; > + } > + } > + > if (icmap_get_string(member_iter_key, &str) == CS_OK) { > res = totemip_parse (&totem_config->interfaces[ringnumber].member_list[member_count++], > str, 0); > @@ -455,7 +518,7 @@ extern int totem_config_read ( > free(cluster_name); > > /* > - * If we have nodelist ... > + * Check existence of nodelist > */ > if (icmap_get_string("nodelist.node.0.ring0_addr", &str) == CS_OK) { > free(str); > @@ -464,11 +527,10 @@ extern int totem_config_read ( > */ > local_node_pos = find_local_node_in_nodelist(totem_config); > if (local_node_pos != -1) { > - /* > - * Store icmap key > - */ > icmap_set_uint32("nodelist.local_node_pos", local_node_pos); > } > + > + put_nodelist_members_to_config(totem_config); > } > > add_totem_config_notification(totem_config); > diff --git a/exec/totemconfig.h b/exec/totemconfig.h > index cee52b7..8f41092 100644 > --- a/exec/totemconfig.h > +++ b/exec/totemconfig.h > @@ -43,9 +43,13 @@ > > #include "totemsrp.h" > > +#define TOTEM_CONFIG_WARNING_MEMBERS_IGNORED (1<<1) > +#define TOTEM_CONFIG_WARNING_MEMBERS_DEPRECATED (1<<2) > + > extern int totem_config_read ( > struct totem_config *totem_config, > - const char **error_string); > + const char **error_string, > + uint64_t *warnings); > > extern int totem_config_validate ( > struct totem_config *totem_config, _______________________________________________ discuss mailing list discuss@xxxxxxxxxxxx http://lists.corosync.org/mailman/listinfo/discuss