dect
/
libnl
Archived
13
0
Fork 0

Add new rtnl_link_af_data_compare function to compare af_data

This patch adds a new api rtnl_linl_af_data_compare to
compare link af_data

Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: Thomas Graf <tgraf@suug.ch>
This commit is contained in:
roopa 2013-01-17 16:29:03 -08:00 committed by Thomas Graf
parent 6b4a2cb634
commit 99399ca9c0
2 changed files with 35 additions and 0 deletions

View File

@ -142,6 +142,9 @@ extern void * rtnl_link_af_data(const struct rtnl_link *,
const struct rtnl_link_af_ops *);
extern int rtnl_link_af_register(struct rtnl_link_af_ops *);
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);
#ifdef __cplusplus
}

View File

@ -350,6 +350,38 @@ errout:
return err;
}
/**
* Compare af data for a link address family
* @arg a Link object a
* @arg b Link object b
* @arg family af data family
*
* This function will compare af_data between two links
* a and b of family given by arg family
*
* @return 0 if address family specific data matches or is not present
* or != 0 if it mismatches.
*/
int rtnl_link_af_data_compare(struct rtnl_link *a, struct rtnl_link *b,
int family)
{
struct rtnl_link_af_ops *af_ops = rtnl_link_af_ops_lookup(family);
if (!af_ops)
return ~0;
if (!a->l_af_data[family] && !b->l_af_data[family])
return 0;
if (!a->l_af_data[family] || !b->l_af_data[family])
return ~0;
if (af_ops->ao_compare)
return af_ops->ao_compare(a, b, family, ~0, 0);
return 0;
}
/** @} */
/** @} */