On a Monday in 2020, Michal Privoznik wrote:
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(a)redhat.com>
---
src/util/virnetdev.c | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
index b465bdac2e..8c149c5fc5 100644
--- a/src/util/virnetdev.c
+++ b/src/util/virnetdev.c
@@ -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 othewise.
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;
Reviewed-by: Ján Tomko <jtomko(a)redhat.com>
Jano