Lines Matching refs:f
81 struct route4_filter *f) in route4_set_fastmap() argument
89 head->fastmap[h].filter = f; in route4_set_fastmap()
115 *res = f->res; \
116 if (tcf_exts_is_available(&f->exts)) { \
117 int r = tcf_exts_exec(skb, &f->exts, res); \
124 route4_set_fastmap(head, id, iif, f); \
134 struct route4_filter *f; in route4_classify() local
153 (f = head->fastmap[h].filter) != NULL) { in route4_classify()
154 if (f == ROUTE4_FAILURE) { in route4_classify()
159 *res = f->res; in route4_classify()
170 for (f = rcu_dereference_bh(b->ht[route4_hash_from(id)]); in route4_classify()
171 f; in route4_classify()
172 f = rcu_dereference_bh(f->next)) in route4_classify()
173 if (f->id == id) in route4_classify()
176 for (f = rcu_dereference_bh(b->ht[route4_hash_iif(iif)]); in route4_classify()
177 f; in route4_classify()
178 f = rcu_dereference_bh(f->next)) in route4_classify()
179 if (f->iif == iif) in route4_classify()
182 for (f = rcu_dereference_bh(b->ht[route4_hash_wild()]); in route4_classify()
183 f; in route4_classify()
184 f = rcu_dereference_bh(f->next)) in route4_classify()
234 struct route4_filter *f; in route4_get() local
250 for (f = rtnl_dereference(b->ht[h2]); in route4_get()
251 f; in route4_get()
252 f = rtnl_dereference(f->next)) in route4_get()
253 if (f->handle == handle) in route4_get()
254 return (unsigned long)f; in route4_get()
274 struct route4_filter *f = container_of(head, struct route4_filter, rcu); in route4_delete_filter() local
276 tcf_exts_destroy(&f->exts); in route4_delete_filter()
277 kfree(f); in route4_delete_filter()
301 struct route4_filter *f; in route4_destroy() local
303 while ((f = rtnl_dereference(b->ht[h2])) != NULL) { in route4_destroy()
306 next = rtnl_dereference(f->next); in route4_destroy()
308 tcf_unbind_filter(tp, &f->res); in route4_destroy()
309 call_rcu(&f->rcu, route4_delete_filter); in route4_destroy()
324 struct route4_filter *f = (struct route4_filter *)arg; in route4_delete() local
331 if (!head || !f) in route4_delete()
334 h = f->handle; in route4_delete()
335 b = f->bkt; in route4_delete()
340 if (nf == f) { in route4_delete()
342 RCU_INIT_POINTER(*fp, rtnl_dereference(f->next)); in route4_delete()
351 tcf_unbind_filter(tp, &f->res); in route4_delete()
352 call_rcu(&f->rcu, route4_delete_filter); in route4_delete()
381 unsigned long base, struct route4_filter *f, in route4_set_parms() argument
445 if (fp->handle == f->handle) in route4_set_parms()
450 f->id = to; in route4_set_parms()
453 f->id = to | id<<16; in route4_set_parms()
455 f->iif = id; in route4_set_parms()
457 f->handle = nhandle; in route4_set_parms()
458 f->bkt = b; in route4_set_parms()
459 f->tp = tp; in route4_set_parms()
462 f->res.classid = nla_get_u32(tb[TCA_ROUTE4_CLASSID]); in route4_set_parms()
463 tcf_bind_filter(tp, &f->res, base); in route4_set_parms()
466 tcf_exts_change(tp, &f->exts, &e); in route4_set_parms()
482 struct route4_filter *fold, *f1, *pfp, *f = NULL; in route4_change() local
502 f = kzalloc(sizeof(struct route4_filter), GFP_KERNEL); in route4_change()
503 if (!f) in route4_change()
506 tcf_exts_init(&f->exts, TCA_ROUTE4_ACT, TCA_ROUTE4_POLICE); in route4_change()
508 f->id = fold->id; in route4_change()
509 f->iif = fold->iif; in route4_change()
510 f->res = fold->res; in route4_change()
511 f->handle = fold->handle; in route4_change()
513 f->tp = fold->tp; in route4_change()
514 f->bkt = fold->bkt; in route4_change()
518 err = route4_set_parms(net, tp, base, f, handle, head, tb, in route4_change()
523 h = from_hash(f->handle >> 16); in route4_change()
524 fp = &f->bkt->ht[h]; in route4_change()
528 if (f->handle < f1->handle) in route4_change()
532 rcu_assign_pointer(f->next, f1); in route4_change()
533 rcu_assign_pointer(*fp, f); in route4_change()
535 if (fold && fold->handle && f->handle != fold->handle) { in route4_change()
543 if (pfp == f) { in route4_change()
544 *fp = f->next; in route4_change()
552 *arg = (unsigned long)f; in route4_change()
560 kfree(f); in route4_change()
580 struct route4_filter *f; in route4_walk() local
582 for (f = rtnl_dereference(b->ht[h1]); in route4_walk()
583 f; in route4_walk()
584 f = rtnl_dereference(f->next)) { in route4_walk()
589 if (arg->fn(tp, (unsigned long)f, arg) < 0) { in route4_walk()
603 struct route4_filter *f = (struct route4_filter *)fh; in route4_dump() local
607 if (f == NULL) in route4_dump()
610 t->tcm_handle = f->handle; in route4_dump()
616 if (!(f->handle & 0x8000)) { in route4_dump()
617 id = f->id & 0xFF; in route4_dump()
621 if (f->handle & 0x80000000) { in route4_dump()
622 if ((f->handle >> 16) != 0xFFFF && in route4_dump()
623 nla_put_u32(skb, TCA_ROUTE4_IIF, f->iif)) in route4_dump()
626 id = f->id >> 16; in route4_dump()
630 if (f->res.classid && in route4_dump()
631 nla_put_u32(skb, TCA_ROUTE4_CLASSID, f->res.classid)) in route4_dump()
634 if (tcf_exts_dump(skb, &f->exts) < 0) in route4_dump()
639 if (tcf_exts_dump_stats(skb, &f->exts) < 0) in route4_dump()