> From: YOSHIFUJI Hideaki <[EMAIL PROTECTED]>
> Date: Thu, 24 Aug 2006 00:02:24 +0900
> 
> > In receiving Mobile IPv6 home address option which is a TLV carried
> > by destination options header, kernel will try to mangle source adderss
> > of packet. Think of cloned skbuff it is required to replace it by
> > the parser just like routing header case.
> > This is a framework to achieve that to allow TLV parser to replace
> > inbound skbuff pointer.
> > 
> > Signed-off-by: Masahide NAKAMURA <[EMAIL PROTECTED]>
> > Signed-off-by: YOSHIFUJI Hideaki <[EMAIL PROTECTED]>
> 
> Applied to net-2.6.19, thanks a lot.
> 

I've found issue about the patch above.
This is a fix for it, to update IP6CB when cloned skbuff is received at HAO.

Signed-off-by: Masahide NAKAMURA <[EMAIL PROTECTED]>
---
 net/ipv6/exthdrs.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/net/ipv6/exthdrs.c b/net/ipv6/exthdrs.c
index f4c7629..ec93a1d 100644
--- a/net/ipv6/exthdrs.c
+++ b/net/ipv6/exthdrs.c
@@ -233,9 +233,14 @@ static int ipv6_dest_hao(struct sk_buff 
 
        if (skb_cloned(skb)) {
                struct sk_buff *skb2 = skb_copy(skb, GFP_ATOMIC);
+               struct inet6_skb_parm *opt2;
+
                if (skb2 == NULL)
                        goto discard;
 
+               opt2 = IP6CB(skb2);
+               memcpy(opt2, opt, sizeof(*opt2));
+
                kfree_skb(skb);
 
                /* update all variable using below by copied skbuff */
@@ -296,6 +301,7 @@ #endif
        if (ip6_parse_tlv(tlvprocdestopt_lst, skbp)) {
                skb = *skbp;
                skb->h.raw += ((skb->h.raw[1]+1)<<3);
+               opt = IP6CB(skb);
 #ifdef CONFIG_IPV6_MIP6
                opt->nhoff = dstbuf;
 #else
@@ -690,6 +696,7 @@ int ipv6_parse_hopopts(struct sk_buff **
        if (ip6_parse_tlv(tlvprochopopt_lst, skbp)) {
                skb = *skbp;
                skb->h.raw += (skb->h.raw[1]+1)<<3;
+               opt = IP6CB(skb);
                opt->nhoff = sizeof(struct ipv6hdr);
                return 1;
        }
-- 
1.4.2

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to