mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 23:37:42 +00:00
virNetDevGetFamilyId: Change signature
Introduced in v3.8.0-rc1~96, the virNetDevGetFamilyId() gets netlink family ID for passed family name (even though it's used only for getting "devlink" ID). Nevertheless, the function returns 0 on an error or if no family ID was found. This makes it harder for a caller to distinguish these two. Change the retval so that a negative value is returned upon error, zero is no ID found (but no error encountered) and a positive value is returned on successful translation. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
ee62b98e01
commit
ca61627433
@ -3057,11 +3057,15 @@ virNetDevGetEthtoolFeatures(virBitmapPtr bitmap,
|
||||
* This function supplies the devlink family id
|
||||
*
|
||||
* @family_name: the name of the family to query
|
||||
* @family_id: family ID
|
||||
*
|
||||
* Returns family id or 0 on failure.
|
||||
* Returns: 0 if no family was found,
|
||||
* 1 if family was found (@family_id is set),
|
||||
* -1 otherwise
|
||||
*/
|
||||
static uint32_t
|
||||
virNetDevGetFamilyId(const char *family_name)
|
||||
static int
|
||||
virNetDevGetFamilyId(const char *family_name,
|
||||
uint32_t *family_id)
|
||||
{
|
||||
struct nl_msg *nl_msg = NULL;
|
||||
struct nlmsghdr *resp = NULL;
|
||||
@ -3072,7 +3076,7 @@ virNetDevGetFamilyId(const char *family_name)
|
||||
};
|
||||
struct nlattr *tb[CTRL_ATTR_MAX + 1] = {NULL, };
|
||||
unsigned int recvbuflen;
|
||||
uint32_t family_id = 0;
|
||||
int ret = -1;
|
||||
|
||||
if (!(nl_msg = nlmsg_alloc_simple(GENL_ID_CTRL,
|
||||
NLM_F_REQUEST | NLM_F_ACK))) {
|
||||
@ -3098,15 +3102,18 @@ virNetDevGetFamilyId(const char *family_name)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (tb[CTRL_ATTR_FAMILY_ID] == NULL)
|
||||
if (tb[CTRL_ATTR_FAMILY_ID] == NULL) {
|
||||
ret = 0;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
family_id = *(uint32_t *)RTA_DATA(tb[CTRL_ATTR_FAMILY_ID]);
|
||||
*family_id = *(uint32_t *)RTA_DATA(tb[CTRL_ATTR_FAMILY_ID]);
|
||||
ret = 1;
|
||||
|
||||
cleanup:
|
||||
nlmsg_free(nl_msg);
|
||||
VIR_FREE(resp);
|
||||
return family_id;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@ -3140,7 +3147,7 @@ virNetDevSwitchdevFeature(const char *ifname,
|
||||
int ret = -1;
|
||||
uint32_t family_id;
|
||||
|
||||
if ((family_id = virNetDevGetFamilyId(DEVLINK_GENL_NAME)) <= 0)
|
||||
if (virNetDevGetFamilyId(DEVLINK_GENL_NAME, &family_id) <= 0)
|
||||
return ret;
|
||||
|
||||
if ((is_vf = virNetDevIsVirtualFunction(ifname)) < 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user