Lines Matching refs:fl
217 __xfrm4_selector_match(const struct xfrm_selector *sel, const struct flowi *fl) in __xfrm4_selector_match() argument
219 const struct flowi4 *fl4 = &fl->u.ip4; in __xfrm4_selector_match()
223 !((xfrm_flowi_dport(fl, &fl4->uli) ^ sel->dport) & sel->dport_mask) && in __xfrm4_selector_match()
224 !((xfrm_flowi_sport(fl, &fl4->uli) ^ sel->sport) & sel->sport_mask) && in __xfrm4_selector_match()
230 __xfrm6_selector_match(const struct xfrm_selector *sel, const struct flowi *fl) in __xfrm6_selector_match() argument
232 const struct flowi6 *fl6 = &fl->u.ip6; in __xfrm6_selector_match()
236 !((xfrm_flowi_dport(fl, &fl6->uli) ^ sel->dport) & sel->dport_mask) && in __xfrm6_selector_match()
237 !((xfrm_flowi_sport(fl, &fl6->uli) ^ sel->sport) & sel->sport_mask) && in __xfrm6_selector_match()
242 bool xfrm_selector_match(const struct xfrm_selector *sel, const struct flowi *fl, in xfrm_selector_match() argument
247 return __xfrm4_selector_match(sel, fl); in xfrm_selector_match()
249 return __xfrm6_selector_match(sel, fl); in xfrm_selector_match()
1971 const struct flowi *fl, in xfrm_policy_match() argument
1980 (fl->flowi_mark & pol->mark.m) != pol->mark.v || in xfrm_policy_match()
1984 match = xfrm_selector_match(sel, fl, family); in xfrm_policy_match()
1986 ret = security_xfrm_policy_lookup(pol->security, fl->flowi_secid); in xfrm_policy_match()
2096 const struct flowi *fl, in __xfrm_policy_eval_candidates() argument
2111 err = xfrm_policy_match(pol, fl, type, family, if_id); in __xfrm_policy_eval_candidates()
2135 const struct flowi *fl, in xfrm_policy_eval_candidates() argument
2144 fl, type, family, if_id); in xfrm_policy_eval_candidates()
2157 const struct flowi *fl, in xfrm_policy_lookup_bytype() argument
2169 daddr = xfrm_flowi_daddr(fl, family); in xfrm_policy_lookup_bytype()
2170 saddr = xfrm_flowi_saddr(fl, family); in xfrm_policy_lookup_bytype()
2183 err = xfrm_policy_match(pol, fl, type, family, if_id); in xfrm_policy_lookup_bytype()
2204 pol = xfrm_policy_eval_candidates(&cand, ret, fl, type, in xfrm_policy_lookup_bytype()
2225 const struct flowi *fl, in xfrm_policy_lookup() argument
2231 pol = xfrm_policy_lookup_bytype(net, XFRM_POLICY_TYPE_SUB, fl, family, in xfrm_policy_lookup()
2236 return xfrm_policy_lookup_bytype(net, XFRM_POLICY_TYPE_MAIN, fl, family, in xfrm_policy_lookup()
2241 const struct flowi *fl, in xfrm_sk_policy_lookup() argument
2258 match = xfrm_selector_match(&pol->selector, fl, family); in xfrm_sk_policy_lookup()
2266 fl->flowi_secid); in xfrm_sk_policy_lookup()
2486 xfrm_tmpl_resolve_one(struct xfrm_policy *policy, const struct flowi *fl, in xfrm_tmpl_resolve_one() argument
2492 xfrm_address_t *daddr = xfrm_flowi_daddr(fl, family); in xfrm_tmpl_resolve_one()
2493 xfrm_address_t *saddr = xfrm_flowi_saddr(fl, family); in xfrm_tmpl_resolve_one()
2512 params.oif = fl->flowi_oif; in xfrm_tmpl_resolve_one()
2522 x = xfrm_state_find(remote, local, fl, tmpl, policy, &error, in xfrm_tmpl_resolve_one()
2557 xfrm_tmpl_resolve(struct xfrm_policy **pols, int npols, const struct flowi *fl, in xfrm_tmpl_resolve() argument
2573 ret = xfrm_tmpl_resolve_one(pols[i], fl, &tpp[cnx], family); in xfrm_tmpl_resolve()
2594 static dscp_t xfrm_get_dscp(const struct flowi *fl, int family) in xfrm_get_dscp() argument
2597 return inet_dsfield_to_dscp(fl->u.ip4.flowi4_tos); in xfrm_get_dscp()
2645 const struct flowi *fl) in xfrm_fill_dst() argument
2654 err = afinfo->fill_dst(xdst, dev, fl); in xfrm_fill_dst()
2670 const struct flowi *fl, in xfrm_bundle_create() argument
2689 xfrm_flowi_addr_get(fl, &saddr, &daddr, family); in xfrm_bundle_create()
2691 dscp = xfrm_get_dscp(fl, family); in xfrm_bundle_create()
2733 mark = xfrm_smark_get(fl->flowi_mark, xfrm[i]); in xfrm_bundle_create()
2738 oif = fl->flowi_oif ? : fl->flowi_l3mdev; in xfrm_bundle_create()
2788 err = xfrm_fill_dst(xdst_prev, dev, fl); in xfrm_bundle_create()
2810 static int xfrm_expand_policies(const struct flowi *fl, u16 family, in xfrm_expand_policies() argument
2833 fl, family, in xfrm_expand_policies()
2860 const struct flowi *fl, u16 family, in xfrm_resolve_and_create_bundle() argument
2871 err = xfrm_tmpl_resolve(pols, num_pols, fl, xfrm, family); in xfrm_resolve_and_create_bundle()
2881 dst = xfrm_bundle_create(pols[0], xfrm, bundle, err, fl, dst_orig); in xfrm_resolve_and_create_bundle()
2904 struct flowi fl; in xfrm_policy_queue_process() local
2920 xfrm_decode_session(net, skb, &fl, dst->ops->family); in xfrm_policy_queue_process()
2925 dst = xfrm_lookup(net, xfrm_dst_path(dst), &fl, sk, XFRM_LOOKUP_QUEUE); in xfrm_policy_queue_process()
2956 xfrm_decode_session(net, skb, &fl, skb_dst(skb)->ops->family); in xfrm_policy_queue_process()
2960 dst = xfrm_lookup(net, xfrm_dst_path(skb_dst(skb)), &fl, skb->sk, 0); in xfrm_policy_queue_process()
3027 const struct flowi *fl, in xfrm_create_dummy_bundle() argument
3071 err = xfrm_fill_dst(xdst, dev, fl); in xfrm_create_dummy_bundle()
3085 const struct flowi *fl, in xfrm_bundle_lookup() argument
3096 pols[0] = xfrm_policy_lookup(net, fl, family, dir, if_id); in xfrm_bundle_lookup()
3097 err = xfrm_expand_policies(fl, family, pols, in xfrm_bundle_lookup()
3106 xdst = xfrm_resolve_and_create_bundle(pols, num_pols, fl, family, in xfrm_bundle_lookup()
3129 xdst = xfrm_create_dummy_bundle(net, xflo, fl, num_xfrms, family); in xfrm_bundle_lookup()
3174 const struct flowi *fl, in xfrm_lookup_with_ifid() argument
3192 pols[0] = xfrm_sk_policy_lookup(sk, XFRM_POLICY_OUT, fl, family, in xfrm_lookup_with_ifid()
3194 err = xfrm_expand_policies(fl, family, pols, in xfrm_lookup_with_ifid()
3206 pols, num_pols, fl, in xfrm_lookup_with_ifid()
3237 xdst = xfrm_bundle_lookup(net, fl, family, dir, &xflo, if_id); in xfrm_lookup_with_ifid()
3333 const struct flowi *fl, const struct sock *sk, in xfrm_lookup() argument
3336 return xfrm_lookup_with_ifid(net, dst_orig, fl, sk, flags, 0); in xfrm_lookup()
3344 const struct flowi *fl, in xfrm_lookup_route() argument
3347 struct dst_entry *dst = xfrm_lookup(net, dst_orig, fl, sk, in xfrm_lookup_route()
3362 xfrm_secpath_reject(int idx, struct sk_buff *skb, const struct flowi *fl) in xfrm_secpath_reject() argument
3372 return x->type->reject(x, skb, fl); in xfrm_secpath_reject()
3436 decode_session4(const struct xfrm_flow_keys *flkeys, struct flowi *fl, bool reverse) in decode_session4() argument
3438 struct flowi4 *fl4 = &fl->u.ip4; in decode_session4()
3470 decode_session6(const struct xfrm_flow_keys *flkeys, struct flowi *fl, bool reverse) in decode_session6() argument
3472 struct flowi6 *fl6 = &fl->u.ip6; in decode_session6()
3502 int __xfrm_decode_session(struct net *net, struct sk_buff *skb, struct flowi *fl, in __xfrm_decode_session() argument
3513 decode_session4(&flkeys, fl, reverse); in __xfrm_decode_session()
3517 decode_session6(&flkeys, fl, reverse); in __xfrm_decode_session()
3524 fl->flowi_mark = skb->mark; in __xfrm_decode_session()
3526 fl->flowi_oif = skb->skb_iif; in __xfrm_decode_session()
3533 fl->flowi_oif = oif; in __xfrm_decode_session()
3536 return security_xfrm_decode_session(skb, &fl->flowi_secid); in __xfrm_decode_session()
3552 static bool icmp_err_packet(const struct flowi *fl, unsigned short family) in icmp_err_packet() argument
3554 const struct flowi4 *fl4 = &fl->u.ip4; in icmp_err_packet()
3564 const struct flowi6 *fl6 = &fl->u.ip6; in icmp_err_packet()
3577 const struct flowi *fl, struct flowi *fl1) in xfrm_icmp_flow_decode() argument
3595 fl1->flowi_oif = fl->flowi_oif; in xfrm_icmp_flow_decode()
3596 fl1->flowi_mark = fl->flowi_mark; in xfrm_icmp_flow_decode()
3597 fl1->flowi_tos = fl->flowi_tos; in xfrm_icmp_flow_decode()
3608 const struct flowi *fl) in xfrm_selector_inner_icmp_match() argument
3612 if (icmp_err_packet(fl, family)) { in xfrm_selector_inner_icmp_match()
3615 if (xfrm_icmp_flow_decode(skb, family, fl, &fl1)) in xfrm_selector_inner_icmp_match()
3626 const struct flowi *fl, unsigned short family, in xfrm_in_fwd_icmp() argument
3631 if (icmp_err_packet(fl, family)) { in xfrm_in_fwd_icmp()
3635 if (xfrm_icmp_flow_decode(skb, family, fl, &fl1)) in xfrm_in_fwd_icmp()
3647 dst_entry *xfrm_out_fwd_icmp(struct sk_buff *skb, struct flowi *fl, in xfrm_out_fwd_icmp() argument
3650 if (icmp_err_packet(fl, family)) { in xfrm_out_fwd_icmp()
3655 if (xfrm_icmp_flow_decode(skb, family, fl, &fl1)) in xfrm_out_fwd_icmp()
3686 struct flowi fl; in __xfrm_policy_check() local
3708 if (__xfrm_decode_session(net, skb, &fl, family, reverse) < 0) { in __xfrm_policy_check()
3713 nf_nat_decode_session(skb, &fl, family); in __xfrm_policy_check()
3724 if (!xfrm_selector_match(&x->sel, &fl, family)) { in __xfrm_policy_check()
3727 xfrm_selector_inner_icmp_match(skb, family, &x->sel, &fl)) in __xfrm_policy_check()
3740 pol = xfrm_sk_policy_lookup(sk, dir, &fl, family, if_id); in __xfrm_policy_check()
3748 pol = xfrm_policy_lookup(net, &fl, family, dir, if_id); in __xfrm_policy_check()
3756 pol = xfrm_in_fwd_icmp(skb, &fl, family, if_id); in __xfrm_policy_check()
3768 xfrm_secpath_reject(xerr_idx, skb, &fl); in __xfrm_policy_check()
3783 &fl, family, in __xfrm_policy_check()
3864 xfrm_secpath_reject(xerr_idx, skb, &fl); in __xfrm_policy_check()
3874 struct flowi fl; in __xfrm_route_forward() local
3878 if (xfrm_decode_session(net, skb, &fl, family) < 0) { in __xfrm_route_forward()
3889 dst = xfrm_lookup(net, skb_dst(skb), &fl, NULL, XFRM_LOOKUP_QUEUE); in __xfrm_route_forward()
3896 dst = xfrm_out_fwd_icmp(skb, &fl, family, dst); in __xfrm_route_forward()
4480 struct flowi fl; in xfrm_migrate_policy_find() local
4482 memset(&fl, 0, sizeof(fl)); in xfrm_migrate_policy_find()
4484 fl.flowi_proto = sel->proto; in xfrm_migrate_policy_find()
4488 fl.u.ip4.saddr = sel->saddr.a4; in xfrm_migrate_policy_find()
4489 fl.u.ip4.daddr = sel->daddr.a4; in xfrm_migrate_policy_find()
4492 fl.u.flowi4_oif = sel->ifindex; in xfrm_migrate_policy_find()
4493 fl.u.ip4.fl4_sport = sel->sport; in xfrm_migrate_policy_find()
4494 fl.u.ip4.fl4_dport = sel->dport; in xfrm_migrate_policy_find()
4497 fl.u.ip6.saddr = sel->saddr.in6; in xfrm_migrate_policy_find()
4498 fl.u.ip6.daddr = sel->daddr.in6; in xfrm_migrate_policy_find()
4501 fl.u.flowi6_oif = sel->ifindex; in xfrm_migrate_policy_find()
4502 fl.u.ip6.fl4_sport = sel->sport; in xfrm_migrate_policy_find()
4503 fl.u.ip6.fl4_dport = sel->dport; in xfrm_migrate_policy_find()
4511 pol = xfrm_policy_lookup_bytype(net, type, &fl, sel->family, dir, if_id); in xfrm_migrate_policy_find()