libnl  1.1
Modules | Data Structures
Classifier Modules

Modules

 Firewall Classifier
 
 Universal 32-bit Classifier
 

Data Structures

struct  rtnl_cls_ops
 Classifier operations. More...
 

Classifier Module API

int rtnl_cls_register (struct rtnl_cls_ops *cops)
 Register a classifier module. More...
 
int rtnl_cls_unregister (struct rtnl_cls_ops *cops)
 Unregister a classifier module. More...
 
struct rtnl_cls_ops__rtnl_cls_lookup_ops (const char *kind)
 
struct rtnl_cls_opsrtnl_cls_lookup_ops (struct rtnl_cls *cls)
 Lookup classifier operations for a classifier object. More...
 

Detailed Description

Function Documentation

int rtnl_cls_register ( struct rtnl_cls_ops cops)
Parameters
copsclassifier module operations

Definition at line 38 of file cls_api.c.

References rtnl_cls_ops::co_kind, and rtnl_cls_ops::co_next.

39 {
40  struct rtnl_cls_ops *o, **op;
41 
42  if (!cops->co_kind)
43  BUG();
44 
45  for (op = &cls_ops_list; (o = *op) != NULL; op = &o->co_next)
46  if (!strcasecmp(cops->co_kind, o->co_kind))
47  return nl_errno(EEXIST);
48 
49  cops->co_next = NULL;
50  *op = cops;
51 
52  return 0;
53 }
int rtnl_cls_unregister ( struct rtnl_cls_ops cops)
Parameters
copsclassifier module operations

Definition at line 59 of file cls_api.c.

References rtnl_cls_ops::co_kind, and rtnl_cls_ops::co_next.

60 {
61  struct rtnl_cls_ops *o, **op;
62 
63  for (op = &cls_ops_list; (o = *op) != NULL; op = &o->co_next)
64  if (!strcasecmp(cops->co_kind, o->co_kind))
65  break;
66 
67  if (!o)
68  return nl_errno(ENOENT);
69 
70  *op = cops->co_next;
71 
72  return 0;
73 }
struct rtnl_cls_ops* rtnl_cls_lookup_ops ( struct rtnl_cls *  cls)
Parameters
clsClassifier object.
Returns
Classifier operations or NULL if not found.

Definition at line 92 of file cls_api.c.

93 {
94  if (!cls->c_ops)
95  cls->c_ops = __rtnl_cls_lookup_ops(cls->c_kind);
96 
97  return cls->c_ops;
98 }