mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-10 01:10:22 +01:00
When comparing settings, nm_setting_compare() performs a complicated logic, which basically serializes each GObject property to a GVariant for the D-Bus representation. That is wrong for example for ipv4.addresses, which don't contain address labels. That is, the GObject property is called "addresses", but the D-Bus field "addresses" cannot encode every information and thus comparison fails. Instead, it would have to look into "address-data". Traditionally, we have virtual functions like compare_property() per NMSetting to do the comparison. That comparison is based on the GObject properties. I think that is wrong, because we should have a generic concept of what a property is, independent from GObject properties. With libnm, we added NMSettingProperty, which indeed is such an GObject independent representation to define properties. However, it is not used thoroughly, instead compare_property() is a hack of special cases, overloads from NMSettingProperty, overloads of compare_property(), and default behavior based on GParamSpec. This should be cleaned up. For now, just hack it by handle the properties with the problems explicitly. |
||
|---|---|---|
| .. | ||
| certs | ||
| Makefile.am | ||
| test-compare.c | ||
| test-crypto.c | ||
| test-general-enums.h | ||
| test-general.c | ||
| test-keyfile.c | ||
| test-secrets.c | ||
| test-setting-8021x.c | ||
| test-setting-bond.c | ||
| test-setting-dcb.c | ||
| test-settings-defaults.c | ||