diff options
author | Roopa Prabhu <roopa@cumulusnetworks.com> | 2016-06-18 22:30:06 (GMT) |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2016-07-08 10:02:07 (GMT) |
commit | 1db12c9e3208c98332cf169eb689a985d77c9a05 (patch) | |
tree | 16d8aa47c593f4794fb97ee21c0cfff20bfc0f67 /include/netlink-private | |
parent | b7d458c1939913c46b32c7643b412767b87d98c2 (diff) | |
download | libnl-1db12c9e3208c98332cf169eb689a985d77c9a05.zip libnl-1db12c9e3208c98332cf169eb689a985d77c9a05.tar.gz libnl-1db12c9e3208c98332cf169eb689a985d77c9a05.tar.bz2 |
cache: modify nl_cache_search to look at cache provided attributes for search
This patch adds a new cache operation co_cache_search_attrs_get to request for
attributes to use in the search. This gives the cache an opportunity to
use search attributes based on netlink message flags.
This is mainly to give the route cache an ability to decide on the cache
inclusion depending on the netlink header flags like NLM_F_APPEND and
NLM_F_REPLACE.
Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Diffstat (limited to 'include/netlink-private')
-rw-r--r-- | include/netlink-private/cache-api.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/netlink-private/cache-api.h b/include/netlink-private/cache-api.h index f3d9f01..0b39bfa 100644 --- a/include/netlink-private/cache-api.h +++ b/include/netlink-private/cache-api.h @@ -239,6 +239,21 @@ struct nl_cache_ops int (*co_include_event)(struct nl_cache *cache, struct nl_object *obj, change_func_t change_cb, void *data); + /** + * The function registered under this callback is called when an + * a nl_cache_search is to performed on the cache. + * + * The callback if implemented by a cache must return an attribute + * mask to be used for the cache search + * + * If no function is registered, nl_cache_search will internally use + * oo_id_attrs_get to get its attributes for matching objects + * + * @see nl_cache_search() + */ + uint32_t (*co_cache_search_attrs_get)(struct nl_cache *cache, + struct nl_object *needle); + void (*reserved_1)(void); void (*reserved_2)(void); void (*reserved_3)(void); |