summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2021-06-28 14:53:16 +0200
committerThomas Haller <thaller@redhat.com>2021-07-12 13:34:40 +0200
commitd6f802abcdea440d0144cdd6cabe11c86fd7bf19 (patch)
tree8d5c93f51c9c1c7dada174610d4bb95b28c7bf65
parentdc649d1336ede7ec6b515f6d806ee782ec58cadb (diff)
downloadNetworkManager-d6f802abcdea440d0144cdd6cabe11c86fd7bf19.tar.gz
libnm: extend NMSettInfoSetting with an offset to the private data
NMSetting instances either have no private data, they use g_type_add_class_private(), or they embed the private data in the NMSetting struct. In all cases, we can find the private data at a fixed offset. Track that offset in the NMSettInfoSetting meta data. This will be useful, because properties really are stored in simple fields, like a boolean property can be stored in a "bool" field. We will extend the property meta data to track the offset of this property field, but we also need to know where the offset starts.
-rw-r--r--src/libnm-core-impl/nm-setting-6lowpan.c9
-rw-r--r--src/libnm-core-impl/nm-setting-8021x.c9
-rw-r--r--src/libnm-core-impl/nm-setting-adsl.c9
-rw-r--r--src/libnm-core-impl/nm-setting-bluetooth.c9
-rw-r--r--src/libnm-core-impl/nm-setting-bond.c9
-rw-r--r--src/libnm-core-impl/nm-setting-bridge-port.c9
-rw-r--r--src/libnm-core-impl/nm-setting-bridge.c9
-rw-r--r--src/libnm-core-impl/nm-setting-cdma.c2
-rw-r--r--src/libnm-core-impl/nm-setting-connection.c9
-rw-r--r--src/libnm-core-impl/nm-setting-dcb.c9
-rw-r--r--src/libnm-core-impl/nm-setting-dummy.c2
-rw-r--r--src/libnm-core-impl/nm-setting-ethtool.c5
-rw-r--r--src/libnm-core-impl/nm-setting-generic.c2
-rw-r--r--src/libnm-core-impl/nm-setting-gsm.c9
-rw-r--r--src/libnm-core-impl/nm-setting-hostname.c2
-rw-r--r--src/libnm-core-impl/nm-setting-infiniband.c9
-rw-r--r--src/libnm-core-impl/nm-setting-ip-tunnel.c9
-rw-r--r--src/libnm-core-impl/nm-setting-ip4-config.c9
-rw-r--r--src/libnm-core-impl/nm-setting-ip6-config.c9
-rw-r--r--src/libnm-core-impl/nm-setting-macsec.c9
-rw-r--r--src/libnm-core-impl/nm-setting-macvlan.c9
-rw-r--r--src/libnm-core-impl/nm-setting-match.c2
-rw-r--r--src/libnm-core-impl/nm-setting-olpc-mesh.c9
-rw-r--r--src/libnm-core-impl/nm-setting-ovs-bridge.c9
-rw-r--r--src/libnm-core-impl/nm-setting-ovs-dpdk.c2
-rw-r--r--src/libnm-core-impl/nm-setting-ovs-external-ids.c9
-rw-r--r--src/libnm-core-impl/nm-setting-ovs-interface.c2
-rw-r--r--src/libnm-core-impl/nm-setting-ovs-patch.c2
-rw-r--r--src/libnm-core-impl/nm-setting-ovs-port.c2
-rw-r--r--src/libnm-core-impl/nm-setting-ppp.c9
-rw-r--r--src/libnm-core-impl/nm-setting-pppoe.c2
-rw-r--r--src/libnm-core-impl/nm-setting-private.h17
-rw-r--r--src/libnm-core-impl/nm-setting-proxy.c9
-rw-r--r--src/libnm-core-impl/nm-setting-serial.c9
-rw-r--r--src/libnm-core-impl/nm-setting-sriov.c9
-rw-r--r--src/libnm-core-impl/nm-setting-tc-config.c9
-rw-r--r--src/libnm-core-impl/nm-setting-team-port.c9
-rw-r--r--src/libnm-core-impl/nm-setting-team.c9
-rw-r--r--src/libnm-core-impl/nm-setting-tun.c9
-rw-r--r--src/libnm-core-impl/nm-setting-user.c9
-rw-r--r--src/libnm-core-impl/nm-setting-veth.c2
-rw-r--r--src/libnm-core-impl/nm-setting-vlan.c9
-rw-r--r--src/libnm-core-impl/nm-setting-vpn.c9
-rw-r--r--src/libnm-core-impl/nm-setting-vrf.c2
-rw-r--r--src/libnm-core-impl/nm-setting-vxlan.c9
-rw-r--r--src/libnm-core-impl/nm-setting-wifi-p2p.c2
-rw-r--r--src/libnm-core-impl/nm-setting-wimax.c9
-rw-r--r--src/libnm-core-impl/nm-setting-wired.c9
-rw-r--r--src/libnm-core-impl/nm-setting-wireguard.c9
-rw-r--r--src/libnm-core-impl/nm-setting-wireless-security.c9
-rw-r--r--src/libnm-core-impl/nm-setting-wireless.c9
-rw-r--r--src/libnm-core-impl/nm-setting-wpan.c2
-rw-r--r--src/libnm-core-impl/nm-setting.c21
-rw-r--r--src/libnm-core-impl/tests/test-setting.c12
-rw-r--r--src/libnm-core-intern/nm-core-internal.h18
55 files changed, 249 insertions, 176 deletions
diff --git a/src/libnm-core-impl/nm-setting-6lowpan.c b/src/libnm-core-impl/nm-setting-6lowpan.c
index c07fb38e69..f647b249b5 100644
--- a/src/libnm-core-impl/nm-setting-6lowpan.c
+++ b/src/libnm-core-impl/nm-setting-6lowpan.c
@@ -225,8 +225,9 @@ nm_setting_6lowpan_class_init(NMSetting6LowpanClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_6LOWPAN,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_6LOWPAN,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-8021x.c b/src/libnm-core-impl/nm-setting-8021x.c
index 6ddbd68066..940bf951eb 100644
--- a/src/libnm-core-impl/nm-setting-8021x.c
+++ b/src/libnm-core-impl/nm-setting-8021x.c
@@ -4648,8 +4648,9 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_802_1X,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_802_1X,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-adsl.c b/src/libnm-core-impl/nm-setting-adsl.c
index 9f45163dff..233467240e 100644
--- a/src/libnm-core-impl/nm-setting-adsl.c
+++ b/src/libnm-core-impl/nm-setting-adsl.c
@@ -454,8 +454,9 @@ nm_setting_adsl_class_init(NMSettingAdslClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_ADSL,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_ADSL,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-bluetooth.c b/src/libnm-core-impl/nm-setting-bluetooth.c
index 4bd91a691a..aa97e4dcb9 100644
--- a/src/libnm-core-impl/nm-setting-bluetooth.c
+++ b/src/libnm-core-impl/nm-setting-bluetooth.c
@@ -341,8 +341,9 @@ nm_setting_bluetooth_class_init(NMSettingBluetoothClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_BLUETOOTH,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_BLUETOOTH,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-bond.c b/src/libnm-core-impl/nm-setting-bond.c
index 252adc73b5..6ef85f633e 100644
--- a/src/libnm-core-impl/nm-setting-bond.c
+++ b/src/libnm-core-impl/nm-setting-bond.c
@@ -1231,8 +1231,9 @@ nm_setting_bond_class_init(NMSettingBondClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_BOND,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_BOND,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-bridge-port.c b/src/libnm-core-impl/nm-setting-bridge-port.c
index 33d0c00915..aefefe6f14 100644
--- a/src/libnm-core-impl/nm-setting-bridge-port.c
+++ b/src/libnm-core-impl/nm-setting-bridge-port.c
@@ -609,8 +609,9 @@ nm_setting_bridge_port_class_init(NMSettingBridgePortClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_BRIDGE_PORT,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_BRIDGE_PORT,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-bridge.c b/src/libnm-core-impl/nm-setting-bridge.c
index e987310f6f..54df6480b4 100644
--- a/src/libnm-core-impl/nm-setting-bridge.c
+++ b/src/libnm-core-impl/nm-setting-bridge.c
@@ -2301,8 +2301,9 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_BRIDGE,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_BRIDGE,
+ NULL,
+ properties_override,
+ G_STRUCT_OFFSET(NMSettingBridge, _priv));
}
diff --git a/src/libnm-core-impl/nm-setting-cdma.c b/src/libnm-core-impl/nm-setting-cdma.c
index 6dc61e8385..ca81bf385c 100644
--- a/src/libnm-core-impl/nm-setting-cdma.c
+++ b/src/libnm-core-impl/nm-setting-cdma.c
@@ -370,5 +370,5 @@ nm_setting_cdma_class_init(NMSettingCdmaClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_CDMA);
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_CDMA, NULL, NULL, 0);
}
diff --git a/src/libnm-core-impl/nm-setting-connection.c b/src/libnm-core-impl/nm-setting-connection.c
index 4441d965d9..bb5c3c82e5 100644
--- a/src/libnm-core-impl/nm-setting-connection.c
+++ b/src/libnm-core-impl/nm-setting-connection.c
@@ -2568,8 +2568,9 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_CONNECTION,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_CONNECTION,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-dcb.c b/src/libnm-core-impl/nm-setting-dcb.c
index f9602c3bbf..fa666654c5 100644
--- a/src/libnm-core-impl/nm-setting-dcb.c
+++ b/src/libnm-core-impl/nm-setting-dcb.c
@@ -1282,8 +1282,9 @@ nm_setting_dcb_class_init(NMSettingDcbClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_DCB,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_DCB,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-dummy.c b/src/libnm-core-impl/nm-setting-dummy.c
index a998a27b14..bfc82aeaec 100644
--- a/src/libnm-core-impl/nm-setting-dummy.c
+++ b/src/libnm-core-impl/nm-setting-dummy.c
@@ -78,5 +78,5 @@ nm_setting_dummy_class_init(NMSettingDummyClass *klass)
setting_class->verify = verify;
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_DUMMY);
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_DUMMY, NULL, NULL, 0);
}
diff --git a/src/libnm-core-impl/nm-setting-ethtool.c b/src/libnm-core-impl/nm-setting-ethtool.c
index abedcae3eb..901dab487f 100644
--- a/src/libnm-core-impl/nm-setting-ethtool.c
+++ b/src/libnm-core-impl/nm-setting-ethtool.c
@@ -407,11 +407,12 @@ nm_setting_ethtool_class_init(NMSettingEthtoolClass *klass)
setting_class->verify = verify;
- _nm_setting_class_commit_full(
+ _nm_setting_class_commit(
setting_class,
NM_META_SETTING_TYPE_ETHTOOL,
NM_SETT_INFO_SETT_DETAIL(.gendata_info =
NM_SETT_INFO_SETT_GENDATA(.get_variant_type =
get_variant_type, ), ),
- NULL);
+ NULL,
+ 0);
}
diff --git a/src/libnm-core-impl/nm-setting-generic.c b/src/libnm-core-impl/nm-setting-generic.c
index 0eff1ddf49..ce212554cf 100644
--- a/src/libnm-core-impl/nm-setting-generic.c
+++ b/src/libnm-core-impl/nm-setting-generic.c
@@ -74,5 +74,5 @@ nm_setting_generic_class_init(NMSettingGenericClass *klass)
g_type_class_add_private(klass, sizeof(NMSettingGenericPrivate));
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_GENERIC);
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_GENERIC, NULL, NULL, 0);
}
diff --git a/src/libnm-core-impl/nm-setting-gsm.c b/src/libnm-core-impl/nm-setting-gsm.c
index a177f7fb8c..d7d8457d01 100644
--- a/src/libnm-core-impl/nm-setting-gsm.c
+++ b/src/libnm-core-impl/nm-setting-gsm.c
@@ -879,8 +879,9 @@ nm_setting_gsm_class_init(NMSettingGsmClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_GSM,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_GSM,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-hostname.c b/src/libnm-core-impl/nm-setting-hostname.c
index 248ae556e3..d002d70eab 100644
--- a/src/libnm-core-impl/nm-setting-hostname.c
+++ b/src/libnm-core-impl/nm-setting-hostname.c
@@ -335,5 +335,5 @@ nm_setting_hostname_class_init(NMSettingHostnameClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_HOSTNAME);
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_HOSTNAME, NULL, NULL, 0);
}
diff --git a/src/libnm-core-impl/nm-setting-infiniband.c b/src/libnm-core-impl/nm-setting-infiniband.c
index 95dc7b6696..730b2d2649 100644
--- a/src/libnm-core-impl/nm-setting-infiniband.c
+++ b/src/libnm-core-impl/nm-setting-infiniband.c
@@ -530,8 +530,9 @@ nm_setting_infiniband_class_init(NMSettingInfinibandClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_INFINIBAND,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_INFINIBAND,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-ip-tunnel.c b/src/libnm-core-impl/nm-setting-ip-tunnel.c
index d87a59f4a8..e5a34f0c41 100644
--- a/src/libnm-core-impl/nm-setting-ip-tunnel.c
+++ b/src/libnm-core-impl/nm-setting-ip-tunnel.c
@@ -881,8 +881,9 @@ nm_setting_ip_tunnel_class_init(NMSettingIPTunnelClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_IP_TUNNEL,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_IP_TUNNEL,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-ip4-config.c b/src/libnm-core-impl/nm-setting-ip4-config.c
index 15bae0cd40..f7f5931e4f 100644
--- a/src/libnm-core-impl/nm-setting-ip4-config.c
+++ b/src/libnm-core-impl/nm-setting-ip4-config.c
@@ -1052,8 +1052,9 @@ nm_setting_ip4_config_class_init(NMSettingIP4ConfigClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_IP4_CONFIG,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_IP4_CONFIG,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-ip6-config.c b/src/libnm-core-impl/nm-setting-ip6-config.c
index f6d59a46d1..c72418dd69 100644
--- a/src/libnm-core-impl/nm-setting-ip6-config.c
+++ b/src/libnm-core-impl/nm-setting-ip6-config.c
@@ -1096,8 +1096,9 @@ nm_setting_ip6_config_class_init(NMSettingIP6ConfigClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_IP6_CONFIG,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_IP6_CONFIG,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-macsec.c b/src/libnm-core-impl/nm-setting-macsec.c
index 55024bb4c2..c180802505 100644
--- a/src/libnm-core-impl/nm-setting-macsec.c
+++ b/src/libnm-core-impl/nm-setting-macsec.c
@@ -686,8 +686,9 @@ nm_setting_macsec_class_init(NMSettingMacsecClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_MACSEC,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_MACSEC,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-macvlan.c b/src/libnm-core-impl/nm-setting-macvlan.c
index 9cb2b2621f..070a53064a 100644
--- a/src/libnm-core-impl/nm-setting-macvlan.c
+++ b/src/libnm-core-impl/nm-setting-macvlan.c
@@ -347,8 +347,9 @@ nm_setting_macvlan_class_init(NMSettingMacvlanClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_MACVLAN,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_MACVLAN,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-match.c b/src/libnm-core-impl/nm-setting-match.c
index e4f7c1a810..20c6b798e6 100644
--- a/src/libnm-core-impl/nm-setting-match.c
+++ b/src/libnm-core-impl/nm-setting-match.c
@@ -901,5 +901,5 @@ nm_setting_match_class_init(NMSettingMatchClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_MATCH);
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_MATCH, NULL, NULL, 0);
}
diff --git a/src/libnm-core-impl/nm-setting-olpc-mesh.c b/src/libnm-core-impl/nm-setting-olpc-mesh.c
index 103f619519..ce7bdf1fb7 100644
--- a/src/libnm-core-impl/nm-setting-olpc-mesh.c
+++ b/src/libnm-core-impl/nm-setting-olpc-mesh.c
@@ -285,8 +285,9 @@ nm_setting_olpc_mesh_class_init(NMSettingOlpcMeshClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_OLPC_MESH,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_OLPC_MESH,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-ovs-bridge.c b/src/libnm-core-impl/nm-setting-ovs-bridge.c
index 22738d204d..f4a46c6e3b 100644
--- a/src/libnm-core-impl/nm-setting-ovs-bridge.c
+++ b/src/libnm-core-impl/nm-setting-ovs-bridge.c
@@ -374,8 +374,9 @@ nm_setting_ovs_bridge_class_init(NMSettingOvsBridgeClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_OVS_BRIDGE,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_OVS_BRIDGE,
+ NULL,
+ properties_override,
+ 0);
}
diff --git a/src/libnm-core-impl/nm-setting-ovs-dpdk.c b/src/libnm-core-impl/nm-setting-ovs-dpdk.c
index 957b0f5716..3107531b27 100644
--- a/src/libnm-core-impl/nm-setting-ovs-dpdk.c
+++ b/src/libnm-core-impl/nm-setting-ovs-dpdk.c
@@ -148,5 +148,5 @@ nm_setting_ovs_dpdk_class_init(NMSettingOvsDpdkClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_OVS_DPDK);
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_OVS_DPDK, NULL, NULL, 0);
}
diff --git a/src/libnm-core-impl/nm-setting-ovs-external-ids.c b/src/libnm-core-impl/nm-setting-ovs-external-ids.c
index b73c1af497..d8f41a5919 100644
--- a/src/libnm-core-impl/nm-setting-ovs-external-ids.c
+++ b/src/libnm-core-impl/nm-setting-ovs-external-ids.c
@@ -544,8 +544,9 @@ nm_setting_ovs_external_ids_class_init(NMSettingOvsExternalIDsClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_OVS_EXTERNAL_IDS,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_OVS_EXTERNAL_IDS,
+ NULL,
+ properties_override,
+ G_STRUCT_OFFSET(NMSettingOvsExternalIDs, _priv));
}
diff --git a/src/libnm-core-impl/nm-setting-ovs-interface.c b/src/libnm-core-impl/nm-setting-ovs-interface.c
index 1fde96050a..58a01fcc4c 100644
--- a/src/libnm-core-impl/nm-setting-ovs-interface.c
+++ b/src/libnm-core-impl/nm-setting-ovs-interface.c
@@ -423,5 +423,5 @@ nm_setting_ovs_interface_class_init(NMSettingOvsInterfaceClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_OVS_INTERFACE);
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_OVS_INTERFACE, NULL, NULL, 0);
}
diff --git a/src/libnm-core-impl/nm-setting-ovs-patch.c b/src/libnm-core-impl/nm-setting-ovs-patch.c
index a226a26d47..578f5ee247 100644
--- a/src/libnm-core-impl/nm-setting-ovs-patch.c
+++ b/src/libnm-core-impl/nm-setting-ovs-patch.c
@@ -184,5 +184,5 @@ nm_setting_ovs_patch_class_init(NMSettingOvsPatchClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_OVS_PATCH);
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_OVS_PATCH, NULL, NULL, 0);
}
diff --git a/src/libnm-core-impl/nm-setting-ovs-port.c b/src/libnm-core-impl/nm-setting-ovs-port.c
index 821f29ab14..a5d92019be 100644
--- a/src/libnm-core-impl/nm-setting-ovs-port.c
+++ b/src/libnm-core-impl/nm-setting-ovs-port.c
@@ -463,5 +463,5 @@ nm_setting_ovs_port_class_init(NMSettingOvsPortClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_OVS_PORT);
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_OVS_PORT, NULL, NULL, 0);
}
diff --git a/src/libnm-core-impl/nm-setting-ppp.c b/src/libnm-core-impl/nm-setting-ppp.c
index cc722c4456..77713feb9e 100644
--- a/src/libnm-core-impl/nm-setting-ppp.c
+++ b/src/libnm-core-impl/nm-setting-ppp.c
@@ -806,8 +806,9 @@ nm_setting_ppp_class_init(NMSettingPppClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_PPP,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_PPP,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-pppoe.c b/src/libnm-core-impl/nm-setting-pppoe.c
index 12beb51a5b..1c97c05b15 100644
--- a/src/libnm-core-impl/nm-setting-pppoe.c
+++ b/src/libnm-core-impl/nm-setting-pppoe.c
@@ -370,5 +370,5 @@ nm_setting_pppoe_class_init(NMSettingPppoeClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_PPPOE);
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_PPPOE, NULL, NULL, 0);
}
diff --git a/src/libnm-core-impl/nm-setting-private.h b/src/libnm-core-impl/nm-setting-private.h
index a16004905b..de76914df0 100644
--- a/src/libnm-core-impl/nm-setting-private.h
+++ b/src/libnm-core-impl/nm-setting-private.h
@@ -319,22 +319,17 @@ _nm_sett_info_property_override_create_array(void)
{
/* pre-allocate a relatively large buffer to avoid frequent re-allocations.
* Note that the buffer is only short-lived and will be destroyed by
- * _nm_setting_class_commit_full(). */
+ * _nm_setting_class_commit(). */
return _nm_sett_info_property_override_create_array_sized(20);
}
GArray *_nm_sett_info_property_override_create_array_ip_config(void);
-void _nm_setting_class_commit_full(NMSettingClass * setting_class,
- NMMetaSettingType meta_type,
- const NMSettInfoSettDetail *detail,
- GArray * properties_override);
-
-static inline void
-_nm_setting_class_commit(NMSettingClass *setting_class, NMMetaSettingType meta_type)
-{
- _nm_setting_class_commit_full(setting_class, meta_type, NULL, NULL);
-}
+void _nm_setting_class_commit(NMSettingClass * setting_class,
+ NMMetaSettingType meta_type,
+ const NMSettInfoSettDetail *detail,
+ GArray * properties_override,
+ gint16 private_offset);
#define NM_SETT_INFO_SETT_GENDATA(...) \
({ \
diff --git a/src/libnm-core-impl/nm-setting-proxy.c b/src/libnm-core-impl/nm-setting-proxy.c
index fd09e1d402..e4bd88fa73 100644
--- a/src/libnm-core-impl/nm-setting-proxy.c
+++ b/src/libnm-core-impl/nm-setting-proxy.c
@@ -396,8 +396,9 @@ nm_setting_proxy_class_init(NMSettingProxyClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_PROXY,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_PROXY,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-serial.c b/src/libnm-core-impl/nm-setting-serial.c
index c87de166ac..0029551bc4 100644
--- a/src/libnm-core-impl/nm-setting-serial.c
+++ b/src/libnm-core-impl/nm-setting-serial.c
@@ -345,8 +345,9 @@ nm_setting_serial_class_init(NMSettingSerialClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_SERIAL,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_SERIAL,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-sriov.c b/src/libnm-core-impl/nm-setting-sriov.c
index b18d184af8..e55bc4c53f 100644
--- a/src/libnm-core-impl/nm-setting-sriov.c
+++ b/src/libnm-core-impl/nm-setting-sriov.c
@@ -1365,8 +1365,9 @@ nm_setting_sriov_class_init(NMSettingSriovClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_SRIOV,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_SRIOV,
+ NULL,
+ properties_override,
+ 0);
}
diff --git a/src/libnm-core-impl/nm-setting-tc-config.c b/src/libnm-core-impl/nm-setting-tc-config.c
index a23371a10b..a82e65e61b 100644
--- a/src/libnm-core-impl/nm-setting-tc-config.c
+++ b/src/libnm-core-impl/nm-setting-tc-config.c
@@ -2258,8 +2258,9 @@ nm_setting_tc_config_class_init(NMSettingTCConfigClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_TC_CONFIG,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_TC_CONFIG,
+ NULL,
+ properties_override,
+ 0);
}
diff --git a/src/libnm-core-impl/nm-setting-team-port.c b/src/libnm-core-impl/nm-setting-team-port.c
index 316fc67c96..11aae92638 100644
--- a/src/libnm-core-impl/nm-setting-team-port.c
+++ b/src/libnm-core-impl/nm-setting-team-port.c
@@ -694,8 +694,9 @@ nm_setting_team_port_class_init(NMSettingTeamPortClass *klass)
g_object_class_install_properties(object_class, G_N_ELEMENTS(obj_properties), obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_TEAM_PORT,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_TEAM_PORT,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-team.c b/src/libnm-core-impl/nm-setting-team.c
index b9a368c51d..8669c58618 100644
--- a/src/libnm-core-impl/nm-setting-team.c
+++ b/src/libnm-core-impl/nm-setting-team.c
@@ -1827,8 +1827,9 @@ nm_setting_team_class_init(NMSettingTeamClass *klass)
g_object_class_install_properties(object_class, G_N_ELEMENTS(obj_properties), obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_TEAM,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_TEAM,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-tun.c b/src/libnm-core-impl/nm-setting-tun.c
index d75dcf80ab..3975d00027 100644
--- a/src/libnm-core-impl/nm-setting-tun.c
+++ b/src/libnm-core-impl/nm-setting-tun.c
@@ -413,8 +413,9 @@ nm_setting_tun_class_init(NMSettingTunClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_TUN,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_TUN,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-user.c b/src/libnm-core-impl/nm-setting-user.c
index 0f99baa221..d5e028ce53 100644
--- a/src/libnm-core-impl/nm-setting-user.c
+++ b/src/libnm-core-impl/nm-setting-user.c
@@ -587,8 +587,9 @@ nm_setting_user_class_init(NMSettingUserClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_USER,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_USER,
+ NULL,
+ properties_override,
+ G_STRUCT_OFFSET(NMSettingUser, _priv));
}
diff --git a/src/libnm-core-impl/nm-setting-veth.c b/src/libnm-core-impl/nm-setting-veth.c
index 70cfe50b42..43d8da4f93 100644
--- a/src/libnm-core-impl/nm-setting-veth.c
+++ b/src/libnm-core-impl/nm-setting-veth.c
@@ -190,5 +190,5 @@ nm_setting_veth_class_init(NMSettingVethClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_VETH);
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_VETH, NULL, NULL, 0);
}
diff --git a/src/libnm-core-impl/nm-setting-vlan.c b/src/libnm-core-impl/nm-setting-vlan.c
index e4e07e35dd..78eb9924bc 100644
--- a/src/libnm-core-impl/nm-setting-vlan.c
+++ b/src/libnm-core-impl/nm-setting-vlan.c
@@ -994,8 +994,9 @@ nm_setting_vlan_class_init(NMSettingVlanClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_VLAN,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_VLAN,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-vpn.c b/src/libnm-core-impl/nm-setting-vpn.c
index 351f3fd721..c94a86e9f9 100644
--- a/src/libnm-core-impl/nm-setting-vpn.c
+++ b/src/libnm-core-impl/nm-setting-vpn.c
@@ -1252,8 +1252,9 @@ nm_setting_vpn_class_init(NMSettingVpnClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_VPN,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_VPN,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-vrf.c b/src/libnm-core-impl/nm-setting-vrf.c
index a5ee739592..0eac3cf6d6 100644
--- a/src/libnm-core-impl/nm-setting-vrf.c
+++ b/src/libnm-core-impl/nm-setting-vrf.c
@@ -160,5 +160,5 @@ nm_setting_vrf_class_init(NMSettingVrfClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_VRF);
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_VRF, NULL, NULL, 0);
}
diff --git a/src/libnm-core-impl/nm-setting-vxlan.c b/src/libnm-core-impl/nm-setting-vxlan.c
index f2aeb66a16..845ede04c6 100644
--- a/src/libnm-core-impl/nm-setting-vxlan.c
+++ b/src/libnm-core-impl/nm-setting-vxlan.c
@@ -836,8 +836,9 @@ nm_setting_vxlan_class_init(NMSettingVxlanClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_VXLAN,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_VXLAN,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-wifi-p2p.c b/src/libnm-core-impl/nm-setting-wifi-p2p.c
index 8f677479d3..1d27ee538a 100644
--- a/src/libnm-core-impl/nm-setting-wifi-p2p.c
+++ b/src/libnm-core-impl/nm-setting-wifi-p2p.c
@@ -300,5 +300,5 @@ nm_setting_wifi_p2p_class_init(NMSettingWifiP2PClass *setting_wifi_p2p_class)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_WIFI_P2P);
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_WIFI_P2P, NULL, NULL, 0);
}
diff --git a/src/libnm-core-impl/nm-setting-wimax.c b/src/libnm-core-impl/nm-setting-wimax.c
index 6d9f3284fa..9f2f6e3bf5 100644
--- a/src/libnm-core-impl/nm-setting-wimax.c
+++ b/src/libnm-core-impl/nm-setting-wimax.c
@@ -264,8 +264,9 @@ nm_setting_wimax_class_init(NMSettingWimaxClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_WIMAX,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_WIMAX,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-wired.c b/src/libnm-core-impl/nm-setting-wired.c
index 7a702de2cc..7e64949de7 100644
--- a/src/libnm-core-impl/nm-setting-wired.c
+++ b/src/libnm-core-impl/nm-setting-wired.c
@@ -1745,8 +1745,9 @@ nm_setting_wired_class_init(NMSettingWiredClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_WIRED,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_WIRED,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-wireguard.c b/src/libnm-core-impl/nm-setting-wireguard.c
index 3290ff567f..ba99ea0bfb 100644
--- a/src/libnm-core-impl/nm-setting-wireguard.c
+++ b/src/libnm-core-impl/nm-setting-wireguard.c
@@ -2601,8 +2601,9 @@ nm_setting_wireguard_class_init(NMSettingWireGuardClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_WIREGUARD,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_WIREGUARD,
+ NULL,
+ properties_override,
+ G_STRUCT_OFFSET(NMSettingWireGuard, _priv));
}
diff --git a/src/libnm-core-impl/nm-setting-wireless-security.c b/src/libnm-core-impl/nm-setting-wireless-security.c
index 9e3c8d819f..ed77563295 100644
--- a/src/libnm-core-impl/nm-setting-wireless-security.c
+++ b/src/libnm-core-impl/nm-setting-wireless-security.c
@@ -1993,8 +1993,9 @@ nm_setting_wireless_security_class_init(NMSettingWirelessSecurityClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_WIRELESS_SECURITY,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_WIRELESS_SECURITY,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-wireless.c b/src/libnm-core-impl/nm-setting-wireless.c
index 5bdedf9bfb..a7ad9624ba 100644
--- a/src/libnm-core-impl/nm-setting-wireless.c
+++ b/src/libnm-core-impl/nm-setting-wireless.c
@@ -1985,8 +1985,9 @@ nm_setting_wireless_class_init(NMSettingWirelessClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit_full(setting_class,
- NM_META_SETTING_TYPE_WIRELESS,
- NULL,
- properties_override);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_WIRELESS,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-wpan.c b/src/libnm-core-impl/nm-setting-wpan.c
index f1d532af8e..30d81890c8 100644
--- a/src/libnm-core-impl/nm-setting-wpan.c
+++ b/src/libnm-core-impl/nm-setting-wpan.c
@@ -389,5 +389,5 @@ nm_setting_wpan_class_init(NMSettingWpanClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_WPAN);
+ _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_WPAN, NULL, NULL, 0);
}
diff --git a/src/libnm-core-impl/nm-setting.c b/src/libnm-core-impl/nm-setting.c
index 3f32e181d8..11c2096617 100644
--- a/src/libnm-core-impl/nm-setting.c
+++ b/src/libnm-core-impl/nm-setting.c
@@ -264,10 +264,11 @@ _property_infos_sort(const NMSettInfoProperty *property_infos,
}
void
-_nm_setting_class_commit_full(NMSettingClass * setting_class,
- NMMetaSettingType meta_type,
- const NMSettInfoSettDetail *detail,
- GArray * properties_override)
+_nm_setting_class_commit(NMSettingClass * setting_class,
+ NMMetaSettingType meta_type,
+ const NMSettInfoSettDetail *detail,
+ GArray * properties_override,
+ gint16 private_offset)
{
NMSettInfoSetting *sett_info;
gs_free GParamSpec **property_specs = NULL;
@@ -400,6 +401,18 @@ has_property_type:
setting_class->setting_info = &nm_meta_setting_infos[meta_type];
sett_info->setting_class = setting_class;
+
+ if (private_offset == NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS) {
+ int o;
+
+ o = g_type_class_get_instance_private_offset(setting_class);
+ nm_assert(o != NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
+ nm_assert(o > G_MININT16);
+ nm_assert(o < 0);
+ private_offset = o;
+ }
+ sett_info->private_offset = private_offset;
+
if (detail)
sett_info->detail = *detail;
nm_assert(properties_override->len > 0);
diff --git a/src/libnm-core-impl/tests/test-setting.c b/src/libnm-core-impl/tests/test-setting.c
index 81ecb3b03d..15dbf0f8b9 100644
--- a/src/libnm-core-impl/tests/test-setting.c
+++ b/src/libnm-core-impl/tests/test-setting.c
@@ -4404,6 +4404,18 @@ test_setting_metadata(void)
g_assert_cmpint(sis->property_infos_len, >, 0);
g_assert(sis->property_infos);
+ {
+ int offset;
+
+ if (sis->private_offset < 0) {
+ offset = g_type_class_get_instance_private_offset(sis->setting_class);
+ g_assert_cmpint(sis->private_offset, ==, offset);
+ } else {
+ /* it would be nice to assert that this class has no private data.
+ * But we cannot. */
+ }
+ }
+
h_properties = g_hash_table_new(nm_str_hash, g_str_equal);
for (prop_idx = 0; prop_idx < sis->property_infos_len; prop_idx++) {
diff --git a/src/libnm-core-intern/nm-core-internal.h b/src/libnm-core-intern/nm-core-internal.h
index 9ffaa05fd9..fd6f9892ec 100644
--- a/src/libnm-core-intern/nm-core-internal.h
+++ b/src/libnm-core-intern/nm-core-internal.h
@@ -762,10 +762,26 @@ struct _NMSettInfoSetting {
*/
const NMSettInfoProperty *const *property_infos_sorted;
- guint property_infos_len;
+ guint property_infos_len;
+
+ /* the offset in bytes to get the private data from the @self pointer. */
+ gint16 private_offset;
+
NMSettInfoSettDetail detail;
};
+#define NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS ((gint16) G_MININT16)
+
+static inline gpointer
+_nm_setting_get_private(NMSetting *self, const NMSettInfoSetting *sett_info, guint16 offset)
+{
+ nm_assert(NM_IS_SETTING(self));
+ nm_assert(sett_info);
+ nm_assert(NM_SETTING_GET_CLASS(self) == sett_info->setting_class);
+
+ return ((((char *) ((gpointer) self)) + sett_info->private_offset) + offset);
+}
+
static inline const NMSettInfoProperty *
_nm_sett_info_property_info_get_sorted(const NMSettInfoSetting *sett_info, guint idx)
{