Lines Matching refs:pols
2424 xfrm_tmpl_resolve(struct xfrm_policy **pols, int npols, const struct flowi *fl, in xfrm_tmpl_resolve() argument
2435 if (cnx + pols[i]->xfrm_nr >= XFRM_MAX_DEPTH) { in xfrm_tmpl_resolve()
2440 ret = xfrm_tmpl_resolve_one(pols[i], fl, &tpp[cnx], family); in xfrm_tmpl_resolve()
2673 struct xfrm_policy **pols, in xfrm_expand_policies() argument
2678 if (*num_pols == 0 || !pols[0]) { in xfrm_expand_policies()
2683 if (IS_ERR(pols[0])) { in xfrm_expand_policies()
2685 return PTR_ERR(pols[0]); in xfrm_expand_policies()
2688 *num_xfrms = pols[0]->xfrm_nr; in xfrm_expand_policies()
2691 if (pols[0] && pols[0]->action == XFRM_POLICY_ALLOW && in xfrm_expand_policies()
2692 pols[0]->type != XFRM_POLICY_TYPE_MAIN) { in xfrm_expand_policies()
2693 pols[1] = xfrm_policy_lookup_bytype(xp_net(pols[0]), in xfrm_expand_policies()
2697 pols[0]->if_id); in xfrm_expand_policies()
2698 if (pols[1]) { in xfrm_expand_policies()
2699 if (IS_ERR(pols[1])) { in xfrm_expand_policies()
2700 xfrm_pols_put(pols, *num_pols); in xfrm_expand_policies()
2702 return PTR_ERR(pols[1]); in xfrm_expand_policies()
2705 (*num_xfrms) += pols[1]->xfrm_nr; in xfrm_expand_policies()
2710 if (pols[i]->action != XFRM_POLICY_ALLOW) { in xfrm_expand_policies()
2721 xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols, in xfrm_resolve_and_create_bundle() argument
2725 struct net *net = xp_net(pols[0]); in xfrm_resolve_and_create_bundle()
2733 err = xfrm_tmpl_resolve(pols, num_pols, fl, xfrm, family); in xfrm_resolve_and_create_bundle()
2743 dst = xfrm_bundle_create(pols[0], xfrm, bundle, err, fl, dst_orig); in xfrm_resolve_and_create_bundle()
2752 memcpy(xdst->pols, pols, sizeof(struct xfrm_policy *) * num_pols); in xfrm_resolve_and_create_bundle()
2753 xdst->policy_genid = atomic_read(&pols[0]->genid); in xfrm_resolve_and_create_bundle()
2850 struct xfrm_policy *pol = xdst->pols[0]; in xdst_queue_output()
2951 struct xfrm_policy *pols[XFRM_POLICY_TYPE_MAX]; in xfrm_bundle_lookup() local
2958 pols[0] = xfrm_policy_lookup(net, fl, family, dir, if_id); in xfrm_bundle_lookup()
2959 err = xfrm_expand_policies(fl, family, pols, in xfrm_bundle_lookup()
2968 xdst = xfrm_resolve_and_create_bundle(pols, num_pols, fl, family, in xfrm_bundle_lookup()
2973 xfrm_pols_put(pols, num_pols); in xfrm_bundle_lookup()
2993 xfrm_pols_put(pols, num_pols); in xfrm_bundle_lookup()
2998 memcpy(xdst->pols, pols, sizeof(struct xfrm_policy *) * num_pols); in xfrm_bundle_lookup()
3005 xfrm_pols_put(pols, num_pols); in xfrm_bundle_lookup()
3040 struct xfrm_policy *pols[XFRM_POLICY_TYPE_MAX]; in xfrm_lookup_with_ifid() local
3054 pols[0] = xfrm_sk_policy_lookup(sk, XFRM_POLICY_OUT, fl, family, in xfrm_lookup_with_ifid()
3056 err = xfrm_expand_policies(fl, family, pols, in xfrm_lookup_with_ifid()
3068 pols, num_pols, fl, in xfrm_lookup_with_ifid()
3072 xfrm_pols_put(pols, num_pols); in xfrm_lookup_with_ifid()
3109 memcpy(pols, xdst->pols, sizeof(struct xfrm_policy *) * num_pols); in xfrm_lookup_with_ifid()
3138 !(pols[0]->flags & XFRM_POLICY_ICMP)) { in xfrm_lookup_with_ifid()
3144 pols[i]->curlft.use_time = ktime_get_real_seconds(); in xfrm_lookup_with_ifid()
3160 xfrm_pols_put(pols, drop_pols); in xfrm_lookup_with_ifid()
3177 xfrm_pols_put(pols, drop_pols); in xfrm_lookup_with_ifid()
3547 struct xfrm_policy *pols[XFRM_POLICY_TYPE_MAX]; in __xfrm_policy_check() local
3624 pols[0] = pol; in __xfrm_policy_check()
3627 if (pols[0]->type != XFRM_POLICY_TYPE_MAIN) { in __xfrm_policy_check()
3628 pols[1] = xfrm_policy_lookup_bytype(net, XFRM_POLICY_TYPE_MAIN, in __xfrm_policy_check()
3631 if (pols[1]) { in __xfrm_policy_check()
3632 if (IS_ERR(pols[1])) { in __xfrm_policy_check()
3636 pols[1]->curlft.use_time = ktime_get_real_seconds(); in __xfrm_policy_check()
3655 if (pols[pi] != pol && in __xfrm_policy_check()
3656 pols[pi]->action != XFRM_POLICY_ALLOW) { in __xfrm_policy_check()
3660 if (ti + pols[pi]->xfrm_nr >= XFRM_MAX_DEPTH) { in __xfrm_policy_check()
3664 for (i = 0; i < pols[pi]->xfrm_nr; i++) in __xfrm_policy_check()
3665 tpp[ti++] = &pols[pi]->xfrm_vec[i]; in __xfrm_policy_check()
3695 xfrm_pols_put(pols, npols); in __xfrm_policy_check()
3703 xfrm_pols_put(pols, npols); in __xfrm_policy_check()
3849 xdst->policy_genid != atomic_read(&xdst->pols[0]->genid)) in xfrm_bundle_ok()