thom311 / libnl

Netlink Library Suite
GNU Lesser General Public License v2.1
419 stars 311 forks source link

route: ignore flags and weight of nexthops when doing a strict route comparison #384

Closed KanjiMonster closed 3 months ago

KanjiMonster commented 3 months ago

When a route is created while the interface has no link, we get a notification with the route and the nexthop having the flag LINKDOWN.

If the interface later gets a link, we do not get a route notification about it, so the route and nexthop stay at LINKDOWN in the libnl cache.

If the route then gets removed again, the to be removed route will not have the LINKDOWN flag anymore, which then can break comparison of the nexthop(s).

So add a new helper for ignoring FLAGS and WEIGHT for nexthops, and use it everywhere we want to tell if it's the same nexthop, but not necessarily in the same state.

For loose comparisons, we still need to use the old function, as else e.g. route lookup will require specifying exact nexthops, and just filtering for all routes on a certain interfaces would break.

thom311 commented 3 months ago

merged. thank you!!!