Lines Matching refs:fl
64 __xfrm4_selector_match(const struct xfrm_selector *sel, const struct flowi *fl) in __xfrm4_selector_match() argument
66 const struct flowi4 *fl4 = &fl->u.ip4; in __xfrm4_selector_match()
70 !((xfrm_flowi_dport(fl, &fl4->uli) ^ sel->dport) & sel->dport_mask) && in __xfrm4_selector_match()
71 !((xfrm_flowi_sport(fl, &fl4->uli) ^ sel->sport) & sel->sport_mask) && in __xfrm4_selector_match()
77 __xfrm6_selector_match(const struct xfrm_selector *sel, const struct flowi *fl) in __xfrm6_selector_match() argument
79 const struct flowi6 *fl6 = &fl->u.ip6; in __xfrm6_selector_match()
83 !((xfrm_flowi_dport(fl, &fl6->uli) ^ sel->dport) & sel->dport_mask) && in __xfrm6_selector_match()
84 !((xfrm_flowi_sport(fl, &fl6->uli) ^ sel->sport) & sel->sport_mask) && in __xfrm6_selector_match()
89 bool xfrm_selector_match(const struct xfrm_selector *sel, const struct flowi *fl, in xfrm_selector_match() argument
94 return __xfrm4_selector_match(sel, fl); in xfrm_selector_match()
96 return __xfrm6_selector_match(sel, fl); in xfrm_selector_match()
951 const struct flowi *fl, in xfrm_policy_match() argument
959 (fl->flowi_mark & pol->mark.m) != pol->mark.v || in xfrm_policy_match()
963 match = xfrm_selector_match(sel, fl, family); in xfrm_policy_match()
965 ret = security_xfrm_policy_lookup(pol->security, fl->flowi_secid, in xfrm_policy_match()
972 const struct flowi *fl, in xfrm_policy_lookup_bytype() argument
981 daddr = xfrm_flowi_daddr(fl, family); in xfrm_policy_lookup_bytype()
982 saddr = xfrm_flowi_saddr(fl, family); in xfrm_policy_lookup_bytype()
990 err = xfrm_policy_match(pol, fl, type, family, dir); in xfrm_policy_lookup_bytype()
1006 err = xfrm_policy_match(pol, fl, type, family, dir); in xfrm_policy_lookup_bytype()
1028 __xfrm_policy_lookup(struct net *net, const struct flowi *fl, u16 family, u8 dir) in __xfrm_policy_lookup() argument
1033 pol = xfrm_policy_lookup_bytype(net, XFRM_POLICY_TYPE_SUB, fl, family, dir); in __xfrm_policy_lookup()
1037 return xfrm_policy_lookup_bytype(net, XFRM_POLICY_TYPE_MAIN, fl, family, dir); in __xfrm_policy_lookup()
1059 xfrm_policy_lookup(struct net *net, const struct flowi *fl, u16 family, in xfrm_policy_lookup() argument
1067 pol = __xfrm_policy_lookup(net, fl, family, flow_to_policy_dir(dir)); in xfrm_policy_lookup()
1096 const struct flowi *fl) in xfrm_sk_policy_lookup() argument
1102 bool match = xfrm_selector_match(&pol->selector, fl, in xfrm_sk_policy_lookup()
1112 fl->flowi_secid, in xfrm_sk_policy_lookup()
1267 xfrm_tmpl_resolve_one(struct xfrm_policy *policy, const struct flowi *fl, in xfrm_tmpl_resolve_one() argument
1273 xfrm_address_t *daddr = xfrm_flowi_daddr(fl, family); in xfrm_tmpl_resolve_one()
1274 xfrm_address_t *saddr = xfrm_flowi_saddr(fl, family); in xfrm_tmpl_resolve_one()
1295 x = xfrm_state_find(remote, local, fl, tmpl, policy, &error, family); in xfrm_tmpl_resolve_one()
1323 xfrm_tmpl_resolve(struct xfrm_policy **pols, int npols, const struct flowi *fl, in xfrm_tmpl_resolve() argument
1339 ret = xfrm_tmpl_resolve_one(pols[i], fl, &tpp[cnx], family); in xfrm_tmpl_resolve()
1364 static inline int xfrm_get_tos(const struct flowi *fl, int family) in xfrm_get_tos() argument
1372 tos = afinfo->get_tos(fl); in xfrm_get_tos()
1485 const struct flowi *fl) in xfrm_fill_dst() argument
1494 err = afinfo->fill_dst(xdst, dev, fl); in xfrm_fill_dst()
1508 const struct flowi *fl, in xfrm_bundle_create() argument
1526 xfrm_flowi_addr_get(fl, &saddr, &daddr, family); in xfrm_bundle_create()
1528 tos = xfrm_get_tos(fl, family); in xfrm_bundle_create()
1610 err = xfrm_fill_dst(xdst, dev, fl); in xfrm_bundle_create()
1658 xfrm_dst_update_origin(struct dst_entry *dst, const struct flowi *fl) in xfrm_dst_update_origin() argument
1662 return xfrm_dst_alloc_copy((void **)&(xdst->origin), fl, sizeof(*fl)); in xfrm_dst_update_origin()
1668 static int xfrm_expand_policies(const struct flowi *fl, u16 family, in xfrm_expand_policies() argument
1689 fl, family, in xfrm_expand_policies()
1714 const struct flowi *fl, u16 family, in xfrm_resolve_and_create_bundle() argument
1724 err = xfrm_tmpl_resolve(pols, num_pols, fl, xfrm, family); in xfrm_resolve_and_create_bundle()
1731 dst = xfrm_bundle_create(pols[0], xfrm, err, fl, dst_orig); in xfrm_resolve_and_create_bundle()
1742 err = xfrm_dst_update_origin(dst, fl); in xfrm_resolve_and_create_bundle()
1765 struct flowi fl; in xfrm_policy_queue_process() local
1772 xfrm_decode_session(skb, &fl, dst->ops->family); in xfrm_policy_queue_process()
1776 dst = xfrm_lookup(xp_net(pol), dst->path, &fl, in xfrm_policy_queue_process()
1804 xfrm_decode_session(skb, &fl, skb_dst(skb)->ops->family); in xfrm_policy_queue_process()
1807 &fl, skb->sk, 0); in xfrm_policy_queue_process()
1867 const struct flowi *fl, in xfrm_create_dummy_bundle() argument
1881 (fl->flowi_flags & FLOWI_FLAG_CAN_SLEEP)) in xfrm_create_dummy_bundle()
1908 err = xfrm_fill_dst(xdst, dev, fl); in xfrm_create_dummy_bundle()
1922 xfrm_bundle_lookup(struct net *net, const struct flowi *fl, u16 family, u8 dir, in xfrm_bundle_lookup() argument
1954 pols[0] = __xfrm_policy_lookup(net, fl, family, in xfrm_bundle_lookup()
1956 err = xfrm_expand_policies(fl, family, pols, in xfrm_bundle_lookup()
1966 new_xdst = xfrm_resolve_and_create_bundle(pols, num_pols, fl, family, dst_orig); in xfrm_bundle_lookup()
2000 xdst = xfrm_create_dummy_bundle(net, dst_orig, fl, num_xfrms, family); in xfrm_bundle_lookup()
2045 const struct flowi *fl, in xfrm_lookup() argument
2063 pols[0] = xfrm_sk_policy_lookup(sk, XFRM_POLICY_OUT, fl); in xfrm_lookup()
2064 err = xfrm_expand_policies(fl, family, pols, in xfrm_lookup()
2076 pols, num_pols, fl, in xfrm_lookup()
2105 flo = flow_cache_lookup(net, fl, family, dir, in xfrm_lookup()
2138 if (fl->flowi_flags & FLOWI_FLAG_CAN_SLEEP) { in xfrm_lookup()
2209 xfrm_secpath_reject(int idx, struct sk_buff *skb, const struct flowi *fl) in xfrm_secpath_reject() argument
2218 return x->type->reject(x, skb, fl); in xfrm_secpath_reject()
2273 int __xfrm_decode_session(struct sk_buff *skb, struct flowi *fl, in __xfrm_decode_session() argument
2282 afinfo->decode_session(skb, fl, reverse); in __xfrm_decode_session()
2283 err = security_xfrm_decode_session(skb, &fl->flowi_secid); in __xfrm_decode_session()
2311 struct flowi fl; in __xfrm_policy_check() local
2319 if (__xfrm_decode_session(skb, &fl, family, reverse) < 0) { in __xfrm_policy_check()
2324 nf_nat_decode_session(skb, &fl, family); in __xfrm_policy_check()
2332 if (!xfrm_selector_match(&x->sel, &fl, family)) { in __xfrm_policy_check()
2341 pol = xfrm_sk_policy_lookup(sk, dir, &fl); in __xfrm_policy_check()
2351 flo = flow_cache_lookup(net, &fl, family, fl_dir, in __xfrm_policy_check()
2366 xfrm_secpath_reject(xerr_idx, skb, &fl); in __xfrm_policy_check()
2380 &fl, family, in __xfrm_policy_check()
2452 xfrm_secpath_reject(xerr_idx, skb, &fl); in __xfrm_policy_check()
2462 struct flowi fl; in __xfrm_route_forward() local
2466 if (xfrm_decode_session(skb, &fl, family) < 0) { in __xfrm_route_forward()
2473 dst = xfrm_lookup(net, skb_dst(skb), &fl, NULL, 0); in __xfrm_route_forward()