summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/netlink-private/cache-api.h15
-rw-r--r--include/netlink/cache.h3
-rw-r--r--include/netlink/hashtable.h2
-rw-r--r--include/netlink/object.h3
4 files changed, 23 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);
diff --git a/include/netlink/cache.h b/include/netlink/cache.h
index 71eaceb..7077f2e 100644
--- a/include/netlink/cache.h
+++ b/include/netlink/cache.h
@@ -96,6 +96,9 @@ extern void nl_cache_set_flags(struct nl_cache *, unsigned int);
extern int nl_cache_is_empty(struct nl_cache *);
extern struct nl_object * nl_cache_search(struct nl_cache *,
struct nl_object *);
+extern struct nl_object * nl_cache_search_mask(struct nl_cache *,
+ struct nl_object *,
+ uint32_t);
extern struct nl_object *nl_cache_find(struct nl_cache *,
struct nl_object *);
extern void nl_cache_mark_all(struct nl_cache *);
diff --git a/include/netlink/hashtable.h b/include/netlink/hashtable.h
index 70d8c0f..c52f6e1 100644
--- a/include/netlink/hashtable.h
+++ b/include/netlink/hashtable.h
@@ -42,6 +42,8 @@ extern int nl_hash_table_del(nl_hash_table_t *ht,
extern struct nl_object * nl_hash_table_lookup(nl_hash_table_t *ht,
struct nl_object *obj);
+extern struct nl_object * nl_hash_table_lookup_mask(nl_hash_table_t *ht,
+ struct nl_object *obj, uint32_t);
extern uint32_t nl_hash(void *k, size_t length,
uint32_t initval);
diff --git a/include/netlink/object.h b/include/netlink/object.h
index b0c32c9..e442f0f 100644
--- a/include/netlink/object.h
+++ b/include/netlink/object.h
@@ -45,6 +45,9 @@ extern uint32_t nl_object_diff(struct nl_object *,
struct nl_object *);
extern uint64_t nl_object_diff64(struct nl_object *,
struct nl_object *);
+extern uint32_t nl_object_diff_mask(struct nl_object *,
+ struct nl_object *,
+ uint32_t);
extern int nl_object_match_filter(struct nl_object *,
struct nl_object *);
extern char * nl_object_attrs2str(struct nl_object *,