Why not do this instead of a big switch statement?

pval = strtol(msk, NULL, 10);
if ((pval > 30) || (pval < 1)) {
  opal_output(0, "opal_iftupletoaddr: unknown mask");
  free(addr);
  return OPAL_ERROR;
}
*mask = 0xFFFFFFFF << (32 - pval);


On Fri, Apr 29, 2011 at 1:56 PM,  <r...@osl.iu.edu> wrote:
> Author: rhc
> Date: 2011-04-29 13:56:15 EDT (Fri, 29 Apr 2011)
> New Revision: 24665
> URL: https://svn.open-mpi.org/trac/ompi/changeset/24665
>
> Log:
> Cover all the netmask values
>
> Text files modified:
>   trunk/opal/util/if.c |   103 +++++++++++++++++++++++++++++++++++++--
>   1 files changed, 96 insertions(+), 7 deletions(-)
>
> Modified: trunk/opal/util/if.c
> ==============================================================================
> --- trunk/opal/util/if.c        (original)
> +++ trunk/opal/util/if.c        2011-04-29 13:56:15 EDT (Fri, 29 Apr 2011)
> @@ -534,13 +534,102 @@
>                  * much of the addr to use: e.g., /16
>                  */
>                 pval = strtol(msk, NULL, 10);
> -                if (24 == pval) {
> -                    *mask = 0xFFFFFF00;
> -                } else if (16 == pval) {
> -                    *mask = 0xFFFF0000;
> -                } else if (8 == pval) {
> -                    *mask = 0xFF000000;
> -                } else {
> +                switch(pval) {
> +                case 30:
> +                    *mask = parse_dots("255.255.255.252");
> +                    break;
> +                case 29:
> +                    *mask = parse_dots("255.255.255.248");
> +                    break;
> +                case 28:
> +                    *mask = parse_dots("255.255.255.240");
> +                    break;
> +                case 27:
> +                    *mask = parse_dots("255.255.255.224");
> +                    break;
> +                case 26:
> +                    *mask = parse_dots("255.255.255.192");
> +                    break;
> +                case 25:
> +                    *mask = parse_dots("255.255.255.128");
> +                    break;
> +                case 24:
> +                    break;
> +                    *mask = parse_dots("255.255.255.0");
> +                    break;
> +                case 23:
> +                    *mask = parse_dots("255.255.254.0");
> +                    break;
> +                case 22:
> +                    *mask = parse_dots("255.255.252.0");
> +                    break;
> +                case 21:
> +                    *mask = parse_dots("255.255.248.0");
> +                    break;
> +                case 20:
> +                    *mask = parse_dots("255.255.240.0");
> +                    break;
> +                case 19:
> +                    *mask = parse_dots("255.255.224.0");
> +                    break;
> +                case 18:
> +                    *mask = parse_dots("255.255.192.0");
> +                    break;
> +                case 17:
> +                    *mask = parse_dots("255.255.128.0");
> +                    break;
> +                case 16:
> +                    *mask = parse_dots("255.255.0.0");
> +                    break;
> +                case 15:
> +                    *mask = parse_dots("255.254.0.0");
> +                    break;
> +                case 14:
> +                    *mask = parse_dots("255.252.0.0");
> +                    break;
> +                case 13:
> +                    *mask = parse_dots("255.248.0.0");
> +                    break;
> +                case 12:
> +                    *mask = parse_dots("255.240.0.0");
> +                    break;
> +                case 11:
> +                    *mask = parse_dots("255.224.0.0");
> +                    break;
> +                case 10:
> +                    *mask = parse_dots("255.192.0.0");
> +                    break;
> +                case 9:
> +                    *mask = parse_dots("255.128.0.0");
> +                    break;
> +                case 8:
> +                    *mask = parse_dots("255.0.0.0");
> +                    break;
> +                case 7:
> +                    *mask = parse_dots("254.0.0.0");
> +                    break;
> +                case 6:
> +                    *mask = parse_dots("252.0.0.0");
> +                    break;
> +                case 5:
> +                    *mask = parse_dots("248.0.0.0");
> +                    break;
> +                case 4:
> +                    *mask = parse_dots("240.0.0.0");
> +                    break;
> +                case 3:
> +                    *mask = parse_dots("224.0.0.0");
> +                    break;
> +                case 2:
> +                    *mask = parse_dots("192.0.0.0");
> +                    break;
> +                case 1:
> +                    *mask = parse_dots("128.0.0.0");
> +                    break;
> +                case 0:
> +                    *mask = parse_dots("0.0.0.0");
> +                    break;
> +                default:
>                     opal_output(0, "opal_iftupletoaddr: unknown mask");
>                     free(addr);
>                     return OPAL_ERROR;
> _______________________________________________
> svn-full mailing list
> svn-f...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/svn-full
>



-- 
Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/
 timat...@open-mpi.org || tmat...@gmail.com
    I'm a bright... http://www.the-brights.net/

Reply via email to