Lines Matching refs:f

73 #define DN_FIB_SCAN(f, fp) \  argument
74 for( ; ((f) = *(fp)) != NULL; (fp) = &(f)->fn_next)
76 #define DN_FIB_SCAN_KEY(f, fp, key) \ argument
77 for( ; ((f) = *(fp)) != NULL && dn_key_eq((f)->fn_key, (key)); (fp) = &(f)->fn_next)
127 struct dn_fib_node *f, **fp, *next; in dn_rebuild_zone() local
131 for(f = old_ht[i]; f; f = next) { in dn_rebuild_zone()
132 next = f->fn_next; in dn_rebuild_zone()
133 for(fp = dn_chain_p(f->fn_key, dz); in dn_rebuild_zone()
134 *fp && dn_key_leq((*fp)->fn_key, f->fn_key); in dn_rebuild_zone()
137 f->fn_next = *fp; in dn_rebuild_zone()
138 *fp = f; in dn_rebuild_zone()
180 static void dn_free_node(struct dn_fib_node *f) in dn_free_node() argument
182 dn_fib_release_info(DN_FIB_INFO(f)); in dn_free_node()
183 kmem_cache_free(dn_hash_kmem, f); in dn_free_node()
382 static void dn_rtmsg_fib(int event, struct dn_fib_node *f, int z, u32 tb_id, in dn_rtmsg_fib() argument
389 skb = nlmsg_new(dn_fib_nlmsg_size(DN_FIB_INFO(f)), GFP_KERNEL); in dn_rtmsg_fib()
394 f->fn_type, f->fn_scope, &f->fn_key, z, in dn_rtmsg_fib()
395 DN_FIB_INFO(f), 0); in dn_rtmsg_fib()
413 struct dn_fib_node *f) in dn_hash_dump_bucket() argument
418 for(i = 0; f; i++, f = f->fn_next) { in dn_hash_dump_bucket()
421 if (f->fn_state & DN_S_ZOMBIE) in dn_hash_dump_bucket()
427 (f->fn_state & DN_S_ZOMBIE) ? 0 : f->fn_type, in dn_hash_dump_bucket()
428 f->fn_scope, &f->fn_key, dz->dz_order, in dn_hash_dump_bucket()
429 f->fn_info, NLM_F_MULTI) < 0) { in dn_hash_dump_bucket()
533 struct dn_fib_node *new_f, *f, **fp, **del_fp; in dn_fib_table_insert() local
566 DN_FIB_SCAN(f, fp) { in dn_fib_table_insert()
567 if (dn_key_leq(key, f->fn_key)) in dn_fib_table_insert()
573 if (f && (f->fn_state & DN_S_ZOMBIE) && in dn_fib_table_insert()
574 dn_key_eq(f->fn_key, key)) { in dn_fib_table_insert()
576 fp = &f->fn_next; in dn_fib_table_insert()
577 f = *fp; in dn_fib_table_insert()
581 DN_FIB_SCAN_KEY(f, fp, key) { in dn_fib_table_insert()
582 if (fi->fib_priority <= DN_FIB_INFO(f)->fib_priority) in dn_fib_table_insert()
586 if (f && dn_key_eq(f->fn_key, key) && in dn_fib_table_insert()
587 fi->fib_priority == DN_FIB_INFO(f)->fib_priority) { in dn_fib_table_insert()
596 fp = &f->fn_next; in dn_fib_table_insert()
597 f = *fp; in dn_fib_table_insert()
604 DN_FIB_SCAN_KEY(f, fp, key) { in dn_fib_table_insert()
605 if (fi->fib_priority != DN_FIB_INFO(f)->fib_priority) in dn_fib_table_insert()
607 if (f->fn_type == type && in dn_fib_table_insert()
608 f->fn_scope == r->rtm_scope && in dn_fib_table_insert()
609 DN_FIB_INFO(f) == fi) in dn_fib_table_insert()
615 f = *fp; in dn_fib_table_insert()
635 new_f->fn_next = f; in dn_fib_table_insert()
642 f = *del_fp; in dn_fib_table_insert()
644 *del_fp = f->fn_next; in dn_fib_table_insert()
647 if (!(f->fn_state & DN_S_ZOMBIE)) in dn_fib_table_insert()
648 dn_rtmsg_fib(RTM_DELROUTE, f, z, tb->n, n, req); in dn_fib_table_insert()
649 if (f->fn_state & DN_S_ACCESSED) in dn_fib_table_insert()
651 dn_free_node(f); in dn_fib_table_insert()
670 struct dn_fib_node **fp, **del_fp, *f; in dn_fib_table_delete() local
693 DN_FIB_SCAN(f, fp) { in dn_fib_table_delete()
694 if (dn_key_eq(f->fn_key, key)) in dn_fib_table_delete()
696 if (dn_key_leq(key, f->fn_key)) in dn_fib_table_delete()
702 DN_FIB_SCAN_KEY(f, fp, key) { in dn_fib_table_delete()
703 struct dn_fib_info *fi = DN_FIB_INFO(f); in dn_fib_table_delete()
705 if (f->fn_state & DN_S_ZOMBIE) in dn_fib_table_delete()
711 (!r->rtm_type || f->fn_type == r->rtm_type) && in dn_fib_table_delete()
712 (r->rtm_scope == RT_SCOPE_NOWHERE || f->fn_scope == r->rtm_scope) && in dn_fib_table_delete()
720 f = *del_fp; in dn_fib_table_delete()
721 dn_rtmsg_fib(RTM_DELROUTE, f, z, tb->n, n, req); in dn_fib_table_delete()
725 *del_fp = f->fn_next; in dn_fib_table_delete()
728 if (f->fn_state & DN_S_ACCESSED) in dn_fib_table_delete()
730 dn_free_node(f); in dn_fib_table_delete()
733 f->fn_state |= DN_S_ZOMBIE; in dn_fib_table_delete()
734 if (f->fn_state & DN_S_ACCESSED) { in dn_fib_table_delete()
735 f->fn_state &= ~DN_S_ACCESSED; in dn_fib_table_delete()
751 struct dn_fib_node *f; in dn_flush_list() local
753 while((f = *fp) != NULL) { in dn_flush_list()
754 struct dn_fib_info *fi = DN_FIB_INFO(f); in dn_flush_list()
756 if (fi && ((f->fn_state & DN_S_ZOMBIE) || (fi->fib_flags & RTNH_F_DEAD))) { in dn_flush_list()
758 *fp = f->fn_next; in dn_flush_list()
761 dn_free_node(f); in dn_flush_list()
765 fp = &f->fn_next; in dn_flush_list()
798 struct dn_fib_node *f; in dn_fib_table_lookup() local
801 for(f = dz_chain(k, dz); f; f = f->fn_next) { in dn_fib_table_lookup()
802 if (!dn_key_eq(k, f->fn_key)) { in dn_fib_table_lookup()
803 if (dn_key_leq(k, f->fn_key)) in dn_fib_table_lookup()
809 f->fn_state |= DN_S_ACCESSED; in dn_fib_table_lookup()
811 if (f->fn_state&DN_S_ZOMBIE) in dn_fib_table_lookup()
814 if (f->fn_scope < flp->flowidn_scope) in dn_fib_table_lookup()
817 err = dn_fib_semantic_match(f->fn_type, DN_FIB_INFO(f), flp, res); in dn_fib_table_lookup()
820 res->type = f->fn_type; in dn_fib_table_lookup()
821 res->scope = f->fn_scope; in dn_fib_table_lookup()