diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2007-04-10 23:46:21 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 01:24:47 -0400 |
commit | e2d1bca7e6134671bcb19810d004a252aa6a644d (patch) | |
tree | 5d8ee962cd69cd886aaedff8ac253590a985dd1c /net/ipv6/ip6_output.c | |
parent | c1d2bbe1cd6c7bbdc6d532cefebb66c7efb789ce (diff) |
[SK_BUFF]: Use skb_reset_network_header in skb_push cases
skb_push updates and returns skb->data, so we can just call
skb_reset_network_header after the call to skb_push.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r-- | net/ipv6/ip6_output.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 4406546d3ce8..8a7b5c760147 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -191,7 +191,9 @@ int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl, | |||
191 | ipv6_push_nfrag_opts(skb, opt, &proto, &first_hop); | 191 | ipv6_push_nfrag_opts(skb, opt, &proto, &first_hop); |
192 | } | 192 | } |
193 | 193 | ||
194 | hdr = skb->nh.ipv6h = (struct ipv6hdr*)skb_push(skb, sizeof(struct ipv6hdr)); | 194 | skb_push(skb, sizeof(struct ipv6hdr)); |
195 | skb_reset_network_header(skb); | ||
196 | hdr = skb->nh.ipv6h; | ||
195 | 197 | ||
196 | /* | 198 | /* |
197 | * Fill in the IPv6 header | 199 | * Fill in the IPv6 header |
@@ -626,7 +628,8 @@ static int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *)) | |||
626 | 628 | ||
627 | __skb_pull(skb, hlen); | 629 | __skb_pull(skb, hlen); |
628 | fh = (struct frag_hdr*)__skb_push(skb, sizeof(struct frag_hdr)); | 630 | fh = (struct frag_hdr*)__skb_push(skb, sizeof(struct frag_hdr)); |
629 | skb->nh.raw = __skb_push(skb, hlen); | 631 | __skb_push(skb, hlen); |
632 | skb_reset_network_header(skb); | ||
630 | memcpy(skb->nh.raw, tmp_hdr, hlen); | 633 | memcpy(skb->nh.raw, tmp_hdr, hlen); |
631 | 634 | ||
632 | ipv6_select_ident(skb, fh); | 635 | ipv6_select_ident(skb, fh); |
@@ -649,7 +652,8 @@ static int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *)) | |||
649 | frag->ip_summed = CHECKSUM_NONE; | 652 | frag->ip_summed = CHECKSUM_NONE; |
650 | frag->h.raw = frag->data; | 653 | frag->h.raw = frag->data; |
651 | fh = (struct frag_hdr*)__skb_push(frag, sizeof(struct frag_hdr)); | 654 | fh = (struct frag_hdr*)__skb_push(frag, sizeof(struct frag_hdr)); |
652 | frag->nh.raw = __skb_push(frag, hlen); | 655 | __skb_push(frag, hlen); |
656 | skb_reset_network_header(frag); | ||
653 | memcpy(frag->nh.raw, tmp_hdr, hlen); | 657 | memcpy(frag->nh.raw, tmp_hdr, hlen); |
654 | offset += skb->len - hlen - sizeof(struct frag_hdr); | 658 | offset += skb->len - hlen - sizeof(struct frag_hdr); |
655 | fh->nexthdr = nexthdr; | 659 | fh->nexthdr = nexthdr; |
@@ -1346,7 +1350,9 @@ int ip6_push_pending_frames(struct sock *sk) | |||
1346 | if (opt && opt->opt_nflen) | 1350 | if (opt && opt->opt_nflen) |
1347 | ipv6_push_nfrag_opts(skb, opt, &proto, &final_dst); | 1351 | ipv6_push_nfrag_opts(skb, opt, &proto, &final_dst); |
1348 | 1352 | ||
1349 | skb->nh.ipv6h = hdr = (struct ipv6hdr*) skb_push(skb, sizeof(struct ipv6hdr)); | 1353 | skb_push(skb, sizeof(struct ipv6hdr)); |
1354 | skb_reset_network_header(skb); | ||
1355 | hdr = skb->nh.ipv6h; | ||
1350 | 1356 | ||
1351 | *(__be32*)hdr = fl->fl6_flowlabel | | 1357 | *(__be32*)hdr = fl->fl6_flowlabel | |
1352 | htonl(0x60000000 | ((int)np->cork.tclass << 20)); | 1358 | htonl(0x60000000 | ((int)np->cork.tclass << 20)); |