提交 d0a3a1ff 编写于 作者: J John Ferlan

virnetdev: Check for root in virNetDevGetFeatures

Since the SIOCETHTOOL ioctl only works for privileged daemons, if called
when not root, then virNetDevGetFeatures will VIR_DEBUG a message and
return 0 as if the functions were not available for the architecture.
This effectively returns an empty bitmap indicating no features available.

Introduced by commit id 'c9027d8f'
Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
上级 9efab5da
......@@ -3239,7 +3239,8 @@ virNetDevGFeatureAvailable(const char *ifname, struct ethtool_gfeatures *cmd)
* @ifname: name of the interface
* @out: bitmap of the available virNetDevFeature feature bits
*
* Returns 0 on success, -1 on failure.
* Returns 0 on success or if called from session mode, -1 on failure.
* If called from session mode, an empty bitmap is returned.
*/
int
virNetDevGetFeatures(const char *ifname,
......@@ -3271,6 +3272,12 @@ virNetDevGetFeatures(const char *ifname,
if (!(*out = virBitmapNew(VIR_NET_DEV_FEAT_LAST)))
return -1;
/* Only fetch features if we're privileged, but no need to fail */
if (geteuid() != 0) {
VIR_DEBUG("ETHTOOL feature bits not available in session mode");
return 0;
}
for (i = 0; i < ARRAY_CARDINALITY(cmds); i++) {
cmd.cmd = cmds[i].cmd;
if (virNetDevFeatureAvailable(ifname, &cmd) == 1)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册