Lines Matching defs:set

36 #define get_ext(set, map, id)	((map)->extensions + ((set)->dsize * (id)))
39 mtype_gc_init(struct ip_set *set, void (*gc)(struct timer_list *t))
41 struct mtype *map = set->data;
44 mod_timer(&map->gc, jiffies + IPSET_GC_PERIOD(set->timeout) * HZ);
48 mtype_ext_cleanup(struct ip_set *set)
50 struct mtype *map = set->data;
55 ip_set_ext_destroy(set, get_ext(set, map, id));
59 mtype_destroy(struct ip_set *set)
61 struct mtype *map = set->data;
63 if (set->dsize && set->extensions & IPSET_EXT_DESTROY)
64 mtype_ext_cleanup(set);
68 set->data = NULL;
72 mtype_flush(struct ip_set *set)
74 struct mtype *map = set->data;
76 if (set->extensions & IPSET_EXT_DESTROY)
77 mtype_ext_cleanup(set);
79 set->elements = 0;
80 set->ext_size = 0;
83 /* Calculate the actual memory size of the set data */
92 mtype_head(struct ip_set *set, struct sk_buff *skb)
94 const struct mtype *map = set->data;
96 size_t memsize = mtype_memsize(map, set->dsize) + set->ext_size;
102 nla_put_net32(skb, IPSET_ATTR_REFERENCES, htonl(set->ref)) ||
104 nla_put_net32(skb, IPSET_ATTR_ELEMENTS, htonl(set->elements)))
106 if (unlikely(ip_set_put_flags(skb, set)))
116 mtype_test(struct ip_set *set, void *value, const struct ip_set_ext *ext,
119 struct mtype *map = set->data;
121 void *x = get_ext(set, map, e->id);
122 int ret = mtype_do_test(e, map, set->dsize);
126 return ip_set_match_extensions(set, ext, mext, flags, x);
130 mtype_add(struct ip_set *set, void *value, const struct ip_set_ext *ext,
133 struct mtype *map = set->data;
135 void *x = get_ext(set, map, e->id);
136 int ret = mtype_do_add(e, map, flags, set->dsize);
139 if (SET_WITH_TIMEOUT(set) &&
140 ip_set_timeout_expired(ext_timeout(x, set))) {
141 set->elements--;
148 ip_set_ext_destroy(set, x);
151 set->elements--;
153 if (SET_WITH_TIMEOUT(set))
155 mtype_add_timeout(ext_timeout(x, set), e, ext, set, map, ret);
157 ip_set_timeout_set(ext_timeout(x, set), ext->timeout);
160 if (SET_WITH_COUNTER(set))
161 ip_set_init_counter(ext_counter(x, set), ext);
162 if (SET_WITH_COMMENT(set))
163 ip_set_init_comment(set, ext_comment(x, set), ext);
164 if (SET_WITH_SKBINFO(set))
165 ip_set_init_skbinfo(ext_skbinfo(x, set), ext);
169 set->elements++;
175 mtype_del(struct ip_set *set, void *value, const struct ip_set_ext *ext,
178 struct mtype *map = set->data;
180 void *x = get_ext(set, map, e->id);
185 ip_set_ext_destroy(set, x);
186 set->elements--;
187 if (SET_WITH_TIMEOUT(set) &&
188 ip_set_timeout_expired(ext_timeout(x, set)))
203 mtype_list(const struct ip_set *set,
206 struct mtype *map = set->data;
221 x = get_ext(set, map, id);
223 (SET_WITH_TIMEOUT(set) &&
227 ip_set_timeout_expired(ext_timeout(x, set))))
239 if (mtype_do_list(skb, map, id, set->dsize))
241 if (ip_set_put_extensions(skb, set, x, mtype_is_filled(x)))
268 struct ip_set *set = map->set;
275 spin_lock_bh(&set->lock);
277 if (mtype_gc_test(id, map, set->dsize)) {
278 x = get_ext(set, map, id);
279 if (ip_set_timeout_expired(ext_timeout(x, set))) {
281 ip_set_ext_destroy(set, x);
282 set->elements--;
285 spin_unlock_bh(&set->lock);
287 map->gc.expires = jiffies + IPSET_GC_PERIOD(set->timeout) * HZ;
292 mtype_cancel_gc(struct ip_set *set)
294 struct mtype *map = set->data;
296 if (SET_WITH_TIMEOUT(set))