Lines Matching refs:dir
55 int dir);
155 int dir; in xfrm_policy_timer() local
162 dir = xfrm_policy_id2dir(xp->index); in xfrm_policy_timer()
202 km_policy_expired(xp, dir, 0, 0); in xfrm_policy_timer()
214 if (!xfrm_policy_delete(xp, dir)) in xfrm_policy_timer()
215 km_policy_expired(xp, dir, 1, 0); in xfrm_policy_timer()
326 …head *policy_hash_bysel(struct net *net, struct xfrm_selector *sel, unsigned short family, int dir) in policy_hash_bysel() argument
328 unsigned int hmask = net->xfrm.policy_bydst[dir].hmask; in policy_hash_bysel()
332 &net->xfrm.policy_inexact[dir] : in policy_hash_bysel()
333 net->xfrm.policy_bydst[dir].table + hash); in policy_hash_bysel()
336 …rect(struct net *net, xfrm_address_t *daddr, xfrm_address_t *saddr, unsigned short family, int dir) in policy_hash_direct() argument
338 unsigned int hmask = net->xfrm.policy_bydst[dir].hmask; in policy_hash_direct()
341 return net->xfrm.policy_bydst[dir].table + hash; in policy_hash_direct()
396 static void xfrm_bydst_resize(struct net *net, int dir) in xfrm_bydst_resize() argument
398 unsigned int hmask = net->xfrm.policy_bydst[dir].hmask; in xfrm_bydst_resize()
401 struct hlist_head *odst = net->xfrm.policy_bydst[dir].table; in xfrm_bydst_resize()
413 net->xfrm.policy_bydst[dir].table = ndst; in xfrm_bydst_resize()
414 net->xfrm.policy_bydst[dir].hmask = nhashmask; in xfrm_bydst_resize()
446 static inline int xfrm_bydst_should_resize(struct net *net, int dir, int *total) in xfrm_bydst_should_resize() argument
448 unsigned int cnt = net->xfrm.policy_count[dir]; in xfrm_bydst_should_resize()
449 unsigned int hmask = net->xfrm.policy_bydst[dir].hmask; in xfrm_bydst_should_resize()
491 int dir, total; in xfrm_hash_resize() local
496 for (dir = 0; dir < XFRM_POLICY_MAX * 2; dir++) { in xfrm_hash_resize()
497 if (xfrm_bydst_should_resize(net, dir, &total)) in xfrm_hash_resize()
498 xfrm_bydst_resize(net, dir); in xfrm_hash_resize()
508 static u32 xfrm_gen_index(struct net *net, int dir) in xfrm_gen_index() argument
519 idx = (idx_generator | dir); in xfrm_gen_index()
551 int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl) in xfrm_policy_insert() argument
561 chain = policy_hash_bysel(net, &policy->selector, policy->family, dir); in xfrm_policy_insert()
588 net->xfrm.policy_count[dir]++; in xfrm_policy_insert()
591 __xfrm_policy_unlink(delpol, dir); in xfrm_policy_insert()
592 policy->index = delpol ? delpol->index : xfrm_gen_index(net, dir); in xfrm_policy_insert()
603 else if (xfrm_bydst_should_resize(net, dir, NULL)) in xfrm_policy_insert()
638 struct xfrm_policy *xfrm_policy_bysel_ctx(struct net *net, u8 type, int dir, in xfrm_policy_bysel_ctx() argument
649 chain = policy_hash_bysel(net, sel, sel->family, dir); in xfrm_policy_bysel_ctx()
663 __xfrm_policy_unlink(pol, dir); in xfrm_policy_bysel_ctx()
679 struct xfrm_policy *xfrm_policy_byid(struct net *net, u8 type, int dir, u32 id, in xfrm_policy_byid() argument
687 if (xfrm_policy_id2dir(id) != dir) in xfrm_policy_byid()
704 __xfrm_policy_unlink(pol, dir); in xfrm_policy_byid()
724 int dir, err = 0; in xfrm_policy_flush_secctx_check() local
726 for (dir = 0; dir < XFRM_POLICY_MAX; dir++) { in xfrm_policy_flush_secctx_check()
732 &net->xfrm.policy_inexact[dir], bydst) { in xfrm_policy_flush_secctx_check()
744 for (i = net->xfrm.policy_bydst[dir].hmask; i >= 0; i--) { in xfrm_policy_flush_secctx_check()
746 net->xfrm.policy_bydst[dir].table + i, in xfrm_policy_flush_secctx_check()
774 int dir, err = 0; in xfrm_policy_flush() local
782 for (dir = 0; dir < XFRM_POLICY_MAX; dir++) { in xfrm_policy_flush()
789 &net->xfrm.policy_inexact[dir], bydst) { in xfrm_policy_flush()
792 __xfrm_policy_unlink(pol, dir); in xfrm_policy_flush()
805 for (i = net->xfrm.policy_bydst[dir].hmask; i >= 0; i--) { in xfrm_policy_flush()
808 net->xfrm.policy_bydst[dir].table + i, in xfrm_policy_flush()
812 __xfrm_policy_unlink(pol, dir); in xfrm_policy_flush()
906 u8 type, u16 family, int dir) in xfrm_policy_match() argument
918 dir); in xfrm_policy_match()
925 u16 family, u8 dir) in xfrm_policy_lookup_bytype() argument
940 chain = policy_hash_direct(net, daddr, saddr, family, dir); in xfrm_policy_lookup_bytype()
943 err = xfrm_policy_match(pol, fl, type, family, dir); in xfrm_policy_lookup_bytype()
957 chain = &net->xfrm.policy_inexact[dir]; in xfrm_policy_lookup_bytype()
959 err = xfrm_policy_match(pol, fl, type, family, dir); in xfrm_policy_lookup_bytype()
981 u8 dir, void **objp, atomic_t **obj_refp) in xfrm_policy_lookup() argument
987 pol = xfrm_policy_lookup_bytype(net, XFRM_POLICY_TYPE_SUB, fl, family, dir); in xfrm_policy_lookup()
995 pol = xfrm_policy_lookup_bytype(net, XFRM_POLICY_TYPE_MAIN, fl, family, dir); in xfrm_policy_lookup()
1008 static inline int policy_to_flow_dir(int dir) in policy_to_flow_dir() argument
1013 return dir; in policy_to_flow_dir()
1014 switch (dir) { in policy_to_flow_dir()
1025 static struct xfrm_policy *xfrm_sk_policy_lookup(struct sock *sk, int dir, struct flowi *fl) in xfrm_sk_policy_lookup() argument
1030 if ((pol = sk->sk_policy[dir]) != NULL) { in xfrm_sk_policy_lookup()
1038 policy_to_flow_dir(dir)); in xfrm_sk_policy_lookup()
1052 static void __xfrm_policy_link(struct xfrm_policy *pol, int dir) in __xfrm_policy_link() argument
1056 pol->family, dir); in __xfrm_policy_link()
1061 net->xfrm.policy_count[dir]++; in __xfrm_policy_link()
1064 if (xfrm_bydst_should_resize(net, dir, NULL)) in __xfrm_policy_link()
1069 int dir) in __xfrm_policy_unlink() argument
1079 net->xfrm.policy_count[dir]--; in __xfrm_policy_unlink()
1084 int xfrm_policy_delete(struct xfrm_policy *pol, int dir) in xfrm_policy_delete() argument
1087 pol = __xfrm_policy_unlink(pol, dir); in xfrm_policy_delete()
1090 if (dir < XFRM_POLICY_MAX) in xfrm_policy_delete()
1099 int xfrm_sk_policy_insert(struct sock *sk, int dir, struct xfrm_policy *pol) in xfrm_sk_policy_insert() argument
1110 old_pol = sk->sk_policy[dir]; in xfrm_sk_policy_insert()
1111 sk->sk_policy[dir] = pol; in xfrm_sk_policy_insert()
1114 pol->index = xfrm_gen_index(net, XFRM_POLICY_MAX+dir); in xfrm_sk_policy_insert()
1115 __xfrm_policy_link(pol, XFRM_POLICY_MAX+dir); in xfrm_sk_policy_insert()
1118 __xfrm_policy_unlink(old_pol, XFRM_POLICY_MAX+dir); in xfrm_sk_policy_insert()
1127 static struct xfrm_policy *clone_policy(struct xfrm_policy *old, int dir) in clone_policy() argument
1148 __xfrm_policy_link(newp, XFRM_POLICY_MAX+dir); in clone_policy()
1537 u8 dir = policy_to_flow_dir(XFRM_POLICY_OUT); in __xfrm_lookup() local
1564 dir, xfrm_policy_lookup); in __xfrm_lookup()
1875 int __xfrm_policy_check(struct sock *sk, int dir, struct sk_buff *skb, in __xfrm_policy_check() argument
1889 reverse = dir & ~XFRM_POLICY_MASK; in __xfrm_policy_check()
1890 dir &= XFRM_POLICY_MASK; in __xfrm_policy_check()
1891 fl_dir = policy_to_flow_dir(dir); in __xfrm_policy_check()
1914 if (sk && sk->sk_policy[dir]) { in __xfrm_policy_check()
1915 pol = xfrm_sk_policy_lookup(sk, dir, &fl); in __xfrm_policy_check()
2124 int dir; in xfrm_prune_bundles() local
2127 for (dir = 0; dir < XFRM_POLICY_MAX * 2; dir++) { in xfrm_prune_bundles()
2134 &net->xfrm.policy_inexact[dir], bydst) in xfrm_prune_bundles()
2137 table = net->xfrm.policy_bydst[dir].table; in xfrm_prune_bundles()
2138 for (i = net->xfrm.policy_bydst[dir].hmask; i >= 0; i--) { in xfrm_prune_bundles()
2394 int dir; in xfrm_policy_init() local
2410 for (dir = 0; dir < XFRM_POLICY_MAX * 2; dir++) { in xfrm_policy_init()
2413 net->xfrm.policy_count[dir] = 0; in xfrm_policy_init()
2414 INIT_HLIST_HEAD(&net->xfrm.policy_inexact[dir]); in xfrm_policy_init()
2416 htab = &net->xfrm.policy_bydst[dir]; in xfrm_policy_init()
2430 for (dir--; dir >= 0; dir--) { in xfrm_policy_init()
2433 htab = &net->xfrm.policy_bydst[dir]; in xfrm_policy_init()
2445 int dir; in xfrm_policy_fini() local
2462 for (dir = 0; dir < XFRM_POLICY_MAX * 2; dir++) { in xfrm_policy_fini()
2465 WARN_ON(!hlist_empty(&net->xfrm.policy_inexact[dir])); in xfrm_policy_fini()
2467 htab = &net->xfrm.policy_bydst[dir]; in xfrm_policy_fini()
2614 u8 dir, u8 type) in xfrm_migrate_policy_find() argument
2622 chain = policy_hash_direct(&init_net, &sel->daddr, &sel->saddr, sel->family, dir); in xfrm_migrate_policy_find()
2631 chain = &init_net.xfrm.policy_inexact[dir]; in xfrm_migrate_policy_find()
2757 int xfrm_migrate(struct xfrm_selector *sel, u8 dir, u8 type, in xfrm_migrate() argument
2772 if ((pol = xfrm_migrate_policy_find(sel, dir, type)) == NULL) { in xfrm_migrate()
2803 km_migrate(sel, dir, type, m, num_migrate, k); in xfrm_migrate()