diff options
author | Masahide NAKAMURA <nakam@linux-ipv6.org> | 2006-08-23 23:39:03 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-09-22 18:07:03 -0400 |
commit | 2ce4272a699c731b9736d76126dc742353e381db (patch) | |
tree | ce60343164fa72dde2207d4c4045554662efa141 | |
parent | 6e8f4d48b265225bdf437bbf3151b0d6700dda22 (diff) |
[IPV6] MIP6: Transformation support mobility header.
Transformation support mobility header.
Based on MIPL2 kernel patch.
Signed-off-by: Masahide NAKAMURA <nakam@linux-ipv6.org>
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/xfrm.h | 5 | ||||
-rw-r--r-- | net/ipv6/xfrm6_policy.c | 15 |
2 files changed, 20 insertions, 0 deletions
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 7f1630630dcf..13488e7ba68c 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -546,6 +546,11 @@ u16 xfrm_flowi_sport(struct flowi *fl) | |||
546 | case IPPROTO_ICMPV6: | 546 | case IPPROTO_ICMPV6: |
547 | port = htons(fl->fl_icmp_type); | 547 | port = htons(fl->fl_icmp_type); |
548 | break; | 548 | break; |
549 | #ifdef CONFIG_IPV6_MIP6 | ||
550 | case IPPROTO_MH: | ||
551 | port = htons(fl->fl_mh_type); | ||
552 | break; | ||
553 | #endif | ||
549 | default: | 554 | default: |
550 | port = 0; /*XXX*/ | 555 | port = 0; /*XXX*/ |
551 | } | 556 | } |
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: |