libnl 1.1.4
Modules | Data Structures

Modules

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

Data Structures

struct  rtnl_class_ops
 Class operations. More...
 

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.
 

Detailed Description

Function Documentation

◆ rtnl_class_register()

int rtnl_class_register ( struct rtnl_class_ops cops)
Parameters
copsclass module operations

Definition at line 37 of file class_api.c.

38{
39 struct rtnl_class_ops *o, **op;
40
41 if (!cops->co_kind[0])
42 BUG();
43
44 for (op = &class_ops_list; (o = *op) != NULL; op = &o->co_next)
45 if (!strcasecmp(cops->co_kind, o->co_kind))
46 return nl_errno(EEXIST);
47
48 cops->co_next = NULL;
49 *op = cops;
50
51 return 0;
52}
Class operations.
Definition: class-modules.h:26
char co_kind[32]
Kind/Name of class.
Definition: class-modules.h:30
struct rtnl_class_ops * co_next
INTERNAL (Do not use)
Definition: class-modules.h:61

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

◆ rtnl_class_unregister()

int rtnl_class_unregister ( struct rtnl_class_ops cops)
Parameters
copsclass module operations

Definition at line 58 of file class_api.c.

59{
60 struct rtnl_class_ops *o, **op;
61
62 for (op = &class_ops_list; (o = *op) != NULL; op = &o->co_next)
63 if (!strcasecmp(cops->co_kind, o->co_kind))
64 break;
65
66 if (!o)
67 return nl_errno(ENOENT);
68
69 *op = cops->co_next;
70
71 return 0;
72}

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

◆ __rtnl_class_lookup_ops()

struct rtnl_class_ops * __rtnl_class_lookup_ops ( const char *  kind)

Definition at line 74 of file class_api.c.

75{
76 struct rtnl_class_ops *cops;
77
78 for (cops = class_ops_list; cops; cops = cops->co_next)
79 if (!strcmp(kind, cops->co_kind))
80 return cops;
81
82 return NULL;
83}

◆ rtnl_class_lookup_ops()

struct rtnl_class_ops * rtnl_class_lookup_ops ( struct rtnl_class *  class)
Parameters
classClass object.
Returns
Class operations or NULL if not found.

Definition at line 91 of file class_api.c.

92{
93 if (!class->c_ops)
94 class->c_ops = __rtnl_class_lookup_ops(class->c_kind);
95
96 return class->c_ops;
97}