|
@@ -782,7 +782,7 @@ int xfrm_lookup(struct dst_entry **dst_p, struct flowi *fl,
|
|
int nx = 0;
|
|
int nx = 0;
|
|
int err;
|
|
int err;
|
|
u32 genid;
|
|
u32 genid;
|
|
- u16 family = dst_orig->ops->family;
|
|
|
|
|
|
+ u16 family;
|
|
u8 dir = policy_to_flow_dir(XFRM_POLICY_OUT);
|
|
u8 dir = policy_to_flow_dir(XFRM_POLICY_OUT);
|
|
u32 sk_sid = security_sk_sid(sk, fl, dir);
|
|
u32 sk_sid = security_sk_sid(sk, fl, dir);
|
|
restart:
|
|
restart:
|
|
@@ -796,13 +796,14 @@ restart:
|
|
if ((dst_orig->flags & DST_NOXFRM) || !xfrm_policy_list[XFRM_POLICY_OUT])
|
|
if ((dst_orig->flags & DST_NOXFRM) || !xfrm_policy_list[XFRM_POLICY_OUT])
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
- policy = flow_cache_lookup(fl, sk_sid, family, dir,
|
|
|
|
- xfrm_policy_lookup);
|
|
|
|
|
|
+ policy = flow_cache_lookup(fl, sk_sid, dst_orig->ops->family,
|
|
|
|
+ dir, xfrm_policy_lookup);
|
|
}
|
|
}
|
|
|
|
|
|
if (!policy)
|
|
if (!policy)
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
|
|
+ family = dst_orig->ops->family;
|
|
policy->curlft.use_time = (unsigned long)xtime.tv_sec;
|
|
policy->curlft.use_time = (unsigned long)xtime.tv_sec;
|
|
|
|
|
|
switch (policy->action) {
|
|
switch (policy->action) {
|