aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMasahide NAKAMURA <nakam@linux-ipv6.org>2006-08-23 23:39:03 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2006-09-22 18:07:03 -0400
commit2ce4272a699c731b9736d76126dc742353e381db (patch)
treece60343164fa72dde2207d4c4045554662efa141
parent6e8f4d48b265225bdf437bbf3151b0d6700dda22 (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.h5
-rw-r--r--net/ipv6/xfrm6_policy.c15
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
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: