Commit 655a638
route: treat nhid changes as full route replacements
When updating a route targeting a nexthoup group with id changing its
nexthop to a single nexthop, we treat this as an update and instead
add that nexthop to the group instead of replacing the route in the
cache.
So e.g. with
nexthop id 10 fe80::1 dev eth1
nexthop id 11 fe80::2 dev eth2
nexthop id 12 fe80::3 dev eth3
nexthop id 20 grp 10/11
adding a route
dst 2001:db8:1:/64 nhid 20
libnl will store this as 2001:db8:1:/64 via fe80::1, fe80::2
if we now update the route with
dst 2001:db8:1:/64 nhid 12
libnl will see a new route with a single nexthop. Since the existing
route for dst 2001:db8:1:/64 is a multipath route, and the new route has
a single nexthop, libnl assumes this is a new nexthop for the route, and
merges it to 2001:db8:1:/64 via fe80::1, fe80::2, fe80::3 instead of
replacing it.
Fix this by checking the nhid of the routes, and only merge if they
match.
Fixes: 29b7137 ("route cache: Fix handling of ipv6 multipath routes")
Signed-off-by: Jonas Gorski <[email protected]>
#4491 parent 1ac4b32 commit 655a638
1 file changed
+7
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
528 | 528 | | |
529 | 529 | | |
530 | 530 | | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
531 | 538 | | |
532 | 539 | | |
533 | 540 | | |
| |||
0 commit comments