Lines Matching refs:f
72 #define DN_FIB_SCAN(f, fp) \ argument
73 for( ; ((f) = *(fp)) != NULL; (fp) = &(f)->fn_next)
75 #define DN_FIB_SCAN_KEY(f, fp, key) \ argument
76 for( ; ((f) = *(fp)) != NULL && dn_key_eq((f)->fn_key, (key)); (fp) = &(f)->fn_next)
126 struct dn_fib_node *f, **fp, *next; in dn_rebuild_zone() local
130 for(f = old_ht[i]; f; f = next) { in dn_rebuild_zone()
131 next = f->fn_next; in dn_rebuild_zone()
132 for(fp = dn_chain_p(f->fn_key, dz); in dn_rebuild_zone()
133 *fp && dn_key_leq((*fp)->fn_key, f->fn_key); in dn_rebuild_zone()
136 f->fn_next = *fp; in dn_rebuild_zone()
137 *fp = f; in dn_rebuild_zone()
178 static void dn_free_node(struct dn_fib_node *f) in dn_free_node() argument
180 dn_fib_release_info(DN_FIB_INFO(f)); in dn_free_node()
181 kmem_cache_free(dn_hash_kmem, f); in dn_free_node()
379 static void dn_rtmsg_fib(int event, struct dn_fib_node *f, int z, u32 tb_id, in dn_rtmsg_fib() argument
386 skb = nlmsg_new(dn_fib_nlmsg_size(DN_FIB_INFO(f)), GFP_KERNEL); in dn_rtmsg_fib()
391 f->fn_type, f->fn_scope, &f->fn_key, z, in dn_rtmsg_fib()
392 DN_FIB_INFO(f), 0); in dn_rtmsg_fib()
410 struct dn_fib_node *f) in dn_hash_dump_bucket() argument
415 for(i = 0; f; i++, f = f->fn_next) { in dn_hash_dump_bucket()
418 if (f->fn_state & DN_S_ZOMBIE) in dn_hash_dump_bucket()
424 (f->fn_state & DN_S_ZOMBIE) ? 0 : f->fn_type, in dn_hash_dump_bucket()
425 f->fn_scope, &f->fn_key, dz->dz_order, in dn_hash_dump_bucket()
426 f->fn_info, NLM_F_MULTI) < 0) { in dn_hash_dump_bucket()
530 struct dn_fib_node *new_f, *f, **fp, **del_fp; in dn_fib_table_insert() local
563 DN_FIB_SCAN(f, fp) { in dn_fib_table_insert()
564 if (dn_key_leq(key, f->fn_key)) in dn_fib_table_insert()
570 if (f && (f->fn_state & DN_S_ZOMBIE) && in dn_fib_table_insert()
571 dn_key_eq(f->fn_key, key)) { in dn_fib_table_insert()
573 fp = &f->fn_next; in dn_fib_table_insert()
574 f = *fp; in dn_fib_table_insert()
578 DN_FIB_SCAN_KEY(f, fp, key) { in dn_fib_table_insert()
579 if (fi->fib_priority <= DN_FIB_INFO(f)->fib_priority) in dn_fib_table_insert()
583 if (f && dn_key_eq(f->fn_key, key) && in dn_fib_table_insert()
584 fi->fib_priority == DN_FIB_INFO(f)->fib_priority) { in dn_fib_table_insert()
593 fp = &f->fn_next; in dn_fib_table_insert()
594 f = *fp; in dn_fib_table_insert()
601 DN_FIB_SCAN_KEY(f, fp, key) { in dn_fib_table_insert()
602 if (fi->fib_priority != DN_FIB_INFO(f)->fib_priority) in dn_fib_table_insert()
604 if (f->fn_type == type && in dn_fib_table_insert()
605 f->fn_scope == r->rtm_scope && in dn_fib_table_insert()
606 DN_FIB_INFO(f) == fi) in dn_fib_table_insert()
612 f = *fp; in dn_fib_table_insert()
632 new_f->fn_next = f; in dn_fib_table_insert()
639 f = *del_fp; in dn_fib_table_insert()
641 *del_fp = f->fn_next; in dn_fib_table_insert()
644 if (!(f->fn_state & DN_S_ZOMBIE)) in dn_fib_table_insert()
645 dn_rtmsg_fib(RTM_DELROUTE, f, z, tb->n, n, req); in dn_fib_table_insert()
646 if (f->fn_state & DN_S_ACCESSED) in dn_fib_table_insert()
648 dn_free_node(f); in dn_fib_table_insert()
667 struct dn_fib_node **fp, **del_fp, *f; in dn_fib_table_delete() local
690 DN_FIB_SCAN(f, fp) { in dn_fib_table_delete()
691 if (dn_key_eq(f->fn_key, key)) in dn_fib_table_delete()
693 if (dn_key_leq(key, f->fn_key)) in dn_fib_table_delete()
699 DN_FIB_SCAN_KEY(f, fp, key) { in dn_fib_table_delete()
700 struct dn_fib_info *fi = DN_FIB_INFO(f); in dn_fib_table_delete()
702 if (f->fn_state & DN_S_ZOMBIE) in dn_fib_table_delete()
708 (!r->rtm_type || f->fn_type == r->rtm_type) && in dn_fib_table_delete()
709 (r->rtm_scope == RT_SCOPE_NOWHERE || f->fn_scope == r->rtm_scope) && in dn_fib_table_delete()
717 f = *del_fp; in dn_fib_table_delete()
718 dn_rtmsg_fib(RTM_DELROUTE, f, z, tb->n, n, req); in dn_fib_table_delete()
722 *del_fp = f->fn_next; in dn_fib_table_delete()
725 if (f->fn_state & DN_S_ACCESSED) in dn_fib_table_delete()
727 dn_free_node(f); in dn_fib_table_delete()
730 f->fn_state |= DN_S_ZOMBIE; in dn_fib_table_delete()
731 if (f->fn_state & DN_S_ACCESSED) { in dn_fib_table_delete()
732 f->fn_state &= ~DN_S_ACCESSED; in dn_fib_table_delete()
748 struct dn_fib_node *f; in dn_flush_list() local
750 while((f = *fp) != NULL) { in dn_flush_list()
751 struct dn_fib_info *fi = DN_FIB_INFO(f); in dn_flush_list()
753 if (fi && ((f->fn_state & DN_S_ZOMBIE) || (fi->fib_flags & RTNH_F_DEAD))) { in dn_flush_list()
755 *fp = f->fn_next; in dn_flush_list()
758 dn_free_node(f); in dn_flush_list()
762 fp = &f->fn_next; in dn_flush_list()
795 struct dn_fib_node *f; in dn_fib_table_lookup() local
798 for(f = dz_chain(k, dz); f; f = f->fn_next) { in dn_fib_table_lookup()
799 if (!dn_key_eq(k, f->fn_key)) { in dn_fib_table_lookup()
800 if (dn_key_leq(k, f->fn_key)) in dn_fib_table_lookup()
806 f->fn_state |= DN_S_ACCESSED; in dn_fib_table_lookup()
808 if (f->fn_state&DN_S_ZOMBIE) in dn_fib_table_lookup()
811 if (f->fn_scope < flp->flowidn_scope) in dn_fib_table_lookup()
814 err = dn_fib_semantic_match(f->fn_type, DN_FIB_INFO(f), flp, res); in dn_fib_table_lookup()
817 res->type = f->fn_type; in dn_fib_table_lookup()
818 res->scope = f->fn_scope; in dn_fib_table_lookup()