netfilter
firewalling, NAT, and packet mangling for linux
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Queueing Classes
Collaboration diagram for Queueing Classes:

Modules

 Class Modules
 
 Class Object
 

Addition/Modification

int rtnl_class_build_add_request (struct rtnl_class *class, int flags, struct nl_msg **result)
 Build a netlink message to add a new class. More...
 
int rtnl_class_add (struct nl_sock *sk, struct rtnl_class *class, int flags)
 Add a new class. More...
 
int rtnl_class_build_delete_request (struct rtnl_class *class, struct nl_msg **result)
 
int rtnl_class_delete (struct nl_sock *sk, struct rtnl_class *class)
 Delete a class. More...
 

Cache Management

int rtnl_class_alloc_cache (struct nl_sock *sk, int ifindex, struct nl_cache **result)
 Build a class cache including all classes attached to the specified interface. More...
 
struct rtnl_classrtnl_class_get (struct nl_cache *cache, int ifindex, uint32_t handle)
 Look up class by its handle in the provided cache. More...
 

Detailed Description

Function Documentation

int rtnl_class_add ( struct nl_sock sk,
struct rtnl_class class,
int  flags 
)

Add a new class.

  • sk Netlink socket.
  • class class to delete
  • flags additional netlink message flags

Builds a netlink message by calling rtnl_qdisc_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.

Common message flags

  • NLM_F_REPLACE - replace possibly existing classes
Returns
0 on success or a negative error code

References nl_send_auto_complete(), nlmsg_free(), and rtnl_class_build_add_request().

Here is the call graph for this function:

int rtnl_class_alloc_cache ( struct nl_sock sk,
int  ifindex,
struct nl_cache **  result 
)

Build a class cache including all classes attached to the specified interface.

  • sk Netlink socket.
  • ifindex interface index of the link the classes are attached to.

Allocates a new cache, initializes it properly and updates it to include all classes attached to the specified interface.

Returns
The cache or NULL if an error has occured.

References nl_cache::c_iarg1, nl_cache_alloc(), nl_cache_free(), nl_cache_refill(), and NLE_NOMEM.

Here is the call graph for this function:

int rtnl_class_build_add_request ( struct rtnl_class class,
int  flags,
struct nl_msg **  result 
)

Build a netlink message to add a new class.

  • class class to add
  • flags additional netlink message flags
  • result Pointer to store resulting message.

Builds a new netlink message requesting an addition of a class. 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.

Common message flags

  • NLM_F_REPLACE - replace possibly existing classes
Returns
0 on success or a negative error code.

References NLM_F_CREATE, and RTM_NEWTCLASS.

Referenced by rtnl_class_add().

Here is the caller graph for this function:

int rtnl_class_build_delete_request ( struct rtnl_class class,
struct nl_msg **  result 
)

References BUG, NLE_MSGSIZE, NLE_NOMEM, NLMSG_ALIGNTO, nlmsg_alloc_simple(), nlmsg_append(), nlmsg_free(), RTM_DELTCLASS, TCA_ATTR_IFINDEX, TCA_ATTR_PARENT, tcmsg::tcm_family, tcmsg::tcm_handle, tcmsg::tcm_ifindex, and tcmsg::tcm_parent.

Referenced by rtnl_class_delete().

Here is the call graph for this function:

Here is the caller graph for this function:

int rtnl_class_delete ( struct nl_sock sk,
struct rtnl_class class 
)

Delete a class.

  • sk Netlink socket.
  • class class to delete

Builds a netlink message by calling rtnl_class_build_delete_request(), sends the request to the kernel and waits for the ACK to be received and thus blocks until the request has been processed.

Returns
0 on success or a negative error code

References nl_send_auto_complete(), nlmsg_free(), and rtnl_class_build_delete_request().

Here is the call graph for this function:

struct rtnl_class* rtnl_class_get ( struct nl_cache cache,
int  ifindex,
uint32_t  handle 
)

Look up class by its handle in the provided cache.

  • cache class cache
  • ifindex interface the class is attached to
  • handle class handle
    Returns
    pointer to class inside the cache or NULL if no match was found.

References nl_cache::c_items, nl_cache::c_ops, nl_list_for_each_entry, nl_object_get(), and NULL.

Here is the call graph for this function: