Skip to content

Commit

Permalink
[IPV6]: Fix reversed local_df test in ip6_fragment
Browse files Browse the repository at this point in the history
I managed to reverse the local_df test when forward-porting this
patch so it actually makes things worse by never fragmenting at
all.

Thanks to David Stevens for testing and reporting this bug.

Bill Fink pointed out that the local_df setting is also the wrong
way around.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Herbert Xu authored and David S. Miller committed Feb 15, 2008
1 parent 073a371 commit b5c15fc
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions net/ipv6/ip6_output.c
Original file line number Diff line number Diff line change
Expand Up @@ -621,7 +621,7 @@ static int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *))
* or if the skb it not generated by a local socket. (This last
* check should be redundant, but it's free.)
*/
if (skb->local_df) {
if (!skb->local_df) {
skb->dev = skb->dst->dev;
icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu, skb->dev);
IP6_INC_STATS(ip6_dst_idev(skb->dst), IPSTATS_MIB_FRAGFAILS);
Expand Down Expand Up @@ -1421,7 +1421,7 @@ int ip6_push_pending_frames(struct sock *sk)
}

/* Allow local fragmentation. */
if (np->pmtudisc >= IPV6_PMTUDISC_DO)
if (np->pmtudisc < IPV6_PMTUDISC_DO)
skb->local_df = 1;

ipv6_addr_copy(final_dst, &fl->fl6_dst);
Expand Down

0 comments on commit b5c15fc

Please sign in to comment.