diff options
-rw-r--r-- | net/ipv6/ip6_output.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 4e9a2fe2f12c..8b67ca07467d 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -621,7 +621,7 @@ static int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *)) | |||
621 | * or if the skb it not generated by a local socket. (This last | 621 | * or if the skb it not generated by a local socket. (This last |
622 | * check should be redundant, but it's free.) | 622 | * check should be redundant, but it's free.) |
623 | */ | 623 | */ |
624 | if (skb->local_df) { | 624 | if (!skb->local_df) { |
625 | skb->dev = skb->dst->dev; | 625 | skb->dev = skb->dst->dev; |
626 | icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu, skb->dev); | 626 | icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu, skb->dev); |
627 | IP6_INC_STATS(ip6_dst_idev(skb->dst), IPSTATS_MIB_FRAGFAILS); | 627 | IP6_INC_STATS(ip6_dst_idev(skb->dst), IPSTATS_MIB_FRAGFAILS); |
@@ -1421,7 +1421,7 @@ int ip6_push_pending_frames(struct sock *sk) | |||
1421 | } | 1421 | } |
1422 | 1422 | ||
1423 | /* Allow local fragmentation. */ | 1423 | /* Allow local fragmentation. */ |
1424 | if (np->pmtudisc >= IPV6_PMTUDISC_DO) | 1424 | if (np->pmtudisc < IPV6_PMTUDISC_DO) |
1425 | skb->local_df = 1; | 1425 | skb->local_df = 1; |
1426 | 1426 | ||
1427 | ipv6_addr_copy(final_dst, &fl->fl6_dst); | 1427 | ipv6_addr_copy(final_dst, &fl->fl6_dst); |