Skip to content

Commit

Permalink
[IPV6] MIP6: Fix to update IP6CB when cloned skbuff is received at HAO.
Browse files Browse the repository at this point in the history
Signed-off-by: Masahide NAKAMURA <nakam@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Masahide NAKAMURA authored and David S. Miller committed Sep 22, 2006
1 parent a9917c0 commit dc435e6
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions net/ipv6/exthdrs.c
Original file line number Diff line number Diff line change
Expand Up @@ -233,9 +233,14 @@ static int ipv6_dest_hao(struct sk_buff **skbp, int optoff)

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 */
Expand Down Expand Up @@ -296,6 +301,7 @@ static int ipv6_destopt_rcv(struct sk_buff **skbp)
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
Expand Down Expand Up @@ -690,6 +696,7 @@ int ipv6_parse_hopopts(struct sk_buff **skbp)
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;
}
Expand Down

0 comments on commit dc435e6

Please sign in to comment.