Lines Matching refs:fl
63 __xfrm4_selector_match(const struct xfrm_selector *sel, const struct flowi *fl) in __xfrm4_selector_match() argument
65 const struct flowi4 *fl4 = &fl->u.ip4; in __xfrm4_selector_match()
69 !((xfrm_flowi_dport(fl, &fl4->uli) ^ sel->dport) & sel->dport_mask) && in __xfrm4_selector_match()
70 !((xfrm_flowi_sport(fl, &fl4->uli) ^ sel->sport) & sel->sport_mask) && in __xfrm4_selector_match()
76 __xfrm6_selector_match(const struct xfrm_selector *sel, const struct flowi *fl) in __xfrm6_selector_match() argument
78 const struct flowi6 *fl6 = &fl->u.ip6; in __xfrm6_selector_match()
82 !((xfrm_flowi_dport(fl, &fl6->uli) ^ sel->dport) & sel->dport_mask) && in __xfrm6_selector_match()
83 !((xfrm_flowi_sport(fl, &fl6->uli) ^ sel->sport) & sel->sport_mask) && in __xfrm6_selector_match()
88 bool xfrm_selector_match(const struct xfrm_selector *sel, const struct flowi *fl, in xfrm_selector_match() argument
93 return __xfrm4_selector_match(sel, fl); in xfrm_selector_match()
95 return __xfrm6_selector_match(sel, fl); in xfrm_selector_match()
1068 const struct flowi *fl, in xfrm_policy_match() argument
1076 (fl->flowi_mark & pol->mark.m) != pol->mark.v || in xfrm_policy_match()
1080 match = xfrm_selector_match(sel, fl, family); in xfrm_policy_match()
1082 ret = security_xfrm_policy_lookup(pol->security, fl->flowi_secid, in xfrm_policy_match()
1089 const struct flowi *fl, in xfrm_policy_lookup_bytype() argument
1098 daddr = xfrm_flowi_daddr(fl, family); in xfrm_policy_lookup_bytype()
1099 saddr = xfrm_flowi_saddr(fl, family); in xfrm_policy_lookup_bytype()
1107 err = xfrm_policy_match(pol, fl, type, family, dir); in xfrm_policy_lookup_bytype()
1123 err = xfrm_policy_match(pol, fl, type, family, dir); in xfrm_policy_lookup_bytype()
1145 __xfrm_policy_lookup(struct net *net, const struct flowi *fl, u16 family, u8 dir) in __xfrm_policy_lookup() argument
1150 pol = xfrm_policy_lookup_bytype(net, XFRM_POLICY_TYPE_SUB, fl, family, dir); in __xfrm_policy_lookup()
1154 return xfrm_policy_lookup_bytype(net, XFRM_POLICY_TYPE_MAIN, fl, family, dir); in __xfrm_policy_lookup()
1176 xfrm_policy_lookup(struct net *net, const struct flowi *fl, u16 family, in xfrm_policy_lookup() argument
1184 pol = __xfrm_policy_lookup(net, fl, family, flow_to_policy_dir(dir)); in xfrm_policy_lookup()
1213 const struct flowi *fl) in xfrm_sk_policy_lookup() argument
1220 bool match = xfrm_selector_match(&pol->selector, fl, in xfrm_sk_policy_lookup()
1230 fl->flowi_secid, in xfrm_sk_policy_lookup()
1395 xfrm_tmpl_resolve_one(struct xfrm_policy *policy, const struct flowi *fl, in xfrm_tmpl_resolve_one() argument
1401 xfrm_address_t *daddr = xfrm_flowi_daddr(fl, family); in xfrm_tmpl_resolve_one()
1402 xfrm_address_t *saddr = xfrm_flowi_saddr(fl, family); in xfrm_tmpl_resolve_one()
1423 x = xfrm_state_find(remote, local, fl, tmpl, policy, &error, family); in xfrm_tmpl_resolve_one()
1451 xfrm_tmpl_resolve(struct xfrm_policy **pols, int npols, const struct flowi *fl, in xfrm_tmpl_resolve() argument
1467 ret = xfrm_tmpl_resolve_one(pols[i], fl, &tpp[cnx], family); in xfrm_tmpl_resolve()
1492 static inline int xfrm_get_tos(const struct flowi *fl, int family) in xfrm_get_tos() argument
1500 tos = afinfo->get_tos(fl); in xfrm_get_tos()
1613 const struct flowi *fl) in xfrm_fill_dst() argument
1622 err = afinfo->fill_dst(xdst, dev, fl); in xfrm_fill_dst()
1636 const struct flowi *fl, in xfrm_bundle_create() argument
1654 xfrm_flowi_addr_get(fl, &saddr, &daddr, family); in xfrm_bundle_create()
1656 tos = xfrm_get_tos(fl, family); in xfrm_bundle_create()
1737 err = xfrm_fill_dst(xdst, dev, fl); in xfrm_bundle_create()
1787 const struct flowi *fl) in xfrm_dst_update_origin() argument
1791 return xfrm_dst_alloc_copy((void **)&(xdst->origin), fl, sizeof(*fl)); in xfrm_dst_update_origin()
1797 static int xfrm_expand_policies(const struct flowi *fl, u16 family, in xfrm_expand_policies() argument
1818 fl, family, in xfrm_expand_policies()
1843 const struct flowi *fl, u16 family, in xfrm_resolve_and_create_bundle() argument
1853 err = xfrm_tmpl_resolve(pols, num_pols, fl, xfrm, family); in xfrm_resolve_and_create_bundle()
1860 dst = xfrm_bundle_create(pols[0], xfrm, err, fl, dst_orig); in xfrm_resolve_and_create_bundle()
1871 err = xfrm_dst_update_origin(dst, fl); in xfrm_resolve_and_create_bundle()
1892 struct flowi fl; in xfrm_policy_queue_process() local
1903 xfrm_decode_session(skb, &fl, dst->ops->family); in xfrm_policy_queue_process()
1907 dst = xfrm_lookup(xp_net(pol), dst->path, &fl, in xfrm_policy_queue_process()
1936 xfrm_decode_session(skb, &fl, skb_dst(skb)->ops->family); in xfrm_policy_queue_process()
1939 &fl, skb->sk, 0); in xfrm_policy_queue_process()
2006 const struct flowi *fl, in xfrm_create_dummy_bundle() argument
2050 err = xfrm_fill_dst(xdst, dev, fl); in xfrm_create_dummy_bundle()
2064 xfrm_bundle_lookup(struct net *net, const struct flowi *fl, u16 family, u8 dir, in xfrm_bundle_lookup() argument
2096 pols[0] = __xfrm_policy_lookup(net, fl, family, in xfrm_bundle_lookup()
2098 err = xfrm_expand_policies(fl, family, pols, in xfrm_bundle_lookup()
2108 new_xdst = xfrm_resolve_and_create_bundle(pols, num_pols, fl, family, in xfrm_bundle_lookup()
2143 xdst = xfrm_create_dummy_bundle(net, xflo, fl, num_xfrms, family); in xfrm_bundle_lookup()
2188 const struct flowi *fl, in xfrm_lookup() argument
2205 pols[0] = xfrm_sk_policy_lookup(sk, XFRM_POLICY_OUT, fl); in xfrm_lookup()
2206 err = xfrm_expand_policies(fl, family, pols, in xfrm_lookup()
2218 pols, num_pols, fl, in xfrm_lookup()
2247 flo = flow_cache_lookup(net, fl, family, dir, in xfrm_lookup()
2336 const struct flowi *fl, in xfrm_lookup_route() argument
2339 struct dst_entry *dst = xfrm_lookup(net, dst_orig, fl, sk, in xfrm_lookup_route()
2351 xfrm_secpath_reject(int idx, struct sk_buff *skb, const struct flowi *fl) in xfrm_secpath_reject() argument
2360 return x->type->reject(x, skb, fl); in xfrm_secpath_reject()
2415 int __xfrm_decode_session(struct sk_buff *skb, struct flowi *fl, in __xfrm_decode_session() argument
2424 afinfo->decode_session(skb, fl, reverse); in __xfrm_decode_session()
2425 err = security_xfrm_decode_session(skb, &fl->flowi_secid); in __xfrm_decode_session()
2453 struct flowi fl; in __xfrm_policy_check() local
2461 if (__xfrm_decode_session(skb, &fl, family, reverse) < 0) { in __xfrm_policy_check()
2466 nf_nat_decode_session(skb, &fl, family); in __xfrm_policy_check()
2474 if (!xfrm_selector_match(&x->sel, &fl, family)) { in __xfrm_policy_check()
2483 pol = xfrm_sk_policy_lookup(sk, dir, &fl); in __xfrm_policy_check()
2493 flo = flow_cache_lookup(net, &fl, family, fl_dir, in __xfrm_policy_check()
2508 xfrm_secpath_reject(xerr_idx, skb, &fl); in __xfrm_policy_check()
2522 &fl, family, in __xfrm_policy_check()
2594 xfrm_secpath_reject(xerr_idx, skb, &fl); in __xfrm_policy_check()
2604 struct flowi fl; in __xfrm_route_forward() local
2608 if (xfrm_decode_session(skb, &fl, family) < 0) { in __xfrm_route_forward()
2615 dst = xfrm_lookup(net, skb_dst(skb), &fl, NULL, XFRM_LOOKUP_QUEUE); in __xfrm_route_forward()