Lines Matching refs:en

301 static inline void ip_vs_lblcr_free(struct ip_vs_lblcr_entry *en)  in ip_vs_lblcr_free()  argument
303 hlist_del_rcu(&en->list); in ip_vs_lblcr_free()
304 ip_vs_dest_set_eraseall(&en->set); in ip_vs_lblcr_free()
305 kfree_rcu(en, rcu_head); in ip_vs_lblcr_free()
331 ip_vs_lblcr_hash(struct ip_vs_lblcr_table *tbl, struct ip_vs_lblcr_entry *en) in ip_vs_lblcr_hash() argument
333 unsigned int hash = ip_vs_lblcr_hashkey(en->af, &en->addr); in ip_vs_lblcr_hash()
335 hlist_add_head_rcu(&en->list, &tbl->bucket[hash]); in ip_vs_lblcr_hash()
346 struct ip_vs_lblcr_entry *en; in ip_vs_lblcr_get() local
348 hlist_for_each_entry_rcu(en, &tbl->bucket[hash], list) in ip_vs_lblcr_get()
349 if (ip_vs_addr_equal(af, &en->addr, addr)) in ip_vs_lblcr_get()
350 return en; in ip_vs_lblcr_get()
364 struct ip_vs_lblcr_entry *en; in ip_vs_lblcr_new() local
366 en = ip_vs_lblcr_get(af, tbl, daddr); in ip_vs_lblcr_new()
367 if (!en) { in ip_vs_lblcr_new()
368 en = kmalloc(sizeof(*en), GFP_ATOMIC); in ip_vs_lblcr_new()
369 if (!en) in ip_vs_lblcr_new()
372 en->af = af; in ip_vs_lblcr_new()
373 ip_vs_addr_copy(af, &en->addr, daddr); in ip_vs_lblcr_new()
374 en->lastuse = jiffies; in ip_vs_lblcr_new()
377 atomic_set(&(en->set.size), 0); in ip_vs_lblcr_new()
378 INIT_LIST_HEAD(&en->set.list); in ip_vs_lblcr_new()
380 ip_vs_dest_set_insert(&en->set, dest, false); in ip_vs_lblcr_new()
382 ip_vs_lblcr_hash(tbl, en); in ip_vs_lblcr_new()
383 return en; in ip_vs_lblcr_new()
386 ip_vs_dest_set_insert(&en->set, dest, true); in ip_vs_lblcr_new()
388 return en; in ip_vs_lblcr_new()
399 struct ip_vs_lblcr_entry *en; in ip_vs_lblcr_flush() local
405 hlist_for_each_entry_safe(en, next, &tbl->bucket[i], list) { in ip_vs_lblcr_flush()
406 ip_vs_lblcr_free(en); in ip_vs_lblcr_flush()
426 struct ip_vs_lblcr_entry *en; in ip_vs_lblcr_full_check() local
433 hlist_for_each_entry_safe(en, next, &tbl->bucket[j], list) { in ip_vs_lblcr_full_check()
434 if (time_after(en->lastuse + in ip_vs_lblcr_full_check()
438 ip_vs_lblcr_free(en); in ip_vs_lblcr_full_check()
465 struct ip_vs_lblcr_entry *en; in ip_vs_lblcr_check_expire() local
488 hlist_for_each_entry_safe(en, next, &tbl->bucket[j], list) { in ip_vs_lblcr_check_expire()
489 if (time_before(now, en->lastuse+ENTRY_TIMEOUT)) in ip_vs_lblcr_check_expire()
492 ip_vs_lblcr_free(en); in ip_vs_lblcr_check_expire()
650 struct ip_vs_lblcr_entry *en; in ip_vs_lblcr_schedule() local
655 en = ip_vs_lblcr_get(svc->af, tbl, &iph->daddr); in ip_vs_lblcr_schedule()
656 if (en) { in ip_vs_lblcr_schedule()
657 en->lastuse = jiffies; in ip_vs_lblcr_schedule()
660 dest = ip_vs_dest_set_min(&en->set); in ip_vs_lblcr_schedule()
663 if (atomic_read(&en->set.size) > 1 && in ip_vs_lblcr_schedule()
664 time_after(jiffies, en->set.lastmod + in ip_vs_lblcr_schedule()
667 if (atomic_read(&en->set.size) > 1) { in ip_vs_lblcr_schedule()
670 m = ip_vs_dest_set_max(&en->set); in ip_vs_lblcr_schedule()
672 ip_vs_dest_set_erase(&en->set, m); in ip_vs_lblcr_schedule()
691 ip_vs_dest_set_insert(&en->set, dest, true); in ip_vs_lblcr_schedule()