libnl 1.1.4
Variables

Variables

struct nl_object_ops class_obj_ops
 

Allocation/Freeing

struct rtnl_class * rtnl_class_alloc (void)
 
void rtnl_class_put (struct rtnl_class *class)
 

Leaf Qdisc

struct rtnl_qdisc * rtnl_class_leaf_qdisc (struct rtnl_class *class, struct nl_cache *cache)
 Lookup the leaf qdisc of a class.
 

Iterators

void rtnl_class_foreach_child (struct rtnl_class *class, struct nl_cache *cache, void(*cb)(struct nl_object *, void *), void *arg)
 Call a callback for each child of a class.
 
void rtnl_class_foreach_cls (struct rtnl_class *class, struct nl_cache *cache, void(*cb)(struct nl_object *, void *), void *arg)
 Call a callback for each classifier attached to the class.
 

Attributes

void rtnl_class_set_ifindex (struct rtnl_class *class, int ifindex)
 
int rtnl_class_get_ifindex (struct rtnl_class *class)
 
void rtnl_class_set_handle (struct rtnl_class *class, uint32_t handle)
 
uint32_t rtnl_class_get_handle (struct rtnl_class *class)
 
void rtnl_class_set_parent (struct rtnl_class *class, uint32_t parent)
 
uint32_t rtnl_class_get_parent (struct rtnl_class *class)
 
void rtnl_class_set_kind (struct rtnl_class *class, const char *name)
 
char * rtnl_class_get_kind (struct rtnl_class *class)
 
uint64_t rtnl_class_get_stat (struct rtnl_class *class, enum rtnl_tc_stats_id id)
 

Detailed Description

Function Documentation

◆ rtnl_class_alloc()

struct rtnl_class * rtnl_class_alloc ( void  )

Definition at line 121 of file class_obj.c.

122{
123 return (struct rtnl_class *) nl_object_alloc(&class_obj_ops);
124}
struct nl_object * nl_object_alloc(struct nl_object_ops *ops)
Allocate a new object of kind specified by the operations handle.
Definition: object.c:42

◆ rtnl_class_put()

void rtnl_class_put ( struct rtnl_class *  class)

Definition at line 126 of file class_obj.c.

127{
128 nl_object_put((struct nl_object *) class);
129}
void nl_object_put(struct nl_object *obj)
Release a reference from an object.
Definition: object.c:178

◆ rtnl_class_leaf_qdisc()

struct rtnl_qdisc * rtnl_class_leaf_qdisc ( struct rtnl_class *  class,
struct nl_cache *  cache 
)
Parameters
classthe parent class
cachea qdisc cache including at laest all qdiscs of the interface the specified class is attached to
Returns
The qdisc from the cache or NULL if the class has no leaf qdisc

Definition at line 145 of file class_obj.c.

147{
148 struct rtnl_qdisc *leaf;
149
150 if (!class->c_info)
151 return NULL;
152
153 leaf = rtnl_qdisc_get_by_parent(cache, class->c_ifindex,
154 class->c_handle);
155 if (!leaf || leaf->q_handle != class->c_info)
156 return NULL;
157
158 return leaf;
159}
struct rtnl_qdisc * rtnl_qdisc_get_by_parent(struct nl_cache *cache, int ifindex, uint32_t parent)
Look up qdisc by its parent in the provided cache.
Definition: qdisc.c:407

References rtnl_qdisc_get_by_parent().

◆ rtnl_class_foreach_child()

void rtnl_class_foreach_child ( struct rtnl_class *  class,
struct nl_cache *  cache,
void(*)(struct nl_object *, void *)  cb,
void *  arg 
)
Parameters
classthe parent class
cachea class cache including all classes of the interface the specified class is attached to
cbcallback function
argargument to be passed to callback function

Definition at line 177 of file class_obj.c.

179{
180 struct rtnl_class *filter;
181
182 filter = rtnl_class_alloc();
183 if (!filter)
184 return;
185
186 rtnl_class_set_parent(filter, class->c_handle);
187 rtnl_class_set_ifindex(filter, class->c_ifindex);
188 rtnl_class_set_kind(filter, class->c_kind);
189
190 nl_cache_foreach_filter(cache, (struct nl_object *) filter, cb, arg);
191 rtnl_class_put(filter);
192}
void nl_cache_foreach_filter(struct nl_cache *cache, struct nl_object *filter, void(*cb)(struct nl_object *, void *), void *arg)
Call a callback on each element of the cache (filtered).
Definition: cache.c:808

References nl_cache_foreach_filter().

◆ rtnl_class_foreach_cls()

void rtnl_class_foreach_cls ( struct rtnl_class *  class,
struct nl_cache *  cache,
void(*)(struct nl_object *, void *)  cb,
void *  arg 
)
Parameters
classthe parent class
cachea filter cache including at least all the filters attached to the specified class
cbcallback function
argargument to be passed to callback function

Definition at line 202 of file class_obj.c.

204{
205 struct rtnl_cls *filter;
206
207 filter = rtnl_cls_alloc();
208 if (!filter)
209 return;
210
211 rtnl_cls_set_ifindex(filter, class->c_ifindex);
212 rtnl_cls_set_parent(filter, class->c_parent);
213
214 nl_cache_foreach_filter(cache, (struct nl_object *) filter, cb, arg);
215 rtnl_cls_put(filter);
216}

References nl_cache_foreach_filter().

◆ rtnl_class_set_ifindex()

void rtnl_class_set_ifindex ( struct rtnl_class *  class,
int  ifindex 
)

Definition at line 226 of file class_obj.c.

227{
228 tca_set_ifindex((struct rtnl_tca *) class, ifindex);
229}

◆ rtnl_class_get_ifindex()

int rtnl_class_get_ifindex ( struct rtnl_class *  class)

Definition at line 231 of file class_obj.c.

232{
233 return tca_get_ifindex((struct rtnl_tca *) class);
234}

◆ rtnl_class_set_handle()

void rtnl_class_set_handle ( struct rtnl_class *  class,
uint32_t  handle 
)

Definition at line 236 of file class_obj.c.

237{
238 tca_set_handle((struct rtnl_tca *) class, handle);
239}

◆ rtnl_class_get_handle()

uint32_t rtnl_class_get_handle ( struct rtnl_class *  class)

Definition at line 241 of file class_obj.c.

242{
243 return tca_get_handle((struct rtnl_tca *) class);
244}

◆ rtnl_class_set_parent()

void rtnl_class_set_parent ( struct rtnl_class *  class,
uint32_t  parent 
)

Definition at line 246 of file class_obj.c.

247{
248 tca_set_parent((struct rtnl_tca *) class, parent);
249}

◆ rtnl_class_get_parent()

uint32_t rtnl_class_get_parent ( struct rtnl_class *  class)

Definition at line 251 of file class_obj.c.

252{
253 return tca_get_parent((struct rtnl_tca *) class);
254}

◆ rtnl_class_set_kind()

void rtnl_class_set_kind ( struct rtnl_class *  class,
const char *  name 
)

Definition at line 256 of file class_obj.c.

257{
258 tca_set_kind((struct rtnl_tca *) class, name);
259 class->c_ops = __rtnl_class_lookup_ops(name);
260}

◆ rtnl_class_get_kind()

char * rtnl_class_get_kind ( struct rtnl_class *  class)

Definition at line 262 of file class_obj.c.

263{
264 return tca_get_kind((struct rtnl_tca *) class);
265}

◆ rtnl_class_get_stat()

uint64_t rtnl_class_get_stat ( struct rtnl_class *  class,
enum rtnl_tc_stats_id  id 
)

Definition at line 267 of file class_obj.c.

269{
270 return tca_get_stat((struct rtnl_tca *) class, id);
271}

Variable Documentation

◆ class_obj_ops

struct nl_object_ops class_obj_ops
Initial value:
= {
.oo_name = "route/class",
.oo_size = sizeof(struct rtnl_class),
.oo_free_data = class_free_data,
.oo_clone = class_clone,
.oo_dump[NL_DUMP_BRIEF] = class_dump_brief,
.oo_dump[NL_DUMP_FULL] = class_dump_full,
.oo_dump[NL_DUMP_STATS] = class_dump_stats,
.oo_compare = tca_compare,
.oo_id_attrs = (TCA_ATTR_IFINDEX | TCA_ATTR_HANDLE),
}
@ NL_DUMP_FULL
Dump all attributes but no statistics.
Definition: types.h:23
@ NL_DUMP_BRIEF
Dump object in a brief one-liner.
Definition: types.h:22
@ NL_DUMP_STATS
Dump all attributes including statistics.
Definition: types.h:24

Definition at line 275 of file class_obj.c.