mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-25 14:10:08 +01:00
platform: compare routing rules according to kernel support for FRA_L3MDEV
Also, in nm_platform_routing_rule_cmp() always compare the routing
table field, also if l3mdev is set. For kernel, we cannot set table and
l3mdev together, hence such rules don't really exist (or if we try to
configure it, it will be rejected by kernel). But as far as
nm_platform_routing_rule_cmp() is concerned, if the table is set,
always compare it.
(cherry picked from commit b6ff02e76f)
This commit is contained in:
parent
d440391350
commit
062be85d82
1 changed files with 14 additions and 9 deletions
|
|
@ -7463,9 +7463,12 @@ nm_platform_routing_rule_hash_update (const NMPlatformRoutingRule *obj,
|
|||
: FALSE)),
|
||||
obj->suppress_prefixlen_inverse,
|
||||
obj->suppress_ifgroup_inverse,
|
||||
( cmp_full
|
||||
? obj->l3mdev
|
||||
: (guint8) !!obj->l3mdev),
|
||||
( _routing_rule_compare (cmp_type,
|
||||
NM_PLATFORM_KERNEL_SUPPORT_TYPE_FRA_L3MDEV)
|
||||
? ( cmp_full
|
||||
? (guint16) obj->l3mdev
|
||||
: (guint16) !!obj->l3mdev)
|
||||
: G_MAXUINT16),
|
||||
obj->action,
|
||||
obj->tos,
|
||||
obj->src_len,
|
||||
|
|
@ -7540,13 +7543,15 @@ nm_platform_routing_rule_cmp (const NMPlatformRoutingRule *a,
|
|||
NM_CMP_FIELD (a, b, priority);
|
||||
NM_CMP_FIELD (a, b, tun_id);
|
||||
|
||||
if (cmp_full)
|
||||
NM_CMP_FIELD (a, b, l3mdev);
|
||||
else
|
||||
NM_CMP_FIELD_BOOL (a, b, l3mdev);
|
||||
if (_routing_rule_compare (cmp_type,
|
||||
NM_PLATFORM_KERNEL_SUPPORT_TYPE_FRA_L3MDEV)) {
|
||||
if (cmp_full)
|
||||
NM_CMP_FIELD (a, b, l3mdev);
|
||||
else
|
||||
NM_CMP_FIELD_BOOL (a, b, l3mdev);
|
||||
}
|
||||
|
||||
if (cmp_full || !a->l3mdev)
|
||||
NM_CMP_FIELD (a, b, table);
|
||||
NM_CMP_FIELD (a, b, table);
|
||||
|
||||
NM_CMP_DIRECT (a->flags & flags_mask, b->flags & flags_mask);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue