• Hiroaki SHIMODA's avatar
    ipv4: Fix PMTU update. · 46af3180
    Hiroaki SHIMODA authored
    On current net-next-2.6, when Linux receives ICMP Type: 3, Code: 4
    (Destination unreachable (Fragmentation needed)),
    
      icmp_unreach
        -> ip_rt_frag_needed
             (peer->pmtu_expires is set here)
        -> tcp_v4_err
             -> do_pmtu_discovery
                  -> ip_rt_update_pmtu
                       (peer->pmtu_expires is already set,
                        so check_peer_pmtu is skipped.)
                       -> check_peer_pmtu
    
    check_peer_pmtu is skipped and MTU is not updated.
    
    To fix this, let check_peer_pmtu execute unconditionally.
    And some minor fixes
    1) Avoid potential peer->pmtu_expires set to be zero.
    2) In check_peer_pmtu, argument of time_before is reversed.
    3) check_peer_pmtu expects peer->pmtu_orig is initialized as zero,
       but not initialized.
    Signed-off-by: default avatarHiroaki SHIMODA <shimoda.hiroaki@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    46af3180
inetpeer.c 19.1 KB