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. | |
struct nl_cache * | nl_cache_alloc_name (const char *kind) |
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_handle *handle, struct nl_cache *cache) |
Request a full dump from the kernel to fill a cache. | |
int | __cache_pickup (struct nl_handle *handle, struct nl_cache *cache, struct nl_parser_param *param) |
int | nl_cache_pickup (struct nl_handle *handle, 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) |
int | nl_cache_resync (struct nl_handle *handle, struct nl_cache *cache, change_func_t change_cb) |
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_handle *handle, 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 | |||
) |
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_object* nl_cache_get_next | ( | struct nl_object * | obj | ) | [read] |
struct nl_object* nl_cache_get_prev | ( | struct nl_object * | obj | ) | [read] |
struct nl_cache* nl_cache_alloc | ( | struct nl_cache_ops * | ops | ) | [read] |
ops | cache operations to base the cache on |
Definition at line 173 of file cache.c.
Referenced by flnl_result_alloc_cache(), nfnl_ct_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_neigh_alloc_cache(), rtnl_neightbl_alloc_cache(), rtnl_qdisc_alloc_cache(), rtnl_route_alloc_cache(), and rtnl_rule_alloc_cache_by_family().
struct nl_cache* nl_cache_alloc_name | ( | const char * | kind | ) | [read] |
kind | Name of cache type |
Definition at line 196 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] |
orig | Original cache to be based on | |
filter | Filter defining the subset to be filled into new cache |
Definition at line 215 of file cache.c.
References nl_cache_add(), nl_cache_alloc(), and nl_object_match_filter().
void nl_cache_clear | ( | struct nl_cache * | cache | ) |
cache | cache to clear |
Definition at line 247 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 | ) |
cache | Cache to free. |
Definition at line 265 of file cache.c.
References nl_cache_clear().
Referenced by genl_ctrl_resolve(), nl_cache_mngr_add(), rtnl_class_alloc_cache(), rtnl_cls_alloc_cache(), rtnl_link_alloc_cache(), rtnl_neigh_alloc_cache(), rtnl_neightbl_alloc_cache(), and rtnl_qdisc_alloc_cache().
int nl_cache_add | ( | struct nl_cache * | cache, | |
struct nl_object * | obj | |||
) |
cache | Cache to add object to | |
obj | Object to be added to the cache |
Definition at line 302 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 | |||
) |
cache | Cache to move object to. | |
obj | Object subject to be moved |
Definition at line 331 of file cache.c.
References nl_cache_remove(), and nl_object_get().
void nl_cache_remove | ( | struct nl_object * | obj | ) |
obj | Object to remove from its cache |
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 356 of file cache.c.
References nl_object_put().
Referenced by nl_cache_clear(), nl_cache_move(), and nl_object_free().
struct nl_object* nl_cache_search | ( | struct nl_cache * | cache, | |
struct nl_object * | needle | |||
) | [read] |
cache | Cache to search in. | |
needle | Object to look for. |
Definition at line 383 of file cache.c.
References nl_object_get(), and nl_object_identical().
int nl_cache_request_full_dump | ( | struct nl_handle * | handle, | |
struct nl_cache * | cache | |||
) |
handle | Netlink handle | |
cache | Cache subjected to be filled. |
Use nl_cache_pickup() to read the objects from the socket and fill them into a cache.
Definition at line 417 of file cache.c.
Referenced by nl_cache_refill().
int nl_cache_pickup | ( | struct nl_handle * | handle, | |
struct nl_cache * | cache | |||
) |
handle | Netlink handle. | |
cache | Cache to put items into. |
Definition at line 487 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 | |||
) |
cache | cache to add element to | |
msg | netlink message |
Definition at line 642 of file cache.c.
References nlmsg_hdr().
int nl_cache_refill | ( | struct nl_handle * | handle, | |
struct nl_cache * | cache | |||
) |
handle | netlink handle | |
cache | cache to update |
Definition at line 662 of file cache.c.
References nl_cache_clear(), nl_cache_pickup(), and nl_cache_request_full_dump().
Referenced by nfnl_ct_alloc_cache(), nl_cache_mngr_add(), rtnl_class_alloc_cache(), rtnl_cls_alloc_cache(), rtnl_link_alloc_cache(), rtnl_neigh_alloc_cache(), rtnl_neightbl_alloc_cache(), rtnl_qdisc_alloc_cache(), rtnl_route_alloc_cache(), and rtnl_rule_alloc_cache_by_family().
void nl_cache_mark_all | ( | struct nl_cache * | cache | ) |
cache | Cache to mark all objects in |
Definition at line 688 of file cache.c.
References nl_object_mark().
void nl_cache_dump | ( | struct nl_cache * | cache, | |
struct nl_dump_params * | params | |||
) |
cache | cache to dump | |
params | dumping parameters |
Definition at line 713 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 | |||
) |
cache | cache to dump | |
params | dumping parameters (optional) | |
filter | filter object |
Definition at line 727 of file cache.c.
References nl_dump_params::dp_type, NL_DUMP_FULL, 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 | |||
) |
cache | cache to iterate on | |
cb | callback function | |
arg | argument passed to callback function |
Definition at line 773 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 | |||
) |
cache | cache to iterate on | |
filter | filter object | |
cb | callback function | |
arg | argument passed to callback function |
Definition at line 790 of file cache.c.
References nl_object_match_filter().
Referenced by nl_cache_foreach(), rtnl_class_foreach_child(), rtnl_class_foreach_cls(), rtnl_qdisc_foreach_child(), and rtnl_qdisc_foreach_cls().