IIRC we added similar checks to cman when cman was configuring corosync. It might make sense to just skim all over cman{pre,}config and verify that we didn´t miss other sanity checks. Fabio On 11/10/2014 5:53 PM, Jan Friesse wrote: > When using multiple interfaces, it's necessary to use different > multicast address/port pair for each interface to make > rrp work correctly. This is now checked in parser. > > Signed-off-by: Jan Friesse <jfriesse@xxxxxxxxxx> > --- > exec/totemconfig.c | 19 ++++++++++++++++++- > man/corosync.conf.5 | 4 ++++ > 2 files changed, 22 insertions(+), 1 deletions(-) > > diff --git a/exec/totemconfig.c b/exec/totemconfig.c > index cab21fb..5d6eebc 100644 > --- a/exec/totemconfig.c > +++ b/exec/totemconfig.c > @@ -474,8 +474,9 @@ int totem_config_validate ( > static char local_error_reason[512]; > char parse_error[512]; > const char *error_reason = local_error_reason; > - int i; > + int i, j; > unsigned int interface_max = INTERFACE_MAX; > + unsigned int port1, port2; > > if (totem_config->interface_count == 0) { > error_reason = "No interfaces defined"; > @@ -535,6 +536,22 @@ int totem_config_validate ( > error_reason = "Not all bind address belong to the same IP family"; > goto parse_error; > } > + > + /* > + * Ensure mcast address/port differs > + */ > + if (totem_config->transport_number == TOTEM_TRANSPORT_UDP) { > + for (j = i + 1; j < totem_config->interface_count; j++) { > + port1 = totem_config->interfaces[i].ip_port; > + port2 = totem_config->interfaces[j].ip_port; > + if (totemip_equal(&totem_config->interfaces[i].mcast_addr, > + &totem_config->interfaces[j].mcast_addr) && > + (((port1 > port2 ? port1 : port2) - (port1 < port2 ? port1 : port2)) <= 1)) { > + error_reason = "Interfaces multicast address/port pair must differ"; > + goto parse_error; > + } > + } > + } > } > > if (totem_config->version != 2) { > diff --git a/man/corosync.conf.5 b/man/corosync.conf.5 > index a2c8000..8bafae3 100644 > --- a/man/corosync.conf.5 > +++ b/man/corosync.conf.5 > @@ -218,6 +218,10 @@ If only one interface directive is specified, none is automatically chosen. > If multiple interface directives are specified, only active or passive may > be chosen. > > +When using multiple interfaces, make sure to use different multicast > +address/port (port for same address must differ by at least two) pair > +for each interface (this is checked by parser) to make rrp works. > + > .TP > netmtu > This specifies the network maximum transmit unit. To set this value beyond > _______________________________________________ discuss mailing list discuss@xxxxxxxxxxxx http://lists.corosync.org/mailman/listinfo/discuss