libnl  1.1
Variables
Class Object

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. More...
 

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. More...
 
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. More...
 

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

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.

References rtnl_qdisc_get_by_parent().

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 }
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.

References nl_cache_foreach_filter().

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 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.

References nl_cache_foreach_filter().

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 }

Variable Documentation

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),
}

Definition at line 275 of file class_obj.c.