aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/mip6.c
diff options
context:
space:
mode:
authorMasahide NAKAMURA <nakam@linux-ipv6.org>2006-08-23 23:47:44 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2006-09-22 18:08:32 -0400
commit01be8e5d59d7e6da5c425a31b43709c2a4a69b5d (patch)
tree7f85f5741b18fcead2376a93ba407b3353e36a85 /net/ipv6/mip6.c
parent70182ed23d2559345aadb3cfb6a68a7c1cc0aa39 (diff)
[IPV6] MIP6: Ignore to report if mobility headers is rejected.
Ignore to report user-space for known mobility headers rejected by destination options header transformation. Mobile IPv6 specification (RFC3775) says that mobility header is used with destination options header carrying home address option only for binding update message. Other type message cannot be used and node must drop it silently (and must not send binding error) if receving such packet. To achieve it, (1) application should use transformation policy and wild-card states to catch binding update message prior other packets (2) kernel doesn't report the reject to user-space not to send binding error message by application. This patch is for (2). Based on MIPL2 kernel patch. This patch was also written by: Ville Nuorvala <vnuorval@tcs.hut.fi> 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>
Diffstat (limited to 'net/ipv6/mip6.c')
-rw-r--r--net/ipv6/mip6.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/ipv6/mip6.c b/net/ipv6/mip6.c
index 31445d09261e..70854035c131 100644
--- a/net/ipv6/mip6.c
+++ b/net/ipv6/mip6.c
@@ -234,6 +234,9 @@ static int mip6_destopt_reject(struct xfrm_state *x, struct sk_buff *skb, struct
234 struct timeval stamp; 234 struct timeval stamp;
235 int err = 0; 235 int err = 0;
236 236
237 if (unlikely(fl->proto == IPPROTO_MH && fl->fl_mh_type <= IP6_MH_TYPE_MAX))
238 goto out;
239
237 if (likely(opt->dsthao)) { 240 if (likely(opt->dsthao)) {
238 offset = ipv6_find_tlv(skb, opt->dsthao, IPV6_TLV_HAO); 241 offset = ipv6_find_tlv(skb, opt->dsthao, IPV6_TLV_HAO);
239 if (likely(offset >= 0)) 242 if (likely(offset >= 0))