• Hangbin Liu's avatar
    ipv4/igmp: fix v1/v2 switchback timeout based on rfc3376, 8.12 · 32d7474b
    Hangbin Liu authored
    [ Upstream commit 966c37f2 ]
    
    Similiar with ipv6 mcast commit 89225d1c ("net: ipv6: mld: fix v1/v2
    switchback timeout to rfc3810, 9.12.")
    
    i) RFC3376 8.12. Older Version Querier Present Timeout says:
    
       The Older Version Querier Interval is the time-out for transitioning
       a host back to IGMPv3 mode once an older version query is heard.
       When an older version query is received, hosts set their Older
       Version Querier Present Timer to Older Version Querier Interval.
    
       This value MUST be ((the Robustness Variable) times (the Query
       Interval in the last Query received)) plus (one Query Response
       Interval).
    
    Currently we only use a hardcode value IGMP_V1/v2_ROUTER_PRESENT_TIMEOUT.
    Fix it by adding two new items mr_qi(Query Interval) and mr_qri(Query Response
    Interval) in struct in_device.
    
    Now we can calculate the switchback time via (mr_qrv * mr_qi) + mr_qri.
    We need update these values when receive IGMPv3 queries.
    Reported-by: default avatarYing Xu <yinxu@redhat.com>
    Signed-off-by: default avatarHangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    32d7474b
igmp.c 73.5 KB