cls: add rtnl_u32_get_classid() API

[thaller@redhat.com: modified patch to use rtnl_tc_data_peek()]

http://lists.infradead.org/pipermail/libnl/2015-March/001841.html

Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Thomas Haller <thaller@redhat.com>
This commit is contained in:
Cong Wang 2015-03-03 22:05:34 -08:00 committed by Thomas Haller
parent 337af71720
commit d8f080d94f
3 changed files with 16 additions and 0 deletions

View file

@ -23,6 +23,7 @@ extern "C" {
extern void rtnl_u32_set_handle(struct rtnl_cls *, int, int, int);
extern int rtnl_u32_set_classid(struct rtnl_cls *, uint32_t);
extern int rtnl_u32_get_classid(struct rtnl_cls *, uint32_t *);
extern int rtnl_u32_set_divisor(struct rtnl_cls *, uint32_t);
extern int rtnl_u32_set_link(struct rtnl_cls *, uint32_t);
extern int rtnl_u32_set_hashtable(struct rtnl_cls *, uint32_t);

View file

@ -415,6 +415,20 @@ int rtnl_u32_set_classid(struct rtnl_cls *cls, uint32_t classid)
return 0;
}
int rtnl_u32_get_classid(struct rtnl_cls *cls, uint32_t *classid)
{
struct rtnl_u32 *u;
if (!(u = rtnl_tc_data_peek(TC_CAST(cls))))
return -NLE_INVAL;
if (!(u->cu_mask & U32_ATTR_CLASSID))
return -NLE_INVAL;
*classid = u->cu_classid;
return 0;
}
int rtnl_u32_set_divisor(struct rtnl_cls *cls, uint32_t divisor)
{
struct rtnl_u32 *u;

View file

@ -864,4 +864,5 @@ global:
rtnl_tc_str2stat;
rtnl_u32_add_mark;
rtnl_u32_del_mark;
rtnl_u32_get_classid;
} libnl_3;