From b843c1eab8a119663116bc487b9ade40bc7f5754 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 17 Apr 2019 11:04:10 +0200 Subject: [PATCH] platform: compare routing rules according to kernel support for FRA_UID_RANGE --- src/platform/nm-platform.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c index aaefb3798..c9b99987c 100644 --- a/src/platform/nm-platform.c +++ b/src/platform/nm-platform.c @@ -7457,7 +7457,10 @@ nm_platform_routing_rule_hash_update (const NMPlatformRoutingRule *obj, ? obj->flow : (guint32) 0u), NM_HASH_COMBINE_BOOLS (guint8, - obj->uid_range_has), + ( _routing_rule_compare (cmp_type, + NM_PLATFORM_KERNEL_SUPPORT_TYPE_FRA_UID_RANGE) + ? obj->uid_range_has + : FALSE)), obj->suppress_prefixlen_inverse, obj->suppress_ifgroup_inverse, ( cmp_full @@ -7476,8 +7479,11 @@ nm_platform_routing_rule_hash_update (const NMPlatformRoutingRule *obj, nm_hash_update (h, &obj->src, addr_size); if (cmp_full || obj->dst_len > 0) nm_hash_update (h, &obj->dst, addr_size); - if (cmp_full || obj->uid_range_has) - nm_hash_update_valp (h, &obj->uid_range); + if (_routing_rule_compare (cmp_type, + NM_PLATFORM_KERNEL_SUPPORT_TYPE_FRA_UID_RANGE)) { + if (cmp_full || obj->uid_range_has) + nm_hash_update_valp (h, &obj->uid_range); + } if (_routing_rule_compare (cmp_type, NM_PLATFORM_KERNEL_SUPPORT_TYPE_FRA_IP_PROTO)) { nm_hash_update_val (h, obj->ip_proto); @@ -7582,10 +7588,13 @@ nm_platform_routing_rule_cmp (const NMPlatformRoutingRule *a, if (cmp_full || a->dst_len > 0) NM_CMP_FIELD_MEMCMP_LEN (a, b, dst, addr_size); - NM_CMP_FIELD_UNSAFE (a, b, uid_range_has); - if (cmp_full || a->uid_range_has) { - NM_CMP_FIELD (a, b, uid_range.start); - NM_CMP_FIELD (a, b, uid_range.end); + if (_routing_rule_compare (cmp_type, + NM_PLATFORM_KERNEL_SUPPORT_TYPE_FRA_UID_RANGE)) { + NM_CMP_FIELD_UNSAFE (a, b, uid_range_has); + if (cmp_full || a->uid_range_has) { + NM_CMP_FIELD (a, b, uid_range.start); + NM_CMP_FIELD (a, b, uid_range.end); + } } NM_CMP_FIELD_STR (a, b, iifname);