aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/ipv6/xfrm6_policy.c15
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
22static struct dst_ops xfrm6_dst_ops; 25static struct dst_ops xfrm6_dst_ops;
23static struct xfrm_policy_afinfo xfrm6_policy_afinfo; 26static 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: