• Eric W. Biederman's avatar
    ipv4: Fix ip_queue_xmit to pass sk into ip_local_out_sk · 850dcc4d
    Eric W. Biederman authored
    After a packet has been encapsulated by a tunnel we should use the
    tunnel sockets local multicast loopback flag to control if the
    encapsulated packet should be locally loopback back.
    
    Pass sk into ip_local_out_sk so that in the rare case we are dealing
    with a tunneled packet whose tunnel destination address is a multicast
    address the kernel properly decides to loopback this packet.
    
    In practice I don't think this matters as ip_queue_xmit is used by
    tcp, l2tp and sctp none of which I am aware of uses ip level
    multicasting as they are all point to point communications protocols.
    Let's fix this before someone uses ip_queue_xmit for a tunnel protocol
    that does use multicast.
    
    Fixes: aad88724 ("ipv4: add a sock pointer to dst->output() path.")
    Fixes: b0270e91 ("ipv4: add a sock pointer to ip_queue_xmit()")
    Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    850dcc4d
ip_output.c 39.6 KB