IPV6: Fix default gateway criteria wrt. HIGH/LOW preference radv option
authorPedro Ribeiro <pribeiro@net.ipl.pt>
Wed, 15 Oct 2008 22:47:49 +0000 (15:47 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 15 Oct 2008 23:03:01 +0000 (16:03 -0700)
commit22441cfa0c70dcd457f3c081fcf285c3bd155824
treec313183f0b7a9c3736d5b042f8e97780d7670609
parentdeb28d9bc4bb6922c1f7e459744d7b2d0db3a1d2
IPV6: Fix default gateway criteria wrt. HIGH/LOW preference radv option

Problem observed:
               In IPv6, in the presence of multiple routers candidates to
               default gateway in one segment, each sending a different
               value of preference, the Linux hosts connected to the
               segment weren't selecting the right one in all the
               combinations possible of LOW/MEDIUM/HIGH preference.

This patch changes two files:
include/linux/icmpv6.h
               Get the "router_pref" bitfield in the right place
               (as RFC4191 says), named the bit left with this fix as
               "home_agent" (RFC3775 say that's his function)

net/ipv6/ndisc.c
               Corrects the binary logic behind the updating of the
               router preference in the flags of the routing table

Result:
               With this two fixes applied, the default route used by
               the system was to consistent with the rules mentioned
               in RFC4191 in case of changes in the value of preference
               in router advertisements

Signed-off-by: Pedro Ribeiro <pribeiro@net.ipl.pt>
Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/icmpv6.h
net/ipv6/ndisc.c