Hi,

Thank you for the comments.


>> Why not just use sscanf?
Here's a fixed version of the previous patch, that uses sscanf.

> 
> Better yet, use a better interface like netlink rather than module
> parameters.
Wouldn't that be overkill?


best regards,

---
Signed-off-by: Tetsuo Takata <[EMAIL PROTECTED]>

--- linux-2.6.17.4/drivers/net/bonding/bond_main.c      2006-06-18 
10:49:35.000000000 +0900
+++ linux-2.6.17.4-enhance-ipcheck/drivers/net/bonding/bond_main.c      
2006-07-12 17:20:39.000000000 +0900
@@ -4455,7 +4455,36 @@ 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 ip1, ip2, ip3, ip4, notip = 0;
+               char dummy;
+
+               /* notip's number means error code for debug purpose */
+               do {
+                       if (sscanf(arp_ip_target[arp_ip_count], "%d.%d.%d.%d%c",
+                                               &ip1, &ip2, &ip3, &ip4, &dummy) 
!= 4) {
+                               notip = 1;
+                               break;
+                       } else {
+                               if (ip1 < 0 || ip1 > 255) {
+                                       notip = 1;
+                                       break;
+                               }
+                               if (ip2 < 0 || ip2 > 255) {
+                                       notip = 1;
+                                       break;
+                               }
+                               if (ip3 < 0 || ip3 > 255) {
+                                       notip = 1;
+                                       break;
+                               }
+                               if (ip4 < 0 || ip4 > 255) {
+                                       notip = 1;
+                                       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

Reply via email to