mirror of
https://git.proxmox.com/git/mirror_corosync
synced 2026-02-01 18:13:11 +00:00
Add option to specify ip version
Default is ipv4. Signed-off-by: Jan Friesse <jfriesse@redhat.com> Reviewed-by: Fabio M. Di Nitto <fdinitto@redhat.com>
This commit is contained in:
parent
92e0f9c7bb
commit
dd588d004e
@ -501,6 +501,14 @@ static int main_config_parser_cb(const char *path,
|
||||
icmap_set_uint64(path, ull);
|
||||
add_as_string = 0;
|
||||
}
|
||||
if (strcmp(path, "totem.ip_version") == 0) {
|
||||
if ((strcmp(value, "ipv4") != 0) &&
|
||||
(strcmp(value, "ipv6") != 0)) {
|
||||
*error_string = "Invalid ip_version type";
|
||||
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
if (strcmp(path, "totem.crypto_type") == 0) {
|
||||
if ((strcmp(value, "nss") != 0) &&
|
||||
(strcmp(value, "aes256") != 0) &&
|
||||
|
||||
@ -154,6 +154,8 @@ static corosync_timer_handle_t corosync_stats_timer_handle;
|
||||
|
||||
static const char *corosync_lock_file = LOCALSTATEDIR"/run/corosync.pid";
|
||||
|
||||
static int ip_version = AF_INET;
|
||||
|
||||
qb_loop_t *cs_poll_handle_get (void)
|
||||
{
|
||||
return (corosync_poll_handle);
|
||||
@ -592,7 +594,7 @@ static void totem_dynamic_notify(
|
||||
if (remove_old_member) {
|
||||
log_printf(LOGSYS_LEVEL_DEBUG,
|
||||
"removing dynamic member %s for ring %u", (char *)old_val.data, ring_no);
|
||||
if (totemip_parse(&member, (char *)old_val.data, 0) == 0) {
|
||||
if (totemip_parse(&member, (char *)old_val.data, ip_version) == 0) {
|
||||
totempg_member_remove (&member, ring_no);
|
||||
}
|
||||
}
|
||||
@ -600,7 +602,7 @@ static void totem_dynamic_notify(
|
||||
if (add_new_member) {
|
||||
log_printf(LOGSYS_LEVEL_DEBUG,
|
||||
"adding dynamic member %s for ring %u", (char *)new_val.data, ring_no);
|
||||
if (totemip_parse(&member, (char *)new_val.data, 0) == 0) {
|
||||
if (totemip_parse(&member, (char *)new_val.data, ip_version) == 0) {
|
||||
totempg_member_add (&member, ring_no);
|
||||
}
|
||||
}
|
||||
@ -913,6 +915,7 @@ static void set_icmap_ro_keys_flag (void)
|
||||
icmap_set_ro_access("totem.crypto_hash", CS_FALSE, CS_TRUE);
|
||||
icmap_set_ro_access("totem.crypto_compat", CS_FALSE, CS_TRUE);
|
||||
icmap_set_ro_access("totem.secauth", CS_FALSE, CS_TRUE);
|
||||
icmap_set_ro_access("totem.ip_version", CS_FALSE, CS_TRUE);
|
||||
icmap_set_ro_access("totem.rrp_mode", CS_FALSE, CS_TRUE);
|
||||
icmap_set_ro_access("totem.netmtu", CS_FALSE, CS_TRUE);
|
||||
icmap_set_ro_access("qb.ipc_type", CS_FALSE, CS_TRUE);
|
||||
@ -1177,6 +1180,8 @@ int main (int argc, char **argv, char **envp)
|
||||
corosync_exit_error (COROSYNC_DONE_MAINCONFIGREAD);
|
||||
}
|
||||
|
||||
ip_version = totem_config.ip_version;
|
||||
|
||||
totem_config.totem_logging_configuration = totem_logging_configuration;
|
||||
totem_config.totem_logging_configuration.log_subsys_id = _logsys_subsys_create("TOTEM", "totem");
|
||||
totem_config.totem_logging_configuration.log_level_security = LOGSYS_LEVEL_WARNING;
|
||||
|
||||
@ -210,6 +210,7 @@ static int get_cluster_mcast_addr (
|
||||
const char *cluster_name,
|
||||
const struct totem_ip_address *bindnet,
|
||||
unsigned int ringnumber,
|
||||
int ip_version,
|
||||
struct totem_ip_address *res)
|
||||
{
|
||||
uint16_t clusterid;
|
||||
@ -237,7 +238,7 @@ static int get_cluster_mcast_addr (
|
||||
return (-1);
|
||||
}
|
||||
|
||||
err = totemip_parse (res, addr, 0);
|
||||
err = totemip_parse (res, addr, ip_version);
|
||||
|
||||
return (err);
|
||||
}
|
||||
@ -278,7 +279,7 @@ static int find_local_node_in_nodelist(struct totem_config *totem_config)
|
||||
continue;
|
||||
}
|
||||
|
||||
res = totemip_parse (&node_addr, node_addr_str, 0);
|
||||
res = totemip_parse (&node_addr, node_addr_str, totem_config->ip_version);
|
||||
free(node_addr_str);
|
||||
if (res == -1) {
|
||||
continue ;
|
||||
@ -331,7 +332,7 @@ static void put_nodelist_members_to_config(struct totem_config *totem_config)
|
||||
member_count = totem_config->interfaces[ringnumber].member_count;
|
||||
|
||||
res = totemip_parse(&totem_config->interfaces[ringnumber].member_list[member_count],
|
||||
node_addr_str, 0);
|
||||
node_addr_str, totem_config->ip_version);
|
||||
if (res != -1) {
|
||||
totem_config->interfaces[ringnumber].member_count++;
|
||||
}
|
||||
@ -379,7 +380,7 @@ static void config_convert_nodelist_to_interface(struct totem_config *totem_conf
|
||||
continue ;
|
||||
}
|
||||
|
||||
if (totemip_parse(&node_addr, node_addr_str, 0) == -1) {
|
||||
if (totemip_parse(&node_addr, node_addr_str, totem_config->ip_version) == -1) {
|
||||
free(node_addr_str);
|
||||
continue ;
|
||||
}
|
||||
@ -490,6 +491,17 @@ extern int totem_config_read (
|
||||
|
||||
icmap_get_string("totem.cluster_name", &cluster_name);
|
||||
|
||||
totem_config->ip_version = AF_INET;
|
||||
if (icmap_get_string("totem.ip_version", &str) == CS_OK) {
|
||||
if (strcmp(str, "ipv4") == 0) {
|
||||
totem_config->ip_version = AF_INET;
|
||||
}
|
||||
if (strcmp(str, "ipv6") == 0) {
|
||||
totem_config->ip_version = AF_INET6;
|
||||
}
|
||||
free(str);
|
||||
}
|
||||
|
||||
/*
|
||||
* Get things that might change in the future
|
||||
*/
|
||||
@ -542,7 +554,7 @@ extern int totem_config_read (
|
||||
*/
|
||||
snprintf(tmp_key, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.mcastaddr", ringnumber);
|
||||
if (icmap_get_string(tmp_key, &str) == CS_OK) {
|
||||
res = totemip_parse (&totem_config->interfaces[ringnumber].mcast_addr, str, 0);
|
||||
res = totemip_parse (&totem_config->interfaces[ringnumber].mcast_addr, str, totem_config->ip_version);
|
||||
free(str);
|
||||
} else {
|
||||
/*
|
||||
@ -552,6 +564,7 @@ extern int totem_config_read (
|
||||
res = get_cluster_mcast_addr (cluster_name,
|
||||
&totem_config->interfaces[ringnumber].bindnet,
|
||||
ringnumber,
|
||||
totem_config->ip_version,
|
||||
&totem_config->interfaces[ringnumber].mcast_addr);
|
||||
}
|
||||
|
||||
@ -562,7 +575,7 @@ extern int totem_config_read (
|
||||
totem_config->broadcast_use = 1;
|
||||
totemip_parse (
|
||||
&totem_config->interfaces[ringnumber].mcast_addr,
|
||||
"255.255.255.255", 0);
|
||||
"255.255.255.255", totem_config->ip_version);
|
||||
}
|
||||
free(str);
|
||||
}
|
||||
@ -605,7 +618,7 @@ extern int totem_config_read (
|
||||
|
||||
if (icmap_get_string(member_iter_key, &str) == CS_OK) {
|
||||
res = totemip_parse (&totem_config->interfaces[ringnumber].member_list[member_count++],
|
||||
str, 0);
|
||||
str, totem_config->ip_version);
|
||||
}
|
||||
}
|
||||
icmap_iter_finalize(member_iter);
|
||||
|
||||
@ -181,6 +181,8 @@ struct totem_config {
|
||||
totem_transport_t transport_number;
|
||||
|
||||
unsigned int miss_count_const;
|
||||
|
||||
int ip_version;
|
||||
};
|
||||
|
||||
#define TOTEM_CONFIGURATION_TYPE
|
||||
|
||||
@ -287,6 +287,12 @@ from single-node membership to multiple nodes membership, other nodes
|
||||
config_versions are collected. If current node config_version is not
|
||||
equal to highest of collected versions, corosync is terminated.
|
||||
|
||||
.TP
|
||||
ip_version
|
||||
Specifies version of IP to use for communication. Value can be one of
|
||||
ipv4 or ipv6. Default (if unspecified) is ipv4.
|
||||
|
||||
|
||||
Within the
|
||||
.B totem
|
||||
directive, there are several configuration options which are used to control
|
||||
|
||||
Loading…
Reference in New Issue
Block a user