net/ipv6: remove the old peer route if change it to a new one
authorHangbin Liu <liuhangbin@gmail.com>
Tue, 3 Mar 2020 06:37:35 +0000 (14:37 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 3 Mar 2020 22:43:16 +0000 (14:43 -0800)
commitd0098e4c6b83e502cc1cd96d67ca86bc79a6c559
tree782be00a40efa2c290b20e4c6796fcc3cc2ff640
parent617940123e0140521f3080d2befc2bf55bcda094
net/ipv6: remove the old peer route if change it to a new one

When we modify the peer route and changed it to a new one, we should
remove the old route first. Before the fix:

+ ip addr add dev dummy1 2001:db8::1 peer 2001:db8::2
+ ip -6 route show dev dummy1
2001:db8::1 proto kernel metric 256 pref medium
2001:db8::2 proto kernel metric 256 pref medium
+ ip addr change dev dummy1 2001:db8::1 peer 2001:db8::3
+ ip -6 route show dev dummy1
2001:db8::1 proto kernel metric 256 pref medium
2001:db8::2 proto kernel metric 256 pref medium

After the fix:
+ ip addr change dev dummy1 2001:db8::1 peer 2001:db8::3
+ ip -6 route show dev dummy1
2001:db8::1 proto kernel metric 256 pref medium
2001:db8::3 proto kernel metric 256 pref medium

This patch depend on the previous patch "net/ipv6: need update peer route
when modify metric" to update new peer route after delete old one.

Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Reviewed-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/addrconf.c