• T
    ipv6: Send ICMPv6 RSes only when RAs are accepted · 026359bc
    Tore Anderson 提交于
    This patch improves the logic determining when to send ICMPv6 Router
    Solicitations, so that they are 1) always sent when the kernel is
    accepting Router Advertisements, and 2) never sent when the kernel is
    not accepting RAs. In other words, the operational setting of the
    "accept_ra" sysctl is used.
    
    The change also makes the special "Hybrid Router" forwarding mode
    ("forwarding" sysctl set to 2) operate exactly the same as the standard
    Router mode (forwarding=1). The only difference between the two was
    that RSes was being sent in the Hybrid Router mode only. The sysctl
    documentation describing the special Hybrid Router mode has therefore
    been removed.
    
    Rationale for the change:
    
    Currently, the value of forwarding sysctl is the only thing determining
    whether or not to send RSes. If it has the value 0 or 2, they are sent,
    otherwise they are not. This leads to inconsistent behaviour in the
    following cases:
    
    * accept_ra=0, forwarding=0
    * accept_ra=0, forwarding=2
    * accept_ra=1, forwarding=2
    * accept_ra=2, forwarding=1
    
    In the first three cases, the kernel will send RSes, even though it will
    not accept any RAs received in reply. In the last case, it will not send
    any RSes, even though it will accept and process any RAs received. (Most
    routers will send unsolicited RAs periodically, so suppressing RSes in
    the last case will merely delay auto-configuration, not prevent it.)
    
    Also, it is my opinion that having the forwarding sysctl control RS
    sending behaviour (completely independent of whether RAs are being
    accepted or not) is simply not what most users would intuitively expect
    to be the case.
    Signed-off-by: NTore Anderson <tore@fud.no>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    026359bc
addrconf.c 114.5 KB