From f42f195a80ffb7a5dcc355a56b8fe229692718e5 Mon Sep 17 00:00:00 2001 From: Thomas Graf Date: Wed, 15 Oct 2008 13:01:46 +0200 Subject: [PATCH] Error handling for rtnl_cls_set_kind() & addition of rtnl_cls_get_ops() --- include/netlink/route/classifier.h | 3 ++- lib/route/cls_obj.c | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/include/netlink/route/classifier.h b/include/netlink/route/classifier.h index 01a26a9..b434000 100644 --- a/include/netlink/route/classifier.h +++ b/include/netlink/route/classifier.h @@ -42,7 +42,8 @@ extern int rtnl_cls_delete(struct nl_sock *, struct rtnl_cls *, int); extern void rtnl_cls_set_ifindex(struct rtnl_cls *, int); extern void rtnl_cls_set_handle(struct rtnl_cls *, uint32_t); extern void rtnl_cls_set_parent(struct rtnl_cls *, uint32_t); -extern void rtnl_cls_set_kind(struct rtnl_cls *, const char *); +extern int rtnl_cls_set_kind(struct rtnl_cls *, const char *); +extern struct rtnl_cls_ops *rtnl_cls_get_ops(struct rtnl_cls *); extern void rtnl_cls_set_prio(struct rtnl_cls *, uint16_t); extern uint16_t rtnl_cls_get_prio(struct rtnl_cls *); diff --git a/lib/route/cls_obj.c b/lib/route/cls_obj.c index 6c92572..217b6d0 100644 --- a/lib/route/cls_obj.c +++ b/lib/route/cls_obj.c @@ -143,10 +143,20 @@ void rtnl_cls_set_parent(struct rtnl_cls *f, uint32_t parent) tca_set_parent((struct rtnl_tca *) f, parent); } -void rtnl_cls_set_kind(struct rtnl_cls *f, const char *kind) +int rtnl_cls_set_kind(struct rtnl_cls *f, const char *kind) { tca_set_kind((struct rtnl_tca *) f, kind); + f->c_ops = __rtnl_cls_lookup_ops(kind); + if (f->c_ops == NULL) + return -NLE_OBJ_NOTFOUND; + + return 0; +} + +struct rtnl_cls_ops *rtnl_cls_get_ops(struct rtnl_cls *cls) +{ + return cls->c_ops; } void rtnl_cls_set_prio(struct rtnl_cls *cls, uint16_t prio)