• Xin Long's avatar
    ipip: only increase err_count for some certain type icmp in ipip_err · f3594f0a
    Xin Long authored
    t->err_count is used to count the link failure on tunnel and an err
    will be reported to user socket in tx path if t->err_count is not 0.
    udp socket could even return EHOSTUNREACH to users.
    
    Since commit fd58156e ("IPIP: Use ip-tunneling code.") removed
    the 'switch check' for icmp type in ipip_err(), err_count would be
    increased by the icmp packet with ICMP_EXC_FRAGTIME code. an link
    failure would be reported out due to this.
    
    In Jianlin's case, when receiving ICMP_EXC_FRAGTIME a icmp packet,
    udp netperf failed with the err:
      send_data: data send error: No route to host (errno 113)
    
    We expect this error reported from tunnel to socket when receiving
    some certain type icmp, but not ICMP_EXC_FRAGTIME, ICMP_SR_FAILED
    or ICMP_PARAMETERPROB ones.
    
    This patch is to bring 'switch check' for icmp type back to ipip_err
    so that it only reports link failure for the right type icmp, just as
    in ipgre_err() and ipip6_err().
    
    Fixes: fd58156e ("IPIP: Use ip-tunneling code.")
    Reported-by: default avatarJianlin Shi <jishi@redhat.com>
    Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f3594f0a
ipip.c 18.8 KB