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