mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
util: add virNetDevGetPhysPortName
This commit add virNetDevGetPhysPortName to read netdevice phys_port_name from sysfs. It also refactor the code so virNetDevGetPhysPortName and virNetDevGetPhysPortID will use same method to read the netdevice sysfs. Signed-off-by: Moshe Levi <moshele@nvidia.com> Reviewed-by: Laine Stump <laine@redhat.com>
This commit is contained in:
parent
36aabc86d5
commit
97ebb98245
@ -1147,6 +1147,29 @@ virNetDevGetPCIDevice(const char *devName)
|
||||
# endif
|
||||
|
||||
|
||||
/* A wrapper to get content of file from ifname SYSFS_NET_DIR
|
||||
*/
|
||||
static int
|
||||
virNetDevGetSysfsFileValue(const char *ifname,
|
||||
const char *fileName,
|
||||
char **sysfsFileData)
|
||||
{
|
||||
g_autofree char *sysfsFile = NULL;
|
||||
|
||||
*sysfsFileData = NULL;
|
||||
|
||||
if (virNetDevSysfsFile(&sysfsFile, ifname, fileName) < 0)
|
||||
return -1;
|
||||
|
||||
/* a failure to read just means the driver doesn't support
|
||||
* <fileName>, so set success now and ignore the return from
|
||||
* virFileReadAllQuiet().
|
||||
*/
|
||||
|
||||
ignore_value(virFileReadAllQuiet(sysfsFile, 1024, sysfsFileData));
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* virNetDevGetPhysPortID:
|
||||
*
|
||||
@ -1165,20 +1188,29 @@ int
|
||||
virNetDevGetPhysPortID(const char *ifname,
|
||||
char **physPortID)
|
||||
{
|
||||
g_autofree char *physPortIDFile = NULL;
|
||||
return virNetDevGetSysfsFileValue(ifname, "phys_port_id", physPortID);
|
||||
}
|
||||
|
||||
*physPortID = NULL;
|
||||
|
||||
if (virNetDevSysfsFile(&physPortIDFile, ifname, "phys_port_id") < 0)
|
||||
return -1;
|
||||
|
||||
/* a failure to read just means the driver doesn't support
|
||||
* phys_port_id, so set success now and ignore the return from
|
||||
* virFileReadAllQuiet().
|
||||
*/
|
||||
|
||||
ignore_value(virFileReadAllQuiet(physPortIDFile, 1024, physPortID));
|
||||
return 0;
|
||||
/**
|
||||
* virNetDevGetPhysPortName:
|
||||
*
|
||||
* @ifname: name of a netdev
|
||||
*
|
||||
* @physPortName: pointer to char* that will receive @ifname's
|
||||
* phys_port_name from sysfs (null terminated
|
||||
* string). Could be NULL if @ifname's net driver doesn't
|
||||
* support phys_port_name (most netdev drivers
|
||||
* don't). Caller is responsible for freeing the string
|
||||
* when finished.
|
||||
*
|
||||
* Returns 0 on success or -1 on failure.
|
||||
*/
|
||||
int
|
||||
virNetDevGetPhysPortName(const char *ifname,
|
||||
char **physPortName)
|
||||
{
|
||||
return virNetDevGetSysfsFileValue(ifname, "phys_port_name", physPortName);
|
||||
}
|
||||
|
||||
|
||||
@ -1433,6 +1465,17 @@ virNetDevGetPhysPortID(const char *ifname G_GNUC_UNUSED,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
virNetDevGetPhysPortName(const char *ifname G_GNUC_UNUSED,
|
||||
char **physPortName)
|
||||
{
|
||||
/* this actually should never be called, and is just here to
|
||||
* satisfy the linker.
|
||||
*/
|
||||
*physPortName = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
virNetDevGetVirtualFunctions(const char *pfname G_GNUC_UNUSED,
|
||||
char ***vfname G_GNUC_UNUSED,
|
||||
|
@ -250,6 +250,10 @@ int virNetDevGetPhysPortID(const char *ifname,
|
||||
char **physPortID)
|
||||
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
|
||||
G_GNUC_WARN_UNUSED_RESULT;
|
||||
int virNetDevGetPhysPortName(const char *ifname,
|
||||
char **physPortName)
|
||||
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
|
||||
G_GNUC_WARN_UNUSED_RESULT;
|
||||
|
||||
int virNetDevGetVirtualFunctions(const char *pfname,
|
||||
char ***vfname,
|
||||
|
Loading…
Reference in New Issue
Block a user