Lines Matching refs:xfrm

32 	rcu_dereference_protected((table), lockdep_is_held(&(net)->xfrm.xfrm_state_lock))
61 return __xfrm_dst_hash(daddr, saddr, reqid, family, net->xfrm.state_hmask); in xfrm_dst_hash()
69 return __xfrm_src_hash(daddr, saddr, family, net->xfrm.state_hmask); in xfrm_src_hash()
76 return __xfrm_spi_hash(daddr, spi, proto, family, net->xfrm.state_hmask); in xfrm_spi_hash()
117 struct net *net = container_of(work, struct net, xfrm.state_hash_work); in xfrm_hash_resize()
123 nsize = xfrm_hash_new_size(net->xfrm.state_hmask); in xfrm_hash_resize()
139 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_hash_resize()
143 odst = xfrm_state_deref_prot(net->xfrm.state_bydst, net); in xfrm_hash_resize()
144 for (i = net->xfrm.state_hmask; i >= 0; i--) in xfrm_hash_resize()
147 osrc = xfrm_state_deref_prot(net->xfrm.state_bysrc, net); in xfrm_hash_resize()
148 ospi = xfrm_state_deref_prot(net->xfrm.state_byspi, net); in xfrm_hash_resize()
149 ohashmask = net->xfrm.state_hmask; in xfrm_hash_resize()
151 rcu_assign_pointer(net->xfrm.state_bydst, ndst); in xfrm_hash_resize()
152 rcu_assign_pointer(net->xfrm.state_bysrc, nsrc); in xfrm_hash_resize()
153 rcu_assign_pointer(net->xfrm.state_byspi, nspi); in xfrm_hash_resize()
154 net->xfrm.state_hmask = nhashmask; in xfrm_hash_resize()
157 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_hash_resize()
613 spin_lock(&net->xfrm.xfrm_state_lock); in __xfrm_state_delete()
619 net->xfrm.state_num--; in __xfrm_state_delete()
620 spin_unlock(&net->xfrm.xfrm_state_lock); in __xfrm_state_delete()
654 for (i = 0; i <= net->xfrm.state_hmask; i++) { in xfrm_state_flush_secctx_check()
657 hlist_for_each_entry(x, net->xfrm.state_bydst+i, bydst) { in xfrm_state_flush_secctx_check()
674 for (i = 0; i <= net->xfrm.state_hmask; i++) { in xfrm_dev_state_flush_secctx_check()
678 hlist_for_each_entry(x, net->xfrm.state_bydst+i, bydst) { in xfrm_dev_state_flush_secctx_check()
709 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_flush()
715 for (i = 0; i <= net->xfrm.state_hmask; i++) { in xfrm_state_flush()
718 hlist_for_each_entry(x, net->xfrm.state_bydst+i, bydst) { in xfrm_state_flush()
722 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_flush()
731 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_flush()
737 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_flush()
749 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_dev_state_flush()
755 for (i = 0; i <= net->xfrm.state_hmask; i++) { in xfrm_dev_state_flush()
759 hlist_for_each_entry(x, net->xfrm.state_bydst+i, bydst) { in xfrm_dev_state_flush()
764 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_dev_state_flush()
773 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_dev_state_flush()
782 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_dev_state_flush()
789 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_sad_getinfo()
790 si->sadcnt = net->xfrm.state_num; in xfrm_sad_getinfo()
791 si->sadhcnt = net->xfrm.state_hmask; in xfrm_sad_getinfo()
793 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_sad_getinfo()
826 hlist_for_each_entry_rcu(x, net->xfrm.state_byspi + h, byspi) { in __xfrm_state_lookup()
851 hlist_for_each_entry_rcu(x, net->xfrm.state_bysrc + h, bysrc) { in __xfrm_state_lookup_byaddr()
887 (net->xfrm.state_hmask + 1) < xfrm_state_hashmax && in xfrm_hash_grow_check()
888 net->xfrm.state_num > net->xfrm.state_hmask) in xfrm_hash_grow_check()
889 schedule_work(&net->xfrm.state_hash_work); in xfrm_hash_grow_check()
953 hlist_for_each_entry_rcu(x, net->xfrm.state_bydst + h, bydst) { in xfrm_state_find()
970 hlist_for_each_entry_rcu(x, net->xfrm.state_bydst + h_wildcard, bydst) { in xfrm_state_find()
1025 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_find()
1027 list_add(&x->km.all, &net->xfrm.state_all); in xfrm_state_find()
1028 hlist_add_head_rcu(&x->bydst, net->xfrm.state_bydst + h); in xfrm_state_find()
1030 hlist_add_head_rcu(&x->bysrc, net->xfrm.state_bysrc + h); in xfrm_state_find()
1033 hlist_add_head_rcu(&x->byspi, net->xfrm.state_byspi + h); in xfrm_state_find()
1035 x->lft.hard_add_expires_seconds = net->xfrm.sysctl_acq_expires; in xfrm_state_find()
1036 tasklet_hrtimer_start(&x->mtimer, ktime_set(net->xfrm.sysctl_acq_expires, 0), HRTIMER_MODE_REL); in xfrm_state_find()
1037 net->xfrm.state_num++; in xfrm_state_find()
1039 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_find()
1079 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_stateonly_find()
1081 hlist_for_each_entry(x, net->xfrm.state_bydst+h, bydst) { in xfrm_stateonly_find()
1098 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_stateonly_find()
1111 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_lookup_byspi()
1112 list_for_each_entry(w, &net->xfrm.state_all, all) { in xfrm_state_lookup_byspi()
1119 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_lookup_byspi()
1122 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_lookup_byspi()
1132 list_add(&x->km.all, &net->xfrm.state_all); in __xfrm_state_insert()
1136 hlist_add_head_rcu(&x->bydst, net->xfrm.state_bydst + h); in __xfrm_state_insert()
1139 hlist_add_head_rcu(&x->bysrc, net->xfrm.state_bysrc + h); in __xfrm_state_insert()
1145 hlist_add_head_rcu(&x->byspi, net->xfrm.state_byspi + h); in __xfrm_state_insert()
1152 net->xfrm.state_num++; in __xfrm_state_insert()
1169 hlist_for_each_entry(x, net->xfrm.state_bydst+h, bydst) { in __xfrm_state_bump_genids()
1184 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_insert()
1187 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_insert()
1204 hlist_for_each_entry(x, net->xfrm.state_bydst+h, bydst) { in __find_acq_core()
1253 x->lft.hard_add_expires_seconds = net->xfrm.sysctl_acq_expires; in __find_acq_core()
1255 tasklet_hrtimer_start(&x->mtimer, ktime_set(net->xfrm.sysctl_acq_expires, 0), HRTIMER_MODE_REL); in __find_acq_core()
1256 list_add(&x->km.all, &net->xfrm.state_all); in __find_acq_core()
1257 hlist_add_head_rcu(&x->bydst, net->xfrm.state_bydst + h); in __find_acq_core()
1259 hlist_add_head_rcu(&x->bysrc, net->xfrm.state_bysrc + h); in __find_acq_core()
1261 net->xfrm.state_num++; in __find_acq_core()
1284 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_add()
1313 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_add()
1427 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_migrate_state_find()
1432 hlist_for_each_entry(x, net->xfrm.state_bydst+h, bydst) { in xfrm_migrate_state_find()
1449 hlist_for_each_entry(x, net->xfrm.state_bysrc+h, bysrc) { in xfrm_migrate_state_find()
1463 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_migrate_state_find()
1509 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_update()
1529 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_update()
1565 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_update()
1574 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_update()
1633 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_lookup_byaddr()
1635 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_lookup_byaddr()
1647 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_find_acq()
1649 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_find_acq()
1666 spin_lock_bh(&net->xfrm.xfrm_state_lock); /*FIXME*/ in xfrm_tmpl_sort()
1672 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_tmpl_sort()
1690 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_sort()
1696 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_sort()
1709 for (i = 0; i <= net->xfrm.state_hmask; i++) { in __xfrm_find_acq_byseq()
1712 hlist_for_each_entry(x, net->xfrm.state_bydst+i, bydst) { in __xfrm_find_acq_byseq()
1728 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_find_acq_byseq()
1730 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_find_acq_byseq()
1812 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_alloc_spi()
1814 hlist_add_head_rcu(&x->byspi, net->xfrm.state_byspi + h); in xfrm_alloc_spi()
1815 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_alloc_spi()
1855 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_walk()
1857 x = list_first_entry(&net->xfrm.state_all, struct xfrm_state_walk, all); in xfrm_state_walk()
1860 list_for_each_entry_from(x, &net->xfrm.state_all, all) { in xfrm_state_walk()
1881 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_walk()
1904 spin_lock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_walk_done()
1906 spin_unlock_bh(&net->xfrm.xfrm_state_lock); in xfrm_state_walk_done()
2341 INIT_LIST_HEAD(&net->xfrm.state_all); in xfrm_state_init()
2345 net->xfrm.state_bydst = xfrm_hash_alloc(sz); in xfrm_state_init()
2346 if (!net->xfrm.state_bydst) in xfrm_state_init()
2348 net->xfrm.state_bysrc = xfrm_hash_alloc(sz); in xfrm_state_init()
2349 if (!net->xfrm.state_bysrc) in xfrm_state_init()
2351 net->xfrm.state_byspi = xfrm_hash_alloc(sz); in xfrm_state_init()
2352 if (!net->xfrm.state_byspi) in xfrm_state_init()
2354 net->xfrm.state_hmask = ((sz / sizeof(struct hlist_head)) - 1); in xfrm_state_init()
2356 net->xfrm.state_num = 0; in xfrm_state_init()
2357 INIT_WORK(&net->xfrm.state_hash_work, xfrm_hash_resize); in xfrm_state_init()
2358 spin_lock_init(&net->xfrm.xfrm_state_lock); in xfrm_state_init()
2362 xfrm_hash_free(net->xfrm.state_bysrc, sz); in xfrm_state_init()
2364 xfrm_hash_free(net->xfrm.state_bydst, sz); in xfrm_state_init()
2373 flush_work(&net->xfrm.state_hash_work); in xfrm_state_fini()
2377 WARN_ON(!list_empty(&net->xfrm.state_all)); in xfrm_state_fini()
2379 sz = (net->xfrm.state_hmask + 1) * sizeof(struct hlist_head); in xfrm_state_fini()
2380 WARN_ON(!hlist_empty(net->xfrm.state_byspi)); in xfrm_state_fini()
2381 xfrm_hash_free(net->xfrm.state_byspi, sz); in xfrm_state_fini()
2382 WARN_ON(!hlist_empty(net->xfrm.state_bysrc)); in xfrm_state_fini()
2383 xfrm_hash_free(net->xfrm.state_bysrc, sz); in xfrm_state_fini()
2384 WARN_ON(!hlist_empty(net->xfrm.state_bydst)); in xfrm_state_fini()
2385 xfrm_hash_free(net->xfrm.state_bydst, sz); in xfrm_state_fini()