[PATCH] Trivial patch for SIOCGIFCOUNT

From: BALBIR SINGH (balbir.singh@wipro.com)
Date: Tue Oct 09 2001 - 08:23:47 EST


Hello Linus, Alan, David,
        To make the API orthogonal, I have included a patch for SIOCGIFCOUNT,
which currently returns -EINVAL. The only reason I am providing this patch
is to make the API complete and make it easier to port applications from
other UNIX like OS'es.

I have verified and am sure that this patch works. The priority of this patch
is not very high, but it would be good to have a orthogonal/complete API.

The patch is against 2.4.2-2 (official rh 7.1). I can provide one against 2.4.10
or 2.4.10-pre16 if required.

--- dev.c.org Tue Oct 9 18:46:01 2001
+++ dev.c Tue Oct 9 18:36:39 2001
@@ -1651,6 +1651,40 @@
 }

 /*
+ * Implement the SIOCGIFCOUNT, ioctl to keep the API orthogonal.
+ * Basically taken from dev_ifconf - Balbir
+ */
+static int dev_ifcount(char *arg)
+{
+ struct net_device *dev;
+ int i;
+ unsigned int total;
+
+ total = 0;
+ /*
+ * May be introducing something like for_each_netdev(dev)
+ * on the lines of for_each_pci_dev would be useful here.
+ */
+ for (dev = dev_base; dev != NULL; dev = dev->next) {
+ for (i = 0; i < NPROTO; i++) {
+ if (gifconf_list[i]) {
+ int done;
+
+ done = gifconf_list[i](dev, NULL, 0);
+ if (done < 0)
+ return -EFAULT;
+ total++;
+ }
+ }
+ }
+
+ if (copy_to_user(arg, &total, sizeof(int)))
+ return -EFAULT;
+
+ return 0;
+}
+
+/*
  * This is invoked by the /proc filesystem handler to display a device
  * in detail.
  */
@@ -2218,6 +2252,18 @@
                rtnl_shunlock();
                return ret;
        }
+
+ /*
+ * We do not need an exclusive lock for returning the count,
+ * shared lock is fine with us.
+ */
+ if (cmd == SIOCGIFCOUNT) {
+ rtnl_shlock();
+ ret = dev_ifcount((char *)arg);
+ rtnl_shunlock();
+ return ret;
+ }
+
        if (cmd == SIOCGIFNAME) {
                return dev_ifname((struct ifreq *)arg);
        }

Comments, rejections, etc
Balbir



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Oct 15 2001 - 21:00:24 EST