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/