Lines Matching refs:pols
2429 xfrm_tmpl_resolve(struct xfrm_policy **pols, int npols, const struct flowi *fl, in xfrm_tmpl_resolve() argument
2440 if (cnx + pols[i]->xfrm_nr >= XFRM_MAX_DEPTH) { in xfrm_tmpl_resolve()
2445 ret = xfrm_tmpl_resolve_one(pols[i], fl, &tpp[cnx], family); in xfrm_tmpl_resolve()
2678 struct xfrm_policy **pols, in xfrm_expand_policies() argument
2683 if (*num_pols == 0 || !pols[0]) { in xfrm_expand_policies()
2688 if (IS_ERR(pols[0])) { in xfrm_expand_policies()
2690 return PTR_ERR(pols[0]); in xfrm_expand_policies()
2693 *num_xfrms = pols[0]->xfrm_nr; in xfrm_expand_policies()
2696 if (pols[0] && pols[0]->action == XFRM_POLICY_ALLOW && in xfrm_expand_policies()
2697 pols[0]->type != XFRM_POLICY_TYPE_MAIN) { in xfrm_expand_policies()
2698 pols[1] = xfrm_policy_lookup_bytype(xp_net(pols[0]), in xfrm_expand_policies()
2702 pols[0]->if_id); in xfrm_expand_policies()
2703 if (pols[1]) { in xfrm_expand_policies()
2704 if (IS_ERR(pols[1])) { in xfrm_expand_policies()
2705 xfrm_pols_put(pols, *num_pols); in xfrm_expand_policies()
2707 return PTR_ERR(pols[1]); in xfrm_expand_policies()
2710 (*num_xfrms) += pols[1]->xfrm_nr; in xfrm_expand_policies()
2715 if (pols[i]->action != XFRM_POLICY_ALLOW) { in xfrm_expand_policies()
2726 xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols, in xfrm_resolve_and_create_bundle() argument
2730 struct net *net = xp_net(pols[0]); in xfrm_resolve_and_create_bundle()
2738 err = xfrm_tmpl_resolve(pols, num_pols, fl, xfrm, family); in xfrm_resolve_and_create_bundle()
2748 dst = xfrm_bundle_create(pols[0], xfrm, bundle, err, fl, dst_orig); in xfrm_resolve_and_create_bundle()
2757 memcpy(xdst->pols, pols, sizeof(struct xfrm_policy *) * num_pols); in xfrm_resolve_and_create_bundle()
2758 xdst->policy_genid = atomic_read(&pols[0]->genid); in xfrm_resolve_and_create_bundle()
2855 struct xfrm_policy *pol = xdst->pols[0]; in xdst_queue_output()
2956 struct xfrm_policy *pols[XFRM_POLICY_TYPE_MAX]; in xfrm_bundle_lookup() local
2963 pols[0] = xfrm_policy_lookup(net, fl, family, dir, if_id); in xfrm_bundle_lookup()
2964 err = xfrm_expand_policies(fl, family, pols, in xfrm_bundle_lookup()
2973 xdst = xfrm_resolve_and_create_bundle(pols, num_pols, fl, family, in xfrm_bundle_lookup()
2978 xfrm_pols_put(pols, num_pols); in xfrm_bundle_lookup()
2998 xfrm_pols_put(pols, num_pols); in xfrm_bundle_lookup()
3003 memcpy(xdst->pols, pols, sizeof(struct xfrm_policy *) * num_pols); in xfrm_bundle_lookup()
3010 xfrm_pols_put(pols, num_pols); in xfrm_bundle_lookup()
3045 struct xfrm_policy *pols[XFRM_POLICY_TYPE_MAX]; in xfrm_lookup_with_ifid() local
3059 pols[0] = xfrm_sk_policy_lookup(sk, XFRM_POLICY_OUT, fl, family, in xfrm_lookup_with_ifid()
3061 err = xfrm_expand_policies(fl, family, pols, in xfrm_lookup_with_ifid()
3073 pols, num_pols, fl, in xfrm_lookup_with_ifid()
3077 xfrm_pols_put(pols, num_pols); in xfrm_lookup_with_ifid()
3114 memcpy(pols, xdst->pols, sizeof(struct xfrm_policy *) * num_pols); in xfrm_lookup_with_ifid()
3143 !(pols[0]->flags & XFRM_POLICY_ICMP)) { in xfrm_lookup_with_ifid()
3149 pols[i]->curlft.use_time = ktime_get_real_seconds(); in xfrm_lookup_with_ifid()
3165 xfrm_pols_put(pols, drop_pols); in xfrm_lookup_with_ifid()
3182 xfrm_pols_put(pols, drop_pols); in xfrm_lookup_with_ifid()
3552 struct xfrm_policy *pols[XFRM_POLICY_TYPE_MAX]; in __xfrm_policy_check() local
3629 pols[0] = pol; in __xfrm_policy_check()
3632 if (pols[0]->type != XFRM_POLICY_TYPE_MAIN) { in __xfrm_policy_check()
3633 pols[1] = xfrm_policy_lookup_bytype(net, XFRM_POLICY_TYPE_MAIN, in __xfrm_policy_check()
3636 if (pols[1]) { in __xfrm_policy_check()
3637 if (IS_ERR(pols[1])) { in __xfrm_policy_check()
3639 xfrm_pol_put(pols[0]); in __xfrm_policy_check()
3642 pols[1]->curlft.use_time = ktime_get_real_seconds(); in __xfrm_policy_check()
3661 if (pols[pi] != pol && in __xfrm_policy_check()
3662 pols[pi]->action != XFRM_POLICY_ALLOW) { in __xfrm_policy_check()
3666 if (ti + pols[pi]->xfrm_nr >= XFRM_MAX_DEPTH) { in __xfrm_policy_check()
3670 for (i = 0; i < pols[pi]->xfrm_nr; i++) in __xfrm_policy_check()
3671 tpp[ti++] = &pols[pi]->xfrm_vec[i]; in __xfrm_policy_check()
3701 xfrm_pols_put(pols, npols); in __xfrm_policy_check()
3709 xfrm_pols_put(pols, npols); in __xfrm_policy_check()
3855 xdst->policy_genid != atomic_read(&xdst->pols[0]->genid)) in xfrm_bundle_ok()