libnl 2.0
Modules

Classifiers

Traffic Control

Modules

 Basic Classifier
 Extended Match
 Classifier Modules
 Classifier Object

Classifier Addition/Modification/Deletion

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

Cache Management

int rtnl_cls_alloc_cache (struct nl_sock *sk, int ifindex, uint32_t parent, struct nl_cache **result)
 Build a classifier cache including all classifiers attached to the specified class/qdisc on eht specified interface.

Detailed Description

Classifier Identification
  • protocol
  • priority
  • parent
  • interface
  • kind
  • handle

Function Documentation

int rtnl_cls_build_add_request ( struct rtnl_cls *  cls,
int  flags,
struct nl_msg **  result 
)
Parameters:
clsclassifier to add
flagsadditional netlink message flags
resultPointer to store resulting message.

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:
0 on success or a negative error code.

Definition at line 142 of file cls.c.

References NLM_F_CREATE.

Referenced by rtnl_cls_add().

int rtnl_cls_add ( struct nl_sock *  sk,
struct rtnl_cls *  cls,
int  flags 
)
Parameters:
skNetlink socket.
clsclassifier to add
flagsadditional 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 160 of file cls.c.

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

int rtnl_cls_build_change_request ( struct rtnl_cls *  cls,
int  flags,
struct nl_msg **  result 
)
Parameters:
clsclassifier to change
flagsadditional netlink message flags
resultPointer to store resulting message.

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:
0 on success or a negative error code.

Definition at line 189 of file cls.c.

References NLM_F_REPLACE.

Referenced by rtnl_cls_change().

int rtnl_cls_change ( struct nl_sock *  sk,
struct rtnl_cls *  cls,
int  flags 
)
Parameters:
skNetlink socket.
clsclassifier to change
flagsadditional 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 207 of file cls.c.

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

int rtnl_cls_build_delete_request ( struct rtnl_cls *  cls,
int  flags,
struct nl_msg **  result 
)
Parameters:
clsclassifier to delete
flagsadditional netlink message flags
resultPointer to store resulting message.

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:
0 on success or a negative error code.

Definition at line 236 of file cls.c.

Referenced by rtnl_cls_delete().

int rtnl_cls_delete ( struct nl_sock *  sk,
struct rtnl_cls *  cls,
int  flags 
)
Parameters:
skNetlink socket.
clsclassifier to delete
flagsadditional 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 255 of file cls.c.

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

int rtnl_cls_alloc_cache ( struct nl_sock *  sk,
int  ifindex,
uint32_t  parent,
struct nl_cache **  result 
)
Parameters:
skNetlink socket.
ifindexinterface index of the link the classes are attached to.
parentparent qdisc/class
resultPointer to store resulting cache.

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:
0 on success or a negative error code.

Definition at line 294 of file cls.c.

References nl_cache_alloc(), nl_cache_free(), and nl_cache_refill().