mirror of
https://gitee.com/openharmony/third_party_libnl
synced 2024-11-27 20:20:30 +00:00
route/link: add link info compare operation
Signed-off-by: Balki Raman <ramanb@cumulusnetworks.com> Signed-off-by: David Ahern <dsa@cumulusnetworks.com> Signed-off-by: Thomas Haller <thaller@redhat.com>
This commit is contained in:
parent
acdeaf498d
commit
d1c0190241
@ -60,6 +60,10 @@ struct rtnl_link_info_ops
|
||||
* in either io_alloc() or io_parse(). */
|
||||
void (*io_free)(struct rtnl_link *);
|
||||
|
||||
/** Called to compare link info parameters between two links. */
|
||||
int (*io_compare)(struct rtnl_link *, struct rtnl_link *,
|
||||
uint32_t attrs, int flags);
|
||||
|
||||
struct nl_list_head io_list;
|
||||
};
|
||||
|
||||
@ -145,6 +149,8 @@ extern int rtnl_link_af_unregister(struct rtnl_link_af_ops *);
|
||||
extern int rtnl_link_af_data_compare(struct rtnl_link *a,
|
||||
struct rtnl_link *b,
|
||||
int family);
|
||||
extern int rtnl_link_info_data_compare(struct rtnl_link *a,
|
||||
struct rtnl_link *b);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -960,6 +960,7 @@ static int link_compare(struct nl_object *_a, struct nl_object *_b,
|
||||
goto protinfo_mismatch;
|
||||
}
|
||||
|
||||
diff |= LINK_DIFF(LINKINFO, rtnl_link_info_data_compare(a, b) != 0);
|
||||
out:
|
||||
return diff;
|
||||
|
||||
|
@ -391,6 +391,28 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare link info data
|
||||
* @arg a Link object a
|
||||
* @arg b Link object b
|
||||
*
|
||||
* This function will compare link_info data between two links
|
||||
* a and b
|
||||
*
|
||||
* @return 0 if link_info data matches or is not present
|
||||
* or != 0 if it mismatches.
|
||||
*/
|
||||
int rtnl_link_info_data_compare(struct rtnl_link *a, struct rtnl_link *b)
|
||||
{
|
||||
if (a->l_info_ops != b->l_info_ops)
|
||||
return ~0;
|
||||
|
||||
if (!a->l_info_ops || !a->l_info_ops->io_compare)
|
||||
return 0;
|
||||
|
||||
return a->l_info_ops->io_compare(a, b, ~0, 0);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
||||
/** @} */
|
||||
|
Loading…
Reference in New Issue
Block a user