On Wed, 12 Jul 2006 13:25:52 +0900 Tetsuo Takata <[EMAIL PROTECTED]> wrote:
> Hi, > > > I found this in drivers/net/bonding/bond_main.c. > > /* not complete check, but should be good enough to > > catch mistakes */ > > I made a patch which I believe is little bit better than this, > I hope... > > > best regards, > > --- > Signed-off-by: Tetsuo Takata <[EMAIL PROTECTED]> > > --- linux-2.6.17.3/drivers/net/bonding/bond_main.c 2006-07-01 > 02:37:38.000000000 +0900 > +++ linux-2.6.17.3-bonding-ipcheck/drivers/net/bonding/bond_main.c > 2006-07-12 09:51:12.000000000 +0900 > @@ -4455,7 +4455,113 @@ static int bond_check_params(struct bond > arp_ip_count++) { > /* not complete check, but should be good enough to > catch mistakes */ > - if (!isdigit(arp_ip_target[arp_ip_count][0])) { > + int i, notip = 0; > + char *cp; > + > + cp = arp_ip_target[arp_ip_count]; > + > + /* notip's number is the error code for debug purpose */ > + do { > + if (cp == NULL) { > + notip = 1; > + break; > + } > + > + /* check digit */ > + for (i = 0; isdigit(*cp); i++) { > + if ((i < 0) || (i >= 3)) { > + notip = 2; > + break; > + } > + cp++; > + } > + if (notip) > + break; > + > + if (i == 0) { > + notip = 3; > + break; > + } > + > + /* check delimiter */ > + if (*cp != '.') { > + notip = 4; > + break; > + } > + cp++; > + > + /* check digit */ > + for (i = 0; isdigit(*cp); i++) { > + if ((i < 0) || (i >= 3)) { > + notip = 5; > + break; > + } > + cp++; > + } > + if (notip) > + break; > + > + if (i == 0) { > + notip = 6; > + break; > + } > + > + /* check delimiter */ > + if (*cp != '.') { > + notip = 7; > + break; > + } > + cp++; > + > + /* check digit */ > + for (i = 0; isdigit(*cp); i++) { > + if ((i < 0) || (i >= 3)) { > + notip = 8; > + break; > + } > + cp++; > + } > + if (notip) > + break; > + > + if (i == 0) { > + notip = 9; > + break; > + } > + > + /* check delimiter */ > + if (*cp != '.') { > + notip = 10; > + break; > + } > + cp++; > + > + /* check digit */ > + for (i = 0; isdigit(*cp); i++) { > + if ((i < 0) || (i >= 3)) { > + notip = 11; > + break; > + } > + cp++; > + } > + if (notip) > + break; > + > + if (i == 0) { > + notip = 12; > + break; > + } > + > + > + /* check EOS */ > + if (*cp != '\0') { > + notip = 13; > + break; > + } > + > + } while(0); > + > + if (notip) { > printk(KERN_WARNING DRV_NAME > ": Warning: bad arp_ip_target module parameter " > "(%s), ARP monitoring will not be performed\n", > > - > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to [EMAIL PROTECTED] > More majordomo info at http://vger.kernel.org/majordomo-info.html Why not just use sscanf? -- If one would give me six lines written by the hand of the most honest man, I would find something in them to have him hanged. -- Cardinal Richlieu - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html