Classifiers
[Traffic Control]


Detailed Description

Classifier Identification


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 *ops)
 Register a classifier module.
int rtnl_cls_unregister (struct rtnl_cls_ops *ops)
 Unregister a classifier module.

Classifier Addition/Modification/Deletion

nl_msg * rtnl_cls_build_add_request (struct rtnl_cls *cls, int flags)
 Build a netlink message to add a new classifier.
int rtnl_cls_add (struct nl_handle *handle, struct rtnl_cls *cls, int flags)
 Add a new classifier.
nl_msg * rtnl_cls_build_change_request (struct rtnl_cls *cls, int flags)
 Build a netlink message to change classifier attributes.
int rtnl_cls_change (struct nl_handle *handle, struct rtnl_cls *cls, int flags)
 Change a classifier.
nl_msg * rtnl_cls_build_delete_request (struct rtnl_cls *cls, int flags)
 Build a netlink request message to delete a classifier.
int rtnl_cls_delete (struct nl_handle *handle, struct rtnl_cls *cls, int flags)
 Delete a classifier.

General API

rtnl_cls * rtnl_cls_alloc (void)
 Allocate a new classifier object.
void rtnl_cls_put (struct rtnl_cls *cls)
 Give back reference on classifier object.
void rtnl_cls_free (struct rtnl_cls *cls)
 Free classifier object.
nl_cache * rtnl_cls_alloc_cache (struct nl_handle *handle, int ifindex, uint32_t parent)
 Build a classifier cache including all classifiers attached to the specified class/qdisc on eht specified interface.
void rtnl_cls_set_ifindex (struct rtnl_cls *f, int ifindex)
 Allocate a new classifier object.
void rtnl_cls_set_handle (struct rtnl_cls *f, uint32_t handle)
 Allocate a new classifier object.
void rtnl_cls_set_parent (struct rtnl_cls *f, uint32_t parent)
 Allocate a new classifier object.
void rtnl_cls_set_kind (struct rtnl_cls *f, const char *kind)
 Allocate a new classifier object.
void rtnl_cls_set_prio (struct rtnl_cls *cls, int prio)
 Set prioroty of a classifier.
int rtnl_cls_get_prio (struct rtnl_cls *cls)
 Get priority of a classifier.
void rtnl_cls_set_protocol (struct rtnl_cls *cls, int protocol)
 Set protocol of a classifier.
int rtnl_cls_get_protocol (struct rtnl_cls *cls)
 Get protocol of a classifier.


Function Documentation

int rtnl_cls_register ( struct rtnl_cls_ops ops  ) 

Register a classifier module.

Parameters:
ops classifier module operations

Definition at line 73 of file classifier.c.

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

int rtnl_cls_unregister ( struct rtnl_cls_ops ops  ) 

Unregister a classifier module.

Parameters:
ops classifier module operations

Definition at line 94 of file classifier.c.

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

struct nl_msg* rtnl_cls_build_add_request ( struct rtnl_cls *  cls,
int  flags 
)

Build a netlink message to add a new classifier.

Parameters:
cls classifier to add
flags additional netlink message flags
Builds a new netlink message requesting an addition of a classifier The netlink message header isn't fully equipped with all relevant fields and must be sent out via nl_send_auto_complete() or supplemented as needed. classifier must contain the attributes of the new classifier set via rtnl_cls_set_* functions. opts may point to the clsasifier specific options.

Returns:
New netlink message

Definition at line 292 of file classifier.c.

References NLM_F_CREATE.

Referenced by rtnl_cls_add().

int rtnl_cls_add ( struct nl_handle *  handle,
struct rtnl_cls *  cls,
int  flags 
)

Add a new classifier.

Parameters:
handle netlink handle
cls classifier to add
flags additional netlink message flags
Builds a netlink message by calling rtnl_cls_build_add_request(), sends the request to the kernel and waits for the next ACK to be received and thus blocks until the request has been processed.

Returns:
0 on sucess or a negative error if an error occured.

Definition at line 309 of file classifier.c.

References nl_send_auto_complete(), nl_wait_for_ack(), nlmsg_free(), and rtnl_cls_build_add_request().

struct nl_msg* rtnl_cls_build_change_request ( struct rtnl_cls *  cls,
int  flags 
)

Build a netlink message to change classifier attributes.

Parameters:
cls classifier to change
flags additional netlink message flags
Builds a new netlink message requesting a change of a neigh attributes. The netlink message header isn't fully equipped with all relevant fields and must thus be sent out via nl_send_auto_complete() or supplemented as needed.

Returns:
The netlink message

Definition at line 338 of file classifier.c.

References NLM_F_REPLACE.

Referenced by rtnl_cls_change().

int rtnl_cls_change ( struct nl_handle *  handle,
struct rtnl_cls *  cls,
int  flags 
)

Change a classifier.

Parameters:
handle netlink handle
cls classifier to change
flags additional netlink message flags
Builds a netlink message by calling rtnl_cls_build_change_request(), sends the request to the kernel and waits for the next ACK to be received and thus blocks until the request has been processed.

Returns:
0 on sucess or a negative error if an error occured.

Definition at line 355 of file classifier.c.

References nl_send_auto_complete(), nl_wait_for_ack(), nlmsg_free(), and rtnl_cls_build_change_request().

struct nl_msg* rtnl_cls_build_delete_request ( struct rtnl_cls *  cls,
int  flags 
)

Build a netlink request message to delete a classifier.

Parameters:
cls classifier to delete
flags additional netlink message flags
Builds a new netlink message requesting a deletion of a classifier. The netlink message header isn't fully equipped with all relevant fields and must thus be sent out via nl_send_auto_complete() or supplemented as needed.

Returns:
New netlink message

Definition at line 385 of file classifier.c.

Referenced by rtnl_cls_delete().

int rtnl_cls_delete ( struct nl_handle *  handle,
struct rtnl_cls *  cls,
int  flags 
)

Delete a classifier.

Parameters:
handle netlink handle
cls classifier to delete
flags additional netlink message flags
Builds a netlink message by calling rtnl_cls_build_delete_request(), sends the request to the kernel and waits for the next ACK to be received and thus blocks until the request has been processed.

Returns:
0 on sucess or a negative error if an error occured.

Definition at line 403 of file classifier.c.

References nl_send_auto_complete(), nl_wait_for_ack(), nlmsg_free(), and rtnl_cls_build_delete_request().

struct rtnl_cls* rtnl_cls_alloc ( void   ) 

Allocate a new classifier object.

Returns:
New classifier object

Definition at line 431 of file classifier.c.

References nl_object_alloc_from_ops().

Referenced by rtnl_class_foreach_cls(), and rtnl_qdisc_foreach_cls().

void rtnl_cls_put ( struct rtnl_cls *  cls  ) 

Give back reference on classifier object.

Parameters:
cls Classifier object to be given back.
Decrements the reference counter and frees the object if the last reference has been released.

Definition at line 443 of file classifier.c.

References nl_object_put().

Referenced by rtnl_class_foreach_cls(), and rtnl_qdisc_foreach_cls().

void rtnl_cls_free ( struct rtnl_cls *  cls  ) 

Free classifier object.

Parameters:
cls Classifier object to be freed.
Note:
Always use rtnl_cls_put() unless you're absolutely sure that no other user may have a reference on this object.

Definition at line 455 of file classifier.c.

References nl_object_free().

struct nl_cache* rtnl_cls_alloc_cache ( struct nl_handle *  handle,
int  ifindex,
uint32_t  parent 
)

Build a classifier cache including all classifiers attached to the specified class/qdisc on eht specified interface.

Parameters:
handle netlink handle
ifindex interface index of the link the classes are attached to.
parent parent qdisc/class
Allocates a new cache, initializes it properly and updates it to include all classes attached to the specified interface.

Note:
The caller is responsible for destroying and freeing the cache after using it.
Returns:
The cache or NULL if an error has occured.

Definition at line 475 of file classifier.c.

References nl_cache_alloc_from_ops(), nl_cache_free(), and nl_cache_update().

void rtnl_cls_set_ifindex ( struct rtnl_cls *  f,
int  ifindex 
)

Allocate a new classifier object.

Returns:
New classifier object

Definition at line 495 of file classifier.c.

Referenced by rtnl_class_foreach_cls(), and rtnl_qdisc_foreach_cls().

void rtnl_cls_set_handle ( struct rtnl_cls *  f,
uint32_t  handle 
)

Allocate a new classifier object.

Returns:
New classifier object

Definition at line 500 of file classifier.c.

void rtnl_cls_set_parent ( struct rtnl_cls *  f,
uint32_t  parent 
)

Allocate a new classifier object.

Returns:
New classifier object

Definition at line 505 of file classifier.c.

Referenced by rtnl_class_foreach_cls(), and rtnl_qdisc_foreach_cls().

void rtnl_cls_set_kind ( struct rtnl_cls *  f,
const char *  kind 
)

Allocate a new classifier object.

Returns:
New classifier object

Definition at line 510 of file classifier.c.

void rtnl_cls_set_prio ( struct rtnl_cls *  cls,
int  prio 
)

Set prioroty of a classifier.

Parameters:
cls classifier to change
prio new priority

Definition at line 520 of file classifier.c.

int rtnl_cls_get_prio ( struct rtnl_cls *  cls  ) 

Get priority of a classifier.

Parameters:
cls classifier

Definition at line 530 of file classifier.c.

void rtnl_cls_set_protocol ( struct rtnl_cls *  cls,
int  protocol 
)

Set protocol of a classifier.

Parameters:
cls classifier to change
protocol protocol identifier (ETH_P_xxx) in host byte-order

Definition at line 543 of file classifier.c.

int rtnl_cls_get_protocol ( struct rtnl_cls *  cls  ) 

Get protocol of a classifier.

Parameters:
cls classifier

Definition at line 553 of file classifier.c.


Generated on Fri Apr 27 14:14:07 2007 for libnl by  doxygen 1.5.1