Lines Matching refs:pols
2420 xfrm_tmpl_resolve(struct xfrm_policy **pols, int npols, const struct flowi *fl, in xfrm_tmpl_resolve() argument
2431 if (cnx + pols[i]->xfrm_nr >= XFRM_MAX_DEPTH) { in xfrm_tmpl_resolve()
2436 ret = xfrm_tmpl_resolve_one(pols[i], fl, &tpp[cnx], family); in xfrm_tmpl_resolve()
2670 struct xfrm_policy **pols, in xfrm_expand_policies() argument
2675 if (*num_pols == 0 || !pols[0]) { in xfrm_expand_policies()
2680 if (IS_ERR(pols[0])) in xfrm_expand_policies()
2681 return PTR_ERR(pols[0]); in xfrm_expand_policies()
2683 *num_xfrms = pols[0]->xfrm_nr; in xfrm_expand_policies()
2686 if (pols[0] && pols[0]->action == XFRM_POLICY_ALLOW && in xfrm_expand_policies()
2687 pols[0]->type != XFRM_POLICY_TYPE_MAIN) { in xfrm_expand_policies()
2688 pols[1] = xfrm_policy_lookup_bytype(xp_net(pols[0]), in xfrm_expand_policies()
2692 pols[0]->if_id); in xfrm_expand_policies()
2693 if (pols[1]) { in xfrm_expand_policies()
2694 if (IS_ERR(pols[1])) { in xfrm_expand_policies()
2695 xfrm_pols_put(pols, *num_pols); in xfrm_expand_policies()
2696 return PTR_ERR(pols[1]); in xfrm_expand_policies()
2699 (*num_xfrms) += pols[1]->xfrm_nr; in xfrm_expand_policies()
2704 if (pols[i]->action != XFRM_POLICY_ALLOW) { in xfrm_expand_policies()
2715 xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols, in xfrm_resolve_and_create_bundle() argument
2719 struct net *net = xp_net(pols[0]); in xfrm_resolve_and_create_bundle()
2727 err = xfrm_tmpl_resolve(pols, num_pols, fl, xfrm, family); in xfrm_resolve_and_create_bundle()
2737 dst = xfrm_bundle_create(pols[0], xfrm, bundle, err, fl, dst_orig); in xfrm_resolve_and_create_bundle()
2746 memcpy(xdst->pols, pols, sizeof(struct xfrm_policy *) * num_pols); in xfrm_resolve_and_create_bundle()
2747 xdst->policy_genid = atomic_read(&pols[0]->genid); in xfrm_resolve_and_create_bundle()
2833 struct xfrm_policy *pol = xdst->pols[0]; in xdst_queue_output()
2934 struct xfrm_policy *pols[XFRM_POLICY_TYPE_MAX]; in xfrm_bundle_lookup() local
2941 pols[0] = xfrm_policy_lookup(net, fl, family, dir, if_id); in xfrm_bundle_lookup()
2942 err = xfrm_expand_policies(fl, family, pols, in xfrm_bundle_lookup()
2951 xdst = xfrm_resolve_and_create_bundle(pols, num_pols, fl, family, in xfrm_bundle_lookup()
2956 xfrm_pols_put(pols, num_pols); in xfrm_bundle_lookup()
2976 xfrm_pols_put(pols, num_pols); in xfrm_bundle_lookup()
2981 memcpy(xdst->pols, pols, sizeof(struct xfrm_policy *) * num_pols); in xfrm_bundle_lookup()
2988 xfrm_pols_put(pols, num_pols); in xfrm_bundle_lookup()
3023 struct xfrm_policy *pols[XFRM_POLICY_TYPE_MAX]; in xfrm_lookup_with_ifid() local
3037 pols[0] = xfrm_sk_policy_lookup(sk, XFRM_POLICY_OUT, fl, family, in xfrm_lookup_with_ifid()
3039 err = xfrm_expand_policies(fl, family, pols, in xfrm_lookup_with_ifid()
3051 pols, num_pols, fl, in xfrm_lookup_with_ifid()
3055 xfrm_pols_put(pols, num_pols); in xfrm_lookup_with_ifid()
3092 memcpy(pols, xdst->pols, sizeof(struct xfrm_policy *) * num_pols); in xfrm_lookup_with_ifid()
3121 !(pols[0]->flags & XFRM_POLICY_ICMP)) { in xfrm_lookup_with_ifid()
3127 pols[i]->curlft.use_time = ktime_get_real_seconds(); in xfrm_lookup_with_ifid()
3143 xfrm_pols_put(pols, drop_pols); in xfrm_lookup_with_ifid()
3160 xfrm_pols_put(pols, drop_pols); in xfrm_lookup_with_ifid()
3510 struct xfrm_policy *pols[XFRM_POLICY_TYPE_MAX]; in __xfrm_policy_check() local
3587 pols[0] = pol; in __xfrm_policy_check()
3590 if (pols[0]->type != XFRM_POLICY_TYPE_MAIN) { in __xfrm_policy_check()
3591 pols[1] = xfrm_policy_lookup_bytype(net, XFRM_POLICY_TYPE_MAIN, in __xfrm_policy_check()
3594 if (pols[1]) { in __xfrm_policy_check()
3595 if (IS_ERR(pols[1])) { in __xfrm_policy_check()
3599 pols[1]->curlft.use_time = ktime_get_real_seconds(); in __xfrm_policy_check()
3618 if (pols[pi] != pol && in __xfrm_policy_check()
3619 pols[pi]->action != XFRM_POLICY_ALLOW) { in __xfrm_policy_check()
3623 if (ti + pols[pi]->xfrm_nr >= XFRM_MAX_DEPTH) { in __xfrm_policy_check()
3627 for (i = 0; i < pols[pi]->xfrm_nr; i++) in __xfrm_policy_check()
3628 tpp[ti++] = &pols[pi]->xfrm_vec[i]; in __xfrm_policy_check()
3658 xfrm_pols_put(pols, npols); in __xfrm_policy_check()
3666 xfrm_pols_put(pols, npols); in __xfrm_policy_check()
3812 xdst->policy_genid != atomic_read(&xdst->pols[0]->genid)) in xfrm_bundle_ok()