diff options
-rw-r--r-- | include/net/xfrm.h | 2 | ||||
-rw-r--r-- | net/xfrm/xfrm_policy.c | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 984e5c45265c..15ec19dcf9c8 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -310,6 +310,8 @@ struct xfrm_tmpl | |||
310 | /* Source address of tunnel. Ignored, if it is not a tunnel. */ | 310 | /* Source address of tunnel. Ignored, if it is not a tunnel. */ |
311 | xfrm_address_t saddr; | 311 | xfrm_address_t saddr; |
312 | 312 | ||
313 | unsigned short encap_family; | ||
314 | |||
313 | __u32 reqid; | 315 | __u32 reqid; |
314 | 316 | ||
315 | /* Mode: transport, tunnel etc. */ | 317 | /* Mode: transport, tunnel etc. */ |
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index e5ea1347a4ff..64d3938f74c4 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c | |||
@@ -1211,6 +1211,7 @@ xfrm_tmpl_resolve_one(struct xfrm_policy *policy, struct flowi *fl, | |||
1211 | if (tmpl->mode == XFRM_MODE_TUNNEL) { | 1211 | if (tmpl->mode == XFRM_MODE_TUNNEL) { |
1212 | remote = &tmpl->id.daddr; | 1212 | remote = &tmpl->id.daddr; |
1213 | local = &tmpl->saddr; | 1213 | local = &tmpl->saddr; |
1214 | family = tmpl->encap_family; | ||
1214 | if (xfrm_addr_any(local, family)) { | 1215 | if (xfrm_addr_any(local, family)) { |
1215 | error = xfrm_get_saddr(&tmp, remote, family); | 1216 | error = xfrm_get_saddr(&tmp, remote, family); |
1216 | if (error) | 1217 | if (error) |