[Openais] [PATCH 1/3] Fix the ttl defaults and range

Russell Bryant russell at russellbryant.net
Mon Mar 14 18:53:07 PDT 2011


On Mon, Mar 14, 2011 at 6:44 PM, Angus Salkeld <asalkeld at redhat.com> wrote:
> 1) both IPv4 and IPv6 mcast should default to ttl=1
> 2) the range should be 0..255
>   0 is valid meaning localhost only (cluster of one)
>
> Signed-off-by: Angus Salkeld <asalkeld at redhat.com>
> ---
>  exec/totemconfig.c  |   10 +++-------
>  man/corosync.conf.5 |    2 +-
>  2 files changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/exec/totemconfig.c b/exec/totemconfig.c
> index 6bb4894..7039ba0 100644
> --- a/exec/totemconfig.c
> +++ b/exec/totemconfig.c
> @@ -394,11 +394,7 @@ printf ("couldn't find totem handle\n");
>                /*
>                 * Get the TTL
>                 */
> -               if (totem_config->interfaces[ringnumber].mcast_addr.family == AF_INET6) {
> -                       totem_config->interfaces[ringnumber].ttl = 255;
> -               } else {
> -                       totem_config->interfaces[ringnumber].ttl = 1;
> -               }
> +               totem_config->interfaces[ringnumber].ttl = 1;
>                if (!objdb_get_string (objdb, object_interface_handle, "ttl", &str)) {
>                        totem_config->interfaces[ringnumber].ttl = atoi (str);
>                }

Not changed code, but another nice change would be to use sscanf()
here.  Something like:

        if (!objdb_get_string (objdb, object_interface_handle, "ttl", &str)) {
                if (sscanf(str, "%hu",
&totem_config->interfaces[ringnumber].ttl) != 1) {
                    /* str not valid input for a ttl */
                }
        }


> @@ -477,8 +473,8 @@ int totem_config_validate (
>                        goto parse_error;
>                }
>
> -               if (totem_config->interfaces[i].ttl > 255 || totem_config->interfaces[i].ttl < 1) {
> -                       error_reason = "Invalid TTL (should be 1..255)";
> +               if (totem_config->interfaces[i].ttl > 255 || totem_config->interfaces[i].ttl < 0) {
> +                       error_reason = "Invalid TTL (should be 0..255)";
>                        goto parse_error;
>                }
>

It will never be < 0, since it's unsigned.  It's also 16-bit.  I guess
you could change it to unsigned 8 bit and make it so you don't need
this check at all (unless it's 16-bit for a valid reason elsewhere).

> diff --git a/man/corosync.conf.5 b/man/corosync.conf.5
> index d69cf89..eaf58c4 100644
> --- a/man/corosync.conf.5
> +++ b/man/corosync.conf.5
> @@ -131,7 +131,7 @@ please configure the mcastports with a gap.
>  ttl
>  This specifies the Time To Live (TTL). If you run your cluster on a routed
>  network then the default of "1" will be too small. This option provides
> -a way to increase this up to 255.
> +a way to increase this up to 255. The valid range is 0..255.
>
>  .TP
>  member
> --
> 1.7.4.1
>
> _______________________________________________
> Openais mailing list
> Openais at lists.linux-foundation.org
> https://lists.linux-foundation.org/mailman/listinfo/openais
>


More information about the Openais mailing list