mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-22 22:13:18 +00:00
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 'c9027d8f4' Signed-off-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
9efab5da16
commit
d0a3a1ff92
@ -3239,7 +3239,8 @@ virNetDevGFeatureAvailable(const char *ifname, struct ethtool_gfeatures *cmd)
|
|||||||
* @ifname: name of the interface
|
* @ifname: name of the interface
|
||||||
* @out: bitmap of the available virNetDevFeature feature bits
|
* @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
|
int
|
||||||
virNetDevGetFeatures(const char *ifname,
|
virNetDevGetFeatures(const char *ifname,
|
||||||
@ -3271,6 +3272,12 @@ virNetDevGetFeatures(const char *ifname,
|
|||||||
if (!(*out = virBitmapNew(VIR_NET_DEV_FEAT_LAST)))
|
if (!(*out = virBitmapNew(VIR_NET_DEV_FEAT_LAST)))
|
||||||
return -1;
|
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++) {
|
for (i = 0; i < ARRAY_CARDINALITY(cmds); i++) {
|
||||||
cmd.cmd = cmds[i].cmd;
|
cmd.cmd = cmds[i].cmd;
|
||||||
if (virNetDevFeatureAvailable(ifname, &cmd) == 1)
|
if (virNetDevFeatureAvailable(ifname, &cmd) == 1)
|
||||||
|
Loading…
Reference in New Issue
Block a user