When running against older kernels (e.g. rhel-7), then kernel might not support several routing rule attributes.
NMPRulesManager checks whether a rule exists before adding it (). That means, NetworkManager must use the same notion of what equality means as the current kernel we run against.
Preferably, we detect that at runtime, but kernel does not make that easy so have a compile-time default as fallback that depends on the kernel headers we built against.