OpenWrt – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | /* |
2 | * netlink/cache.h Caching Module |
||
3 | * |
||
4 | * This library is free software; you can redistribute it and/or |
||
5 | * modify it under the terms of the GNU Lesser General Public |
||
6 | * License as published by the Free Software Foundation version 2.1 |
||
7 | * of the License. |
||
8 | * |
||
9 | * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch> |
||
10 | */ |
||
11 | |||
12 | #ifndef NETLINK_CACHE_H_ |
||
13 | #define NETLINK_CACHE_H_ |
||
14 | |||
15 | #include <netlink/netlink.h> |
||
16 | #include <netlink/msg.h> |
||
17 | #include <netlink/utils.h> |
||
18 | #include <netlink/object.h> |
||
19 | #include <netlink/cache-api.h> |
||
20 | |||
21 | #ifdef __cplusplus |
||
22 | extern "C" { |
||
23 | #endif |
||
24 | |||
25 | struct nl_cache; |
||
26 | |||
27 | typedef void (*change_func_t)(struct nl_cache *, struct nl_object *, int); |
||
28 | |||
29 | /* Access Functions */ |
||
30 | extern int nl_cache_nitems(struct nl_cache *); |
||
31 | extern int nl_cache_nitems_filter(struct nl_cache *, |
||
32 | struct nl_object *); |
||
33 | extern struct nl_cache_ops * nl_cache_get_ops(struct nl_cache *); |
||
34 | extern struct nl_object * nl_cache_get_first(struct nl_cache *); |
||
35 | extern struct nl_object * nl_cache_get_last(struct nl_cache *); |
||
36 | extern struct nl_object * nl_cache_get_next(struct nl_object *); |
||
37 | extern struct nl_object * nl_cache_get_prev(struct nl_object *); |
||
38 | |||
39 | extern struct nl_cache * nl_cache_alloc(struct nl_cache_ops *); |
||
40 | extern int nl_cache_alloc_and_fill(struct nl_cache_ops *, |
||
41 | struct nl_sock *, |
||
42 | struct nl_cache **); |
||
43 | extern int nl_cache_alloc_name(const char *, |
||
44 | struct nl_cache **); |
||
45 | extern struct nl_cache * nl_cache_subset(struct nl_cache *, |
||
46 | struct nl_object *); |
||
47 | extern void nl_cache_clear(struct nl_cache *); |
||
48 | extern void nl_cache_free(struct nl_cache *); |
||
49 | |||
50 | /* Cache modification */ |
||
51 | extern int nl_cache_add(struct nl_cache *, |
||
52 | struct nl_object *); |
||
53 | extern int nl_cache_parse_and_add(struct nl_cache *, |
||
54 | struct nl_msg *); |
||
55 | extern void nl_cache_remove(struct nl_object *); |
||
56 | extern int nl_cache_refill(struct nl_sock *, |
||
57 | struct nl_cache *); |
||
58 | extern int nl_cache_pickup(struct nl_sock *, |
||
59 | struct nl_cache *); |
||
60 | extern int nl_cache_resync(struct nl_sock *, |
||
61 | struct nl_cache *, |
||
62 | change_func_t); |
||
63 | extern int nl_cache_include(struct nl_cache *, |
||
64 | struct nl_object *, |
||
65 | change_func_t); |
||
66 | |||
67 | /* General */ |
||
68 | extern int nl_cache_is_empty(struct nl_cache *); |
||
69 | extern void nl_cache_mark_all(struct nl_cache *); |
||
70 | |||
71 | /* Dumping */ |
||
72 | extern void nl_cache_dump(struct nl_cache *, |
||
73 | struct nl_dump_params *); |
||
74 | extern void nl_cache_dump_filter(struct nl_cache *, |
||
75 | struct nl_dump_params *, |
||
76 | struct nl_object *); |
||
77 | |||
78 | /* Iterators */ |
||
79 | #ifdef disabled |
||
80 | extern void nl_cache_foreach(struct nl_cache *, |
||
81 | void (*cb)(struct nl_object *, |
||
82 | void *), |
||
83 | void *arg); |
||
84 | extern void nl_cache_foreach_filter(struct nl_cache *, |
||
85 | struct nl_object *, |
||
86 | void (*cb)(struct |
||
87 | nl_object *, |
||
88 | void *), |
||
89 | void *arg); |
||
90 | #endif |
||
91 | |||
92 | /* --- cache management --- */ |
||
93 | |||
94 | /* Cache type management */ |
||
95 | extern struct nl_cache_ops * nl_cache_ops_lookup(const char *); |
||
96 | extern struct nl_cache_ops * nl_cache_ops_associate(int, int); |
||
97 | extern struct nl_msgtype * nl_msgtype_lookup(struct nl_cache_ops *, int); |
||
98 | extern void nl_cache_ops_foreach(void (*cb)(struct nl_cache_ops *, void *), void *); |
||
99 | extern int nl_cache_mngt_register(struct nl_cache_ops *); |
||
100 | extern int nl_cache_mngt_unregister(struct nl_cache_ops *); |
||
101 | |||
102 | /* Global cache provisioning/requiring */ |
||
103 | extern void nl_cache_mngt_provide(struct nl_cache *); |
||
104 | extern void nl_cache_mngt_unprovide(struct nl_cache *); |
||
105 | extern struct nl_cache * nl_cache_mngt_require(const char *); |
||
106 | |||
107 | struct nl_cache_mngr; |
||
108 | |||
109 | #define NL_AUTO_PROVIDE 1 |
||
110 | |||
111 | extern int nl_cache_mngr_alloc(struct nl_sock *, |
||
112 | int, int, |
||
113 | struct nl_cache_mngr **); |
||
114 | extern int nl_cache_mngr_add(struct nl_cache_mngr *, |
||
115 | const char *, |
||
116 | change_func_t, |
||
117 | struct nl_cache **); |
||
118 | extern int nl_cache_mngr_get_fd(struct nl_cache_mngr *); |
||
119 | extern int nl_cache_mngr_poll(struct nl_cache_mngr *, |
||
120 | int); |
||
121 | extern int nl_cache_mngr_data_ready(struct nl_cache_mngr *); |
||
122 | extern void nl_cache_mngr_free(struct nl_cache_mngr *); |
||
123 | |||
124 | #ifdef __cplusplus |
||
125 | } |
||
126 | #endif |
||
127 | |||
128 | #endif |