Lines Matching refs:xfrm
46 return __xfrm_dst_hash(daddr, saddr, reqid, family, net->xfrm.state_hmask); in xfrm_dst_hash()
54 return __xfrm_src_hash(daddr, saddr, family, net->xfrm.state_hmask); in xfrm_src_hash()
61 return __xfrm_spi_hash(daddr, spi, proto, family, net->xfrm.state_hmask); in xfrm_spi_hash()
102 struct net *net = container_of(work, struct net, xfrm.state_hash_work); in xfrm_hash_resize()
108 nsize = xfrm_hash_new_size(net->xfrm.state_hmask); in xfrm_hash_resize()
124 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_hash_resize()
127 for (i = net->xfrm.state_hmask; i >= 0; i--) in xfrm_hash_resize()
128 xfrm_hash_transfer(net->xfrm.state_bydst+i, ndst, nsrc, nspi, in xfrm_hash_resize()
131 odst = net->xfrm.state_bydst; in xfrm_hash_resize()
132 osrc = net->xfrm.state_bysrc; in xfrm_hash_resize()
133 ospi = net->xfrm.state_byspi; in xfrm_hash_resize()
134 ohashmask = net->xfrm.state_hmask; in xfrm_hash_resize()
136 net->xfrm.state_bydst = ndst; in xfrm_hash_resize()
137 net->xfrm.state_bysrc = nsrc; in xfrm_hash_resize()
138 net->xfrm.state_byspi = nspi; in xfrm_hash_resize()
139 net->xfrm.state_hmask = nhashmask; in xfrm_hash_resize()
141 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_hash_resize()
358 struct net *net = container_of(work, struct net, xfrm.state_gc_work); in xfrm_state_gc_task()
364 hlist_move_list(&net->xfrm.state_gc_list, &gc_list); in xfrm_state_gc_task()
508 hlist_add_head(&x->gclist, &net->xfrm.state_gc_list); in __xfrm_state_destroy()
510 schedule_work(&net->xfrm.state_gc_work); in __xfrm_state_destroy()
521 spin_lock(&net->xfrm.xfrm_state_lock); in __xfrm_state_delete()
527 net->xfrm.state_num--; in __xfrm_state_delete()
528 spin_unlock(&net->xfrm.xfrm_state_lock); in __xfrm_state_delete()
560 for (i = 0; i <= net->xfrm.state_hmask; i++) { in xfrm_state_flush_secctx_check()
563 hlist_for_each_entry(x, net->xfrm.state_bydst+i, bydst) { in xfrm_state_flush_secctx_check()
586 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_flush()
592 for (i = 0; i <= net->xfrm.state_hmask; i++) { in xfrm_state_flush()
595 hlist_for_each_entry(x, net->xfrm.state_bydst+i, bydst) { in xfrm_state_flush()
599 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_flush()
608 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_flush()
617 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_flush()
624 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_sad_getinfo()
625 si->sadcnt = net->xfrm.state_num; in xfrm_sad_getinfo()
626 si->sadhcnt = net->xfrm.state_hmask; in xfrm_sad_getinfo()
628 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_sad_getinfo()
662 hlist_for_each_entry(x, net->xfrm.state_byspi+h, byspi) { in __xfrm_state_lookup()
686 hlist_for_each_entry(x, net->xfrm.state_bysrc+h, bysrc) { in __xfrm_state_lookup_byaddr()
721 (net->xfrm.state_hmask + 1) < xfrm_state_hashmax && in xfrm_hash_grow_check()
722 net->xfrm.state_num > net->xfrm.state_hmask) in xfrm_hash_grow_check()
723 schedule_work(&net->xfrm.state_hash_work); in xfrm_hash_grow_check()
782 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_find()
784 hlist_for_each_entry(x, net->xfrm.state_bydst+h, bydst) { in xfrm_state_find()
800 hlist_for_each_entry(x, net->xfrm.state_bydst+h_wildcard, bydst) { in xfrm_state_find()
854 list_add(&x->km.all, &net->xfrm.state_all); in xfrm_state_find()
855 hlist_add_head(&x->bydst, net->xfrm.state_bydst+h); in xfrm_state_find()
857 hlist_add_head(&x->bysrc, net->xfrm.state_bysrc+h); in xfrm_state_find()
860 hlist_add_head(&x->byspi, net->xfrm.state_byspi+h); in xfrm_state_find()
862 x->lft.hard_add_expires_seconds = net->xfrm.sysctl_acq_expires; in xfrm_state_find()
863 tasklet_hrtimer_start(&x->mtimer, ktime_set(net->xfrm.sysctl_acq_expires, 0), HRTIMER_MODE_REL); in xfrm_state_find()
864 net->xfrm.state_num++; in xfrm_state_find()
878 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_find()
892 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_stateonly_find()
894 hlist_for_each_entry(x, net->xfrm.state_bydst+h, bydst) { in xfrm_stateonly_find()
910 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_stateonly_find()
923 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_lookup_byspi()
924 list_for_each_entry(w, &net->xfrm.state_all, all) { in xfrm_state_lookup_byspi()
931 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_lookup_byspi()
934 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_lookup_byspi()
944 list_add(&x->km.all, &net->xfrm.state_all); in __xfrm_state_insert()
948 hlist_add_head(&x->bydst, net->xfrm.state_bydst+h); in __xfrm_state_insert()
951 hlist_add_head(&x->bysrc, net->xfrm.state_bysrc+h); in __xfrm_state_insert()
957 hlist_add_head(&x->byspi, net->xfrm.state_byspi+h); in __xfrm_state_insert()
964 net->xfrm.state_num++; in __xfrm_state_insert()
980 hlist_for_each_entry(x, net->xfrm.state_bydst+h, bydst) { in __xfrm_state_bump_genids()
994 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_insert()
997 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_insert()
1014 hlist_for_each_entry(x, net->xfrm.state_bydst+h, bydst) { in __find_acq_core()
1062 x->lft.hard_add_expires_seconds = net->xfrm.sysctl_acq_expires; in __find_acq_core()
1064 tasklet_hrtimer_start(&x->mtimer, ktime_set(net->xfrm.sysctl_acq_expires, 0), HRTIMER_MODE_REL); in __find_acq_core()
1065 list_add(&x->km.all, &net->xfrm.state_all); in __find_acq_core()
1066 hlist_add_head(&x->bydst, net->xfrm.state_bydst+h); in __find_acq_core()
1068 hlist_add_head(&x->bysrc, net->xfrm.state_bysrc+h); in __find_acq_core()
1070 net->xfrm.state_num++; in __find_acq_core()
1093 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_add()
1122 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_add()
1225 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_migrate_state_find()
1230 hlist_for_each_entry(x, net->xfrm.state_bydst+h, bydst) { in xfrm_migrate_state_find()
1247 hlist_for_each_entry(x, net->xfrm.state_bysrc+h, bysrc) { in xfrm_migrate_state_find()
1261 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_migrate_state_find()
1306 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_update()
1326 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_update()
1397 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_lookup()
1399 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_lookup()
1411 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_lookup_byaddr()
1413 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_lookup_byaddr()
1425 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_find_acq()
1427 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_find_acq()
1443 spin_lock_bh(&net->xfrm.xfrm_state_lock); /*FIXME*/ in xfrm_tmpl_sort()
1446 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_tmpl_sort()
1463 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_sort()
1466 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_sort()
1479 for (i = 0; i <= net->xfrm.state_hmask; i++) { in __xfrm_find_acq_byseq()
1482 hlist_for_each_entry(x, net->xfrm.state_bydst+i, bydst) { in __xfrm_find_acq_byseq()
1498 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_find_acq_byseq()
1500 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_find_acq_byseq()
1582 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_alloc_spi()
1584 hlist_add_head(&x->byspi, net->xfrm.state_byspi+h); in xfrm_alloc_spi()
1585 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_alloc_spi()
1625 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_walk()
1627 x = list_first_entry(&net->xfrm.state_all, struct xfrm_state_walk, all); in xfrm_state_walk()
1630 list_for_each_entry_from(x, &net->xfrm.state_all, all) { in xfrm_state_walk()
1651 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_walk()
1674 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_walk_done()
1676 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_walk_done()
2085 INIT_LIST_HEAD(&net->xfrm.state_all); in xfrm_state_init()
2089 net->xfrm.state_bydst = xfrm_hash_alloc(sz); in xfrm_state_init()
2090 if (!net->xfrm.state_bydst) in xfrm_state_init()
2092 net->xfrm.state_bysrc = xfrm_hash_alloc(sz); in xfrm_state_init()
2093 if (!net->xfrm.state_bysrc) in xfrm_state_init()
2095 net->xfrm.state_byspi = xfrm_hash_alloc(sz); in xfrm_state_init()
2096 if (!net->xfrm.state_byspi) in xfrm_state_init()
2098 net->xfrm.state_hmask = ((sz / sizeof(struct hlist_head)) - 1); in xfrm_state_init()
2100 net->xfrm.state_num = 0; in xfrm_state_init()
2101 INIT_WORK(&net->xfrm.state_hash_work, xfrm_hash_resize); in xfrm_state_init()
2102 INIT_HLIST_HEAD(&net->xfrm.state_gc_list); in xfrm_state_init()
2103 INIT_WORK(&net->xfrm.state_gc_work, xfrm_state_gc_task); in xfrm_state_init()
2104 spin_lock_init(&net->xfrm.xfrm_state_lock); in xfrm_state_init()
2108 xfrm_hash_free(net->xfrm.state_bysrc, sz); in xfrm_state_init()
2110 xfrm_hash_free(net->xfrm.state_bydst, sz); in xfrm_state_init()
2119 flush_work(&net->xfrm.state_hash_work); in xfrm_state_fini()
2121 flush_work(&net->xfrm.state_gc_work); in xfrm_state_fini()
2123 WARN_ON(!list_empty(&net->xfrm.state_all)); in xfrm_state_fini()
2125 sz = (net->xfrm.state_hmask + 1) * sizeof(struct hlist_head); in xfrm_state_fini()
2126 WARN_ON(!hlist_empty(net->xfrm.state_byspi)); in xfrm_state_fini()
2127 xfrm_hash_free(net->xfrm.state_byspi, sz); in xfrm_state_fini()
2128 WARN_ON(!hlist_empty(net->xfrm.state_bysrc)); in xfrm_state_fini()
2129 xfrm_hash_free(net->xfrm.state_bysrc, sz); in xfrm_state_fini()
2130 WARN_ON(!hlist_empty(net->xfrm.state_bydst)); in xfrm_state_fini()
2131 xfrm_hash_free(net->xfrm.state_bydst, sz); in xfrm_state_fini()