netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC] let mortals use ethtool
@ 2006-09-28 19:25 Stephen Hemminger
  2006-09-28 19:53 ` James Morris
                   ` (3 more replies)
  0 siblings, 4 replies; 20+ messages in thread
From: Stephen Hemminger @ 2006-09-28 19:25 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev


There is no reason to not allow non-admin users to query network
statistics and settings.


--- linux-2.6.orig/net/core/ethtool.c
+++ linux-2.6/net/core/ethtool.c
@@ -806,13 +806,6 @@ int dev_ethtool(struct ifreq *ifr)
 	int rc;
 	unsigned long old_features;
 
-	/*
-	 * XXX: This can be pushed down into the ethtool_* handlers that
-	 * need it.  Keep existing behaviour for the moment.
-	 */
-	if (!capable(CAP_NET_ADMIN))
-		return -EPERM;
-
 	if (!dev || !netif_device_present(dev))
 		return -ENODEV;
 
@@ -822,6 +815,33 @@ int dev_ethtool(struct ifreq *ifr)
 	if (copy_from_user(&ethcmd, useraddr, sizeof (ethcmd)))
 		return -EFAULT;
 
+	/* Allow some commands to be done by anyone */
+	switch(ethcmd) {
+	case ETHTOOL_GSET:
+	case ETHTOOL_GDRVINFO:
+	case ETHTOOL_GREGS:
+	case ETHTOOL_GWOL:
+	case ETHTOOL_GMSGLVL:
+	case ETHTOOL_GLINK:
+	case ETHTOOL_GCOALESCE:
+	case ETHTOOL_GRINGPARAM:
+	case ETHTOOL_GPAUSEPARAM:
+	case ETHTOOL_GRXCSUM:
+	case ETHTOOL_GTXCSUM:
+	case ETHTOOL_GSG:
+	case ETHTOOL_GSTRINGS:
+	case ETHTOOL_PHYS_ID:
+	case ETHTOOL_GSTATS:
+	case ETHTOOL_GTSO:
+	case ETHTOOL_GPERMADDR:
+	case ETHTOOL_GUFO:
+	case ETHTOOL_GGSO:
+		break;
+	default:
+		if (!capable(CAP_NET_ADMIN))
+			return -EPERM;
+	}
+
 	if(dev->ethtool_ops->begin)
 		if ((rc = dev->ethtool_ops->begin(dev)) < 0)
 			return rc;
@@ -947,6 +967,10 @@ int dev_ethtool(struct ifreq *ifr)
 	return rc;
 
  ioctl:
+	/* Keep existing behaviour for the moment.	 */
+	if (!capable(CAP_NET_ADMIN))
+		return -EPERM;
+
 	if (dev->do_ioctl)
 		return dev->do_ioctl(dev, ifr, SIOCETHTOOL);
 	return -EOPNOTSUPP;

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2006-09-28 22:43 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-28 19:25 [RFC] let mortals use ethtool Stephen Hemminger
2006-09-28 19:53 ` James Morris
2006-09-28 20:43   ` Jeff Garzik
2006-09-28 19:56 ` Auke Kok
2006-09-28 21:53   ` David Miller
2006-09-28 22:03     ` Michael Chan
2006-09-28 22:22       ` David Miller
2006-09-28 20:17 ` Michael Chan
2006-09-28 20:28   ` Jeff Garzik
2006-09-28 20:32   ` James Morris
2006-09-28 20:35     ` Jeff Garzik
2006-09-28 20:39       ` Michael Chan
2006-09-28 22:16     ` David Miller
2006-09-28 22:30       ` Jeff Garzik
2006-09-28 22:13   ` David Miller
2006-09-28 22:25     ` Jeff Garzik
2006-09-28 22:33       ` David Miller
2006-09-28 20:23 ` Jeff Garzik
2006-09-28 22:15   ` David Miller
2006-09-28 22:41   ` Stephen Hemminger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).