TC_H_ROOT: root qdisc (directly attached to the device)TC_H_INGRESS: ingress qdisc (directly attached to the device)TC_H_UNSPEC: unspecified qdisc (no reference)// Allocate a new empty qdisc to be filled out struct rtnl_qdisc *qdisc = rtnl_qdisc_alloc(); // ... specify the kind of the Qdisc rtnl_qdisc_set_kind(qdisc, "pfifo"); // Specify the device the qdisc should be attached to rtnl_qdisc_set_ifindex(qdisc, ifindex); // ... specify the parent qdisc rtnl_qdisc_set_parent(qdisc, TC_H_ROOT); // Specifying the handle is not required but makes reidentifying easier // and may help to avoid adding a qdisc twice. rtnl_qdisc_set_handle(qdisc, 0x000A0000); // Now on to specify the qdisc specific options, see the relevant qdisc // modules for documentation, in this example we set the upper limit of // the packet fifo qdisc to 64 rtnl_qdisc_fifo_set_limit(qdisc, 64); rtnl_qdisc_add(handle, qdisc, NLM_R_REPLACE); // Free up the memory rtnl_qdisc_put(qdisc);
// Allocate a new empty qdisc to be filled out with the parameters // specifying the qdisc to be deleted. Alternatively a fully equiped // Qdisc object from a cache can be used. struct rtnl_qdisc *qdisc = rtnl_qdisc_alloc(); // The interface index of the device the qdisc is on and the parent handle // are the least required fields to be filled out. // Note: Specify TC_H_ROOT or TC_H_INGRESS as parent handle to delete the // root respectively root ingress qdisc. rtnl_qdisc_set_ifindex(qdisc, ifindex); rtnl_qdisc_set_parent(qdisc, parent_handle); // If required for identification, the handle can be specified as well. rtnl_qdisc_set_handle(qdisc, qdisc_handle); // Not required but maybe helpful as sanity check, the kind of the qdisc // can be specified to avoid mistakes. rtnl_qdisc_set_kind(qdisc, "pfifo"); // Finally delete the qdisc with rtnl_qdisc_delete(), alternatively // rtnl_qdisc_build_delete_request() can be invoked to generate an // appropritate netlink message to send out. rtnl_qdisc_delete(handle, qdisc); // Free up the memory rtnl_qdisc_put(qdisc);
Modules | |
| Queueing Discipline Modules | |
| Queueing Discipline Object | |
Data Structures | |
| struct | rtnl_qdisc_ops |
| Qdisc Operations. More... | |
QDisc Addition | |
| struct nl_msg * | rtnl_qdisc_build_add_request (struct rtnl_qdisc *qdisc, int flags) |
| Build a netlink message to add a new qdisc. | |
| int | rtnl_qdisc_add (struct nl_handle *handle, struct rtnl_qdisc *qdisc, int flags) |
| Add a new qdisc. | |
QDisc Modification | |
| struct nl_msg * | rtnl_qdisc_build_change_request (struct rtnl_qdisc *qdisc, struct rtnl_qdisc *new) |
| Build a netlink message to change attributes of a existing qdisc. | |
| int | rtnl_qdisc_change (struct nl_handle *handle, struct rtnl_qdisc *qdisc, struct rtnl_qdisc *new) |
| Change attributes of a qdisc. | |
QDisc Deletion | |
| struct nl_msg * | rtnl_qdisc_build_delete_request (struct rtnl_qdisc *qdisc) |
| Build a netlink request message to delete a qdisc. | |
| int | rtnl_qdisc_delete (struct nl_handle *handle, struct rtnl_qdisc *qdisc) |
| Delete a qdisc. | |
Qdisc Cache Management | |
| struct nl_cache * | rtnl_qdisc_alloc_cache (struct nl_handle *handle) |
| Build a qdisc cache including all qdiscs currently configured in the kernel. | |
| struct rtnl_qdisc * | rtnl_qdisc_get_by_parent (struct nl_cache *cache, int ifindex, uint32_t parent) |
| Look up qdisc by its parent in the provided cache. | |
| struct rtnl_qdisc * | rtnl_qdisc_get (struct nl_cache *cache, int ifindex, uint32_t handle) |
| Look up qdisc by its handle in the provided cache. | |
| struct nl_msg* rtnl_qdisc_build_add_request | ( | struct rtnl_qdisc * | qdisc, | |
| int | flags | |||
| ) | [read] |
| qdisc | qdisc to add | |
| flags | additional netlink message flags |
Common message flags used:
Definition at line 197 of file qdisc.c.
References NLM_F_CREATE.
Referenced by rtnl_qdisc_add().
| int rtnl_qdisc_add | ( | struct nl_handle * | handle, | |
| struct rtnl_qdisc * | qdisc, | |||
| int | flags | |||
| ) |
| handle | netlink handle | |
| qdisc | qdisc to delete | |
| flags | additional netlink message flags |
Common message flags used:
Definition at line 224 of file qdisc.c.
References nl_send_auto_complete(), nl_wait_for_ack(), nlmsg_free(), and rtnl_qdisc_build_add_request().
| struct nl_msg* rtnl_qdisc_build_change_request | ( | struct rtnl_qdisc * | qdisc, | |
| struct rtnl_qdisc * | new | |||
| ) | [read] |
| qdisc | qdisc to change | |
| new | new qdisc attributes |
Definition at line 261 of file qdisc.c.
References NLM_F_REPLACE.
Referenced by rtnl_qdisc_change().
| int rtnl_qdisc_change | ( | struct nl_handle * | handle, | |
| struct rtnl_qdisc * | qdisc, | |||
| struct rtnl_qdisc * | new | |||
| ) |
| handle | netlink handle | |
| qdisc | qdisc to change | |
| new | new qdisc attributes |
Definition at line 279 of file qdisc.c.
References nl_send_auto_complete(), nl_wait_for_ack(), nlmsg_free(), and rtnl_qdisc_build_change_request().
| struct nl_msg* rtnl_qdisc_build_delete_request | ( | struct rtnl_qdisc * | qdisc | ) | [read] |
| qdisc | qdisc to delete |
Definition at line 315 of file qdisc.c.
References nlmsg_alloc_simple(), and nlmsg_append().
Referenced by rtnl_qdisc_delete().
| int rtnl_qdisc_delete | ( | struct nl_handle * | handle, | |
| struct rtnl_qdisc * | qdisc | |||
| ) |
| handle | netlink handle | |
| qdisc | qdisc to delete |
Definition at line 348 of file qdisc.c.
References nl_send_auto_complete(), nl_wait_for_ack(), nlmsg_free(), and rtnl_qdisc_build_delete_request().
| struct nl_cache* rtnl_qdisc_alloc_cache | ( | struct nl_handle * | handle | ) | [read] |
| handle | netlink handle |
Definition at line 384 of file qdisc.c.
References nl_cache_alloc(), nl_cache_free(), and nl_cache_refill().
| struct rtnl_qdisc* rtnl_qdisc_get_by_parent | ( | struct nl_cache * | cache, | |
| int | ifindex, | |||
| uint32_t | parent | |||
| ) | [read] |
| cache | qdisc cache | |
| ifindex | interface the qdisc is attached to | |
| parent | parent handle |
Definition at line 407 of file qdisc.c.
References nl_object_get().
Referenced by rtnl_class_leaf_qdisc().
| struct rtnl_qdisc* rtnl_qdisc_get | ( | struct nl_cache * | cache, | |
| int | ifindex, | |||
| uint32_t | handle | |||
| ) | [read] |
| cache | qdisc cache | |
| ifindex | interface the qdisc is attached to | |
| handle | qdisc handle |
Definition at line 432 of file qdisc.c.
References nl_object_get().
1.5.5