summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-04-17 11:04:10 +0200
committerThomas Haller <thaller@redhat.com>2019-04-18 11:16:09 +0200
commitb843c1eab8a119663116bc487b9ade40bc7f5754 (patch)
tree9a178cce3d410c6541390e346f3a8b0ef8c9cca4
parent6a6d982c01a2450d5ea0d3930bcd2f39c44d809f (diff)
platform: compare routing rules according to kernel support for FRA_UID_RANGE
-rw-r--r--src/platform/nm-platform.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
index aaefb37984..c9b99987cb 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);