• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/net/netfilter/

Lines Matching defs:hinfo

169 	struct xt_hashlimit_htable *hinfo;
183 hinfo = vmalloc(sizeof(struct xt_hashlimit_htable) +
185 if (!hinfo) {
189 minfo->hinfo = hinfo;
192 memcpy(&hinfo->cfg, &minfo->cfg, sizeof(hinfo->cfg));
193 hinfo->cfg.size = size;
194 if (!hinfo->cfg.max)
195 hinfo->cfg.max = 8 * hinfo->cfg.size;
196 else if (hinfo->cfg.max < hinfo->cfg.size)
197 hinfo->cfg.max = hinfo->cfg.size;
199 for (i = 0; i < hinfo->cfg.size; i++)
200 INIT_HLIST_HEAD(&hinfo->hash[i]);
202 atomic_set(&hinfo->use, 1);
203 hinfo->count = 0;
204 hinfo->family = family;
205 hinfo->rnd_initialized = 0;
206 spin_lock_init(&hinfo->lock);
207 hinfo->pde = create_proc_entry(minfo->name, 0,
210 if (!hinfo->pde) {
211 vfree(hinfo);
214 hinfo->pde->proc_fops = &dl_file_ops;
215 hinfo->pde->data = hinfo;
217 setup_timer(&hinfo->timer, htable_gc, (unsigned long )hinfo);
218 hinfo->timer.expires = jiffies + msecs_to_jiffies(hinfo->cfg.gc_interval);
219 add_timer(&hinfo->timer);
222 hlist_add_head(&hinfo->node, &hashlimit_htables);
269 static void htable_destroy(struct xt_hashlimit_htable *hinfo)
272 if (timer_pending(&hinfo->timer))
273 del_timer(&hinfo->timer);
276 remove_proc_entry(hinfo->pde->name,
277 hinfo->family == AF_INET ? hashlimit_procdir4 :
279 htable_selective_cleanup(hinfo, select_all);
280 vfree(hinfo);
285 struct xt_hashlimit_htable *hinfo;
289 hlist_for_each_entry(hinfo, pos, &hashlimit_htables, node) {
290 if (!strcmp(name, hinfo->pde->name) &&
291 hinfo->family == family) {
292 atomic_inc(&hinfo->use);
294 return hinfo;
301 static void htable_put(struct xt_hashlimit_htable *hinfo)
303 if (atomic_dec_and_test(&hinfo->use)) {
305 hlist_del(&hinfo->node);
307 htable_destroy(hinfo);
368 hashlimit_init_dst(struct xt_hashlimit_htable *hinfo, struct dsthash_dst *dst,
376 switch (hinfo->family) {
378 if (hinfo->cfg.mode & XT_HASHLIMIT_HASH_DIP)
380 if (hinfo->cfg.mode & XT_HASHLIMIT_HASH_SIP)
383 if (!(hinfo->cfg.mode &
390 if (hinfo->cfg.mode & XT_HASHLIMIT_HASH_DIP)
393 if (hinfo->cfg.mode & XT_HASHLIMIT_HASH_SIP)
397 if (!(hinfo->cfg.mode &
426 if (hinfo->cfg.mode & XT_HASHLIMIT_HASH_SPT)
428 if (hinfo->cfg.mode & XT_HASHLIMIT_HASH_DPT)
445 struct xt_hashlimit_htable *hinfo = r->hinfo;
450 if (hashlimit_init_dst(hinfo, &dst, skb, protoff) < 0)
453 spin_lock_bh(&hinfo->lock);
454 dh = dsthash_find(hinfo, &dst);
456 dh = dsthash_alloc_init(hinfo, &dst);
458 spin_unlock_bh(&hinfo->lock);
462 dh->expires = jiffies + msecs_to_jiffies(hinfo->cfg.expire);
464 dh->rateinfo.credit = user2credits(hinfo->cfg.avg *
465 hinfo->cfg.burst);
466 dh->rateinfo.credit_cap = user2credits(hinfo->cfg.avg *
467 hinfo->cfg.burst);
468 dh->rateinfo.cost = user2credits(hinfo->cfg.avg);
471 dh->expires = now + msecs_to_jiffies(hinfo->cfg.expire);
478 spin_unlock_bh(&hinfo->lock);
482 spin_unlock_bh(&hinfo->lock);
528 r->hinfo = htable_find_get(r->name, match->family);
529 if (!r->hinfo && htable_create(r, match->family) != 0) {
545 htable_put(r->hinfo);
552 compat_uptr_t hinfo;
558 int off = offsetof(struct compat_xt_hashlimit_info, hinfo);
566 int off = offsetof(struct compat_xt_hashlimit_info, hinfo);