Modules | |
Object | |
Cache Implementation | |
Access Functions | |
| |
int | nl_cache_nitems (struct nl_cache *cache) |
Return the number of items in the cache. | |
int | nl_cache_nitems_filter (struct nl_cache *cache, struct nl_object *filter) |
Return the number of items matching a filter in the cache. | |
int | nl_cache_is_empty (struct nl_cache *cache) |
Returns true if the cache is empty. | |
struct nl_cache_ops * | nl_cache_get_ops (struct nl_cache *cache) |
Return the operations set of the cache. | |
struct nl_object * | nl_cache_get_first (struct nl_cache *cache) |
Return the first element in the cache. | |
struct nl_object * | nl_cache_get_last (struct nl_cache *cache) |
Return the last element in the cache. | |
struct nl_object * | nl_cache_get_next (struct nl_object *obj) |
Return the next element in the cache. | |
struct nl_object * | nl_cache_get_prev (struct nl_object *obj) |
Return the previous element in the cache. | |
Cache Creation/Deletion | |
| |
struct nl_cache * | nl_cache_alloc (struct nl_cache_ops *ops) |
Allocate an empty cache. | |
int | nl_cache_alloc_and_fill (struct nl_cache_ops *ops, struct nl_sock *sock, struct nl_cache **result) |
int | nl_cache_alloc_name (const char *kind, struct nl_cache **result) |
Allocate an empty cache based on type name. | |
struct nl_cache * | nl_cache_subset (struct nl_cache *orig, struct nl_object *filter) |
Allocate a new cache containing a subset of a cache. | |
void | nl_cache_clear (struct nl_cache *cache) |
Clear a cache. | |
void | nl_cache_free (struct nl_cache *cache) |
Free a cache. | |
Cache Modifications | |
| |
int | nl_cache_add (struct nl_cache *cache, struct nl_object *obj) |
Add object to a cache. | |
int | nl_cache_move (struct nl_cache *cache, struct nl_object *obj) |
Move object from one cache to another. | |
void | nl_cache_remove (struct nl_object *obj) |
Removes an object from a cache. | |
struct nl_object * | nl_cache_search (struct nl_cache *cache, struct nl_object *needle) |
Search for an object in a cache. | |
Synchronization | |
| |
int | nl_cache_request_full_dump (struct nl_sock *sk, struct nl_cache *cache) |
Request a full dump from the kernel to fill a cache. | |
int | __cache_pickup (struct nl_sock *sk, struct nl_cache *cache, struct nl_parser_param *param) |
int | nl_cache_pickup (struct nl_sock *sk, struct nl_cache *cache) |
Pickup a netlink dump response and put it into a cache. | |
int | nl_cache_include (struct nl_cache *cache, struct nl_object *obj, change_func_t change_cb, void *data) |
int | nl_cache_resync (struct nl_sock *sk, struct nl_cache *cache, change_func_t change_cb, void *data) |
Parsing | |
| |
int | nl_cache_parse_and_add (struct nl_cache *cache, struct nl_msg *msg) |
Parse a netlink message and add it to the cache. | |
int | nl_cache_refill (struct nl_sock *sk, struct nl_cache *cache) |
(Re)fill a cache with the contents in the kernel. | |
Utillities | |
| |
void | nl_cache_mark_all (struct nl_cache *cache) |
Mark all objects in a cache. | |
Dumping | |
| |
void | nl_cache_dump (struct nl_cache *cache, struct nl_dump_params *params) |
Dump all elements of a cache. | |
void | nl_cache_dump_filter (struct nl_cache *cache, struct nl_dump_params *params, struct nl_object *filter) |
Dump all elements of a cache (filtered). | |
Iterators | |
| |
void | nl_cache_foreach (struct nl_cache *cache, void(*cb)(struct nl_object *, void *), void *arg) |
Call a callback on each element of the cache. | |
void | nl_cache_foreach_filter (struct nl_cache *cache, struct nl_object *filter, void(*cb)(struct nl_object *, void *), void *arg) |
Call a callback on each element of the cache (filtered). |
Cache Management | | Type Specific Cache Operations | | +----------------+ +------------+ | request update | | msg_parser | | | +----------------+ +------------+ +- - - - -^- - - - - - - -^- -|- - - - nl_cache_update: | | | | 1) --------- co_request_update ------+ | | | | | 2) destroy old cache +----------- pp_cb ---------|---+ | | | 3) ---------- nl_recvmsgs ----------+ +- cb_valid -+ +--------------+ | | | | | nl_cache_add |<-----+ + - - -v- -|- - - - - - - - - - - +--------------+ | | +-------------+ | nl_recvmsgs | | | +-----|-^-----+ +---v-|---+ | | | nl_recv | +---------+ | | Core Netlink
int nl_cache_nitems | ( | struct nl_cache * | cache | ) |
int nl_cache_nitems_filter | ( | struct nl_cache * | cache, | |
struct nl_object * | filter | |||
) |
Return the number of items matching a filter in the cache.
cache | Cache object. | |
filter | Filter object. |
Definition at line 68 of file cache.c.
References nl_object_match_filter().
int nl_cache_is_empty | ( | struct nl_cache * | cache | ) |
struct nl_cache_ops* nl_cache_get_ops | ( | struct nl_cache * | cache | ) | [read] |
struct nl_object* nl_cache_get_first | ( | struct nl_cache * | cache | ) | [read] |
struct nl_object* nl_cache_get_last | ( | struct nl_cache * | cache | ) | [read] |
struct nl_cache* nl_cache_alloc | ( | struct nl_cache_ops * | ops | ) | [read] |
Allocate an empty cache.
ops | cache operations to base the cache on |
Definition at line 173 of file cache.c.
Referenced by flnl_result_alloc_cache(), nl_cache_alloc_name(), nl_cache_mngr_add(), nl_cache_subset(), rtnl_class_alloc_cache(), rtnl_cls_alloc_cache(), rtnl_link_alloc_cache(), rtnl_route_alloc_cache(), and rtnl_rule_alloc_cache().
int nl_cache_alloc_name | ( | const char * | kind, | |
struct nl_cache ** | result | |||
) |
Allocate an empty cache based on type name.
kind | Name of cache type |
Definition at line 212 of file cache.c.
References nl_cache_alloc(), and nl_cache_ops_lookup().
struct nl_cache* nl_cache_subset | ( | struct nl_cache * | orig, | |
struct nl_object * | filter | |||
) | [read] |
Allocate a new cache containing a subset of a cache.
orig | Original cache to be based on | |
filter | Filter defining the subset to be filled into new cache |
Definition at line 234 of file cache.c.
References nl_cache_add(), nl_cache_alloc(), and nl_object_match_filter().
void nl_cache_clear | ( | struct nl_cache * | cache | ) |
Clear a cache.
cache | cache to clear |
Removes all elements of a cache.
Definition at line 266 of file cache.c.
References nl_cache_remove().
Referenced by nl_cache_free(), and nl_cache_refill().
void nl_cache_free | ( | struct nl_cache * | cache | ) |
Free a cache.
cache | Cache to free. |
Removes all elements of a cache and frees all memory.
Definition at line 284 of file cache.c.
References nl_cache_clear().
Referenced by genl_ctrl_resolve(), nl_cache_mngr_add(), nl_cache_mngr_free(), rtnl_class_alloc_cache(), rtnl_cls_alloc_cache(), and rtnl_link_alloc_cache().
int nl_cache_add | ( | struct nl_cache * | cache, | |
struct nl_object * | obj | |||
) |
Add object to a cache.
cache | Cache to add object to | |
obj | Object to be added to the cache |
Adds the given object to the specified cache. The object is cloned if it has been added to another cache already.
Definition at line 324 of file cache.c.
References nl_object_clone(), and nl_object_get().
Referenced by nl_cache_subset().
int nl_cache_move | ( | struct nl_cache * | cache, | |
struct nl_object * | obj | |||
) |
Move object from one cache to another.
cache | Cache to move object to. | |
obj | Object subject to be moved |
Removes the given object from its associated cache if needed and adds it to the new cache.
Definition at line 353 of file cache.c.
References nl_cache_remove(), and nl_object_get().
void nl_cache_remove | ( | struct nl_object * | obj | ) |
Removes an object from a cache.
obj | Object to remove from its cache |
Removes the object obj
from the cache it is assigned to, since an object can only be assigned to one cache at a time, the cache must ne be passed along with it.
Definition at line 378 of file cache.c.
References nl_object_put().
Referenced by nl_cache_clear(), nl_cache_move(), and nl_object_free().
Search for an object in a cache.
cache | Cache to search in. | |
needle | Object to look for. |
Iterates over the cache and looks for an object with identical identifiers as the needle.
Definition at line 405 of file cache.c.
References nl_object_get(), and nl_object_identical().
int nl_cache_request_full_dump | ( | struct nl_sock * | sk, | |
struct nl_cache * | cache | |||
) |
Request a full dump from the kernel to fill a cache.
sk | Netlink socket. | |
cache | Cache subjected to be filled. |
Send a dumping request to the kernel causing it to dump all objects related to the specified cache to the netlink socket.
Use nl_cache_pickup() to read the objects from the socket and fill them into a cache.
Definition at line 439 of file cache.c.
Referenced by nl_cache_refill().
int nl_cache_pickup | ( | struct nl_sock * | sk, | |
struct nl_cache * | cache | |||
) |
Pickup a netlink dump response and put it into a cache.
sk | Netlink socket. | |
cache | Cache to put items into. |
Waits for netlink messages to arrive, parses them and puts them into the specified cache.
Definition at line 509 of file cache.c.
Referenced by flnl_lookup(), and nl_cache_refill().
int nl_cache_parse_and_add | ( | struct nl_cache * | cache, | |
struct nl_msg * | msg | |||
) |
Parse a netlink message and add it to the cache.
cache | cache to add element to | |
msg | netlink message |
Parses a netlink message by calling the cache specific message parser and adds the new element to the cache.
Definition at line 667 of file cache.c.
References nlmsg_hdr().
int nl_cache_refill | ( | struct nl_sock * | sk, | |
struct nl_cache * | cache | |||
) |
(Re)fill a cache with the contents in the kernel.
sk | Netlink socket. | |
cache | cache to update |
Clears the specified cache and fills it with the current state in the kernel.
Definition at line 687 of file cache.c.
References nl_cache_clear(), nl_cache_pickup(), and nl_cache_request_full_dump().
Referenced by nl_cache_mngr_add(), rtnl_class_alloc_cache(), rtnl_cls_alloc_cache(), rtnl_link_alloc_cache(), rtnl_route_alloc_cache(), and rtnl_rule_alloc_cache().
void nl_cache_mark_all | ( | struct nl_cache * | cache | ) |
Mark all objects in a cache.
cache | Cache to mark all objects in |
Definition at line 713 of file cache.c.
References nl_object_mark().
void nl_cache_dump | ( | struct nl_cache * | cache, | |
struct nl_dump_params * | params | |||
) |
Dump all elements of a cache.
cache | cache to dump | |
params | dumping parameters |
Dumps all elements of the cache to the file descriptor fd.
Definition at line 738 of file cache.c.
References nl_cache_dump_filter().
void nl_cache_dump_filter | ( | struct nl_cache * | cache, | |
struct nl_dump_params * | params, | |||
struct nl_object * | filter | |||
) |
Dump all elements of a cache (filtered).
cache | cache to dump | |
params | dumping parameters (optional) | |
filter | filter object |
Dumps all elements of the cache to the file descriptor fd given they match the given filter filter.
Definition at line 752 of file cache.c.
References nl_dump_params::dp_type, nl_object_match_filter(), and nl_object_ops::oo_dump.
Referenced by nl_cache_dump().
void nl_cache_foreach | ( | struct nl_cache * | cache, | |
void(*)(struct nl_object *, void *) | cb, | |||
void * | arg | |||
) |
Call a callback on each element of the cache.
cache | cache to iterate on | |
cb | callback function | |
arg | argument passed to callback function |
Calls a callback function cb on each element of the cache. The argument arg is passed on the callback function.
Definition at line 798 of file cache.c.
References nl_cache_foreach_filter().
void nl_cache_foreach_filter | ( | struct nl_cache * | cache, | |
struct nl_object * | filter, | |||
void(*)(struct nl_object *, void *) | cb, | |||
void * | arg | |||
) |
Call a callback on each element of the cache (filtered).
cache | cache to iterate on | |
filter | filter object | |
cb | callback function | |
arg | argument passed to callback function |
Calls a callback function cb on each element of the cache that matches the filter. The argument arg is passed on to the callback function.
Definition at line 815 of file cache.c.
References nl_object_get(), nl_object_match_filter(), and nl_object_put().
Referenced by nl_cache_foreach(), rtnl_class_foreach_child(), rtnl_class_foreach_cls(), rtnl_qdisc_foreach_child(), and rtnl_qdisc_foreach_cls().