Add rtnl_tc_data_check()
Behaves like rtnl_tc_data() but verifies that the traffic control object is of the expected type.
This commit is contained in:
parent
4cb1666fe1
commit
ed69b2a79b
2 changed files with 17 additions and 0 deletions
|
@ -124,6 +124,8 @@ extern int rtnl_tc_compare(struct nl_object *,
|
|||
uint32_t, int);
|
||||
|
||||
extern void * rtnl_tc_data(struct rtnl_tc *);
|
||||
extern void * rtnl_tc_data_check(struct rtnl_tc *,
|
||||
struct rtnl_tc_ops *);
|
||||
|
||||
extern struct rtnl_tc_ops * rtnl_tc_lookup_ops(enum rtnl_tc_type,
|
||||
const char *);
|
||||
|
|
|
@ -1010,6 +1010,21 @@ void *rtnl_tc_data(struct rtnl_tc *tc)
|
|||
return nl_data_get(tc->tc_subdata);
|
||||
}
|
||||
|
||||
void *rtnl_tc_data_check(struct rtnl_tc *tc, struct rtnl_tc_ops *ops)
|
||||
{
|
||||
if (tc->tc_ops != ops) {
|
||||
char buf[64];
|
||||
|
||||
snprintf(buf, sizeof(buf),
|
||||
"tc object %p used in %s context but is of type %s",
|
||||
tc, ops->to_kind, tc->tc_ops->to_kind);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return rtnl_tc_data(tc);
|
||||
}
|
||||
|
||||
void rtnl_tc_type_register(struct rtnl_tc_type_ops *ops)
|
||||
{
|
||||
if (ops->tt_type > RTNL_TC_TYPE_MAX)
|
||||
|
|
Loading…
Add table
Reference in a new issue