Class Modules
[Queueing Classes]

Data Structures

struct  rtnl_class_ops
 Class operations. More...

Modules

 Class Based Queueing (CBQ)
 Differentiated Services Marker (DSMARK)
 Hierachical Token Bucket (HTB)

Module API



int rtnl_class_register (struct rtnl_class_ops *cops)
 Register a class module.
int rtnl_class_unregister (struct rtnl_class_ops *cops)
 Unregister a class module.
struct rtnl_class_ops__rtnl_class_lookup_ops (const char *kind)
struct rtnl_class_opsrtnl_class_lookup_ops (struct rtnl_class *class)
 Lookup class operations for a class object.

Function Documentation

int rtnl_class_register ( struct rtnl_class_ops cops  ) 
Parameters:
cops class module operations

Definition at line 37 of file class_api.c.

References rtnl_class_ops::co_kind, and rtnl_class_ops::co_next.

00038 {
00039         struct rtnl_class_ops *o, **op;
00040 
00041         if (!cops->co_kind[0])
00042                 BUG();
00043 
00044         for (op = &class_ops_list; (o = *op) != NULL; op = &o->co_next)
00045                 if (!strcasecmp(cops->co_kind, o->co_kind))
00046                         return nl_errno(EEXIST);
00047 
00048         cops->co_next = NULL;
00049         *op = cops;
00050 
00051         return 0;
00052 }

int rtnl_class_unregister ( struct rtnl_class_ops cops  ) 
Parameters:
cops class module operations

Definition at line 58 of file class_api.c.

References rtnl_class_ops::co_kind, and rtnl_class_ops::co_next.

00059 {
00060         struct rtnl_class_ops *o, **op;
00061 
00062         for (op = &class_ops_list; (o = *op) != NULL; op = &o->co_next)
00063                 if (!strcasecmp(cops->co_kind, o->co_kind))
00064                         break;
00065 
00066         if (!o)
00067                 return nl_errno(ENOENT);
00068 
00069         *op = cops->co_next;
00070 
00071         return 0;
00072 }

struct rtnl_class_ops* rtnl_class_lookup_ops ( struct rtnl_class *  class  )  [read]
Parameters:
class Class object.
Returns:
Class operations or NULL if not found.

Definition at line 91 of file class_api.c.

00092 {
00093         if (!class->c_ops)
00094                 class->c_ops = __rtnl_class_lookup_ops(class->c_kind);
00095 
00096         return class->c_ops;
00097 }


Generated on 30 Oct 2009 for libnl by  doxygen 1.6.1