diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv6/xfrm6_policy.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c index 729b4748d6d3..98c2fe449b3f 100644 --- a/net/ipv6/xfrm6_policy.c +++ b/net/ipv6/xfrm6_policy.c | |||
@@ -18,6 +18,9 @@ | |||
18 | #include <net/ip.h> | 18 | #include <net/ip.h> |
19 | #include <net/ipv6.h> | 19 | #include <net/ipv6.h> |
20 | #include <net/ip6_route.h> | 20 | #include <net/ip6_route.h> |
21 | #ifdef CONFIG_IPV6_MIP6 | ||
22 | #include <net/mip6.h> | ||
23 | #endif | ||
21 | 24 | ||
22 | static struct dst_ops xfrm6_dst_ops; | 25 | static struct dst_ops xfrm6_dst_ops; |
23 | static struct xfrm_policy_afinfo xfrm6_policy_afinfo; | 26 | static struct xfrm_policy_afinfo xfrm6_policy_afinfo; |
@@ -270,6 +273,18 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl) | |||
270 | fl->proto = nexthdr; | 273 | fl->proto = nexthdr; |
271 | return; | 274 | return; |
272 | 275 | ||
276 | #ifdef CONFIG_IPV6_MIP6 | ||
277 | case IPPROTO_MH: | ||
278 | if (pskb_may_pull(skb, skb->nh.raw + offset + 3 - skb->data)) { | ||
279 | struct ip6_mh *mh; | ||
280 | mh = (struct ip6_mh *)exthdr; | ||
281 | |||
282 | fl->fl_mh_type = mh->ip6mh_type; | ||
283 | } | ||
284 | fl->proto = nexthdr; | ||
285 | return; | ||
286 | #endif | ||
287 | |||
273 | /* XXX Why are there these headers? */ | 288 | /* XXX Why are there these headers? */ |
274 | case IPPROTO_AH: | 289 | case IPPROTO_AH: |
275 | case IPPROTO_ESP: | 290 | case IPPROTO_ESP: |