• Simon Horman's avatar
    sit: correct IP protocol used in ipip6_err · 28dcda8b
    Simon Horman authored
    [ Upstream commit d5d8760b ]
    
    Since 32b8a8e5 ("sit: add IPv4 over IPv4 support")
    ipip6_err() may be called for packets whose IP protocol is
    IPPROTO_IPIP as well as those whose IP protocol is IPPROTO_IPV6.
    
    In the case of IPPROTO_IPIP packets the correct protocol value is not
    passed to ipv4_update_pmtu() or ipv4_redirect().
    
    This patch resolves this problem by using the IP protocol of the packet
    rather than a hard-coded value. This appears to be consistent
    with the usage of the protocol of a packet by icmp_socket_deliver()
    the caller of ipip6_err().
    
    I was able to exercise the redirect case by using a setup where an ICMP
    redirect was received for the destination of the encapsulated packet.
    However, it appears that although incorrect the protocol field is not used
    in this case and thus no problem manifests.  On inspection it does not
    appear that a problem will manifest in the fragmentation needed/update pmtu
    case either.
    
    In short I believe this is a cosmetic fix. None the less, the use of
    IPPROTO_IPV6 seems wrong and confusing.
    Reviewed-by: default avatarDinan Gunawardena <dinan.gunawardena@netronome.com>
    Signed-off-by: default avatarSimon Horman <simon.horman@netronome.com>
    Acked-by: default avatarYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    28dcda8b
sit.c 43.6 KB