dect
/
libnl
Archived
13
0
Fork 0

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:
Thomas Graf 2011-06-09 12:28:04 +02:00
parent 4cb1666fe1
commit ed69b2a79b
2 changed files with 17 additions and 0 deletions

View File

@ -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 *);

View File

@ -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)