libnm: merge branch 'th/setting-to-dbus-fcn'

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/900

(cherry picked from commit 74996782eb)
This commit is contained in:
Thomas Haller 2021-06-23 13:01:21 +02:00
commit 11fd85b3e1
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728
36 changed files with 1256 additions and 798 deletions

View file

@ -196,8 +196,9 @@ finalize(GObject *object)
static void static void
nm_setting_6lowpan_class_init(NMSetting6LowpanClass *klass) nm_setting_6lowpan_class_init(NMSetting6LowpanClass *klass)
{ {
GObjectClass * object_class = G_OBJECT_CLASS(klass); GObjectClass * object_class = G_OBJECT_CLASS(klass);
NMSettingClass *setting_class = NM_SETTING_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
GArray * properties_override = _nm_sett_info_property_override_create_array();
g_type_class_add_private(klass, sizeof(NMSetting6LowpanPrivate)); g_type_class_add_private(klass, sizeof(NMSetting6LowpanPrivate));
@ -215,14 +216,17 @@ nm_setting_6lowpan_class_init(NMSetting6LowpanClass *klass)
* *
* Since: 1.14 * Since: 1.14
**/ **/
obj_properties[PROP_PARENT] = g_param_spec_string( _nm_setting_property_define_string(properties_override,
NM_SETTING_6LOWPAN_PARENT, obj_properties,
"", NM_SETTING_6LOWPAN_PARENT,
"", PROP_PARENT,
NULL, NM_SETTING_PARAM_INFERRABLE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); nm_setting_6lowpan_get_parent);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
_nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_6LOWPAN); _nm_setting_class_commit_full(setting_class,
NM_META_SETTING_TYPE_6LOWPAN,
NULL,
properties_override);
} }

View file

@ -3513,8 +3513,9 @@ finalize(GObject *object)
static void static void
nm_setting_802_1x_class_init(NMSetting8021xClass *klass) nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
{ {
GObjectClass * object_class = G_OBJECT_CLASS(klass); GObjectClass * object_class = G_OBJECT_CLASS(klass);
NMSettingClass *setting_class = NM_SETTING_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
GArray * properties_override = _nm_sett_info_property_override_create_array();
g_type_class_add_private(klass, sizeof(NMSetting8021xPrivate)); g_type_class_add_private(klass, sizeof(NMSetting8021xPrivate));
@ -4587,12 +4588,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: a boolean value. * description: a boolean value.
* ---end--- * ---end---
*/ */
obj_properties[PROP_SYSTEM_CA_CERTS] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_802_1X_SYSTEM_CA_CERTS, obj_properties,
"", NM_SETTING_802_1X_SYSTEM_CA_CERTS,
"", PROP_SYSTEM_CA_CERTS,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_802_1x_get_system_ca_certs);
/** /**
* NMSetting8021x:auth-timeout: * NMSetting8021x:auth-timeout:
@ -4636,14 +4638,18 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: whether the 802.1X authentication is optional * description: whether the 802.1X authentication is optional
* ---end--- * ---end---
*/ */
obj_properties[PROP_OPTIONAL] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_802_1X_OPTIONAL, obj_properties,
"", NM_SETTING_802_1X_OPTIONAL,
"", PROP_OPTIONAL,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_802_1x_get_optional);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
_nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_802_1X); _nm_setting_class_commit_full(setting_class,
NM_META_SETTING_TYPE_802_1X,
NULL,
properties_override);
} }

View file

@ -351,8 +351,9 @@ finalize(GObject *object)
static void static void
nm_setting_adsl_class_init(NMSettingAdslClass *klass) nm_setting_adsl_class_init(NMSettingAdslClass *klass)
{ {
GObjectClass * object_class = G_OBJECT_CLASS(klass); GObjectClass * object_class = G_OBJECT_CLASS(klass);
NMSettingClass *setting_class = NM_SETTING_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
GArray * properties_override = _nm_sett_info_property_override_create_array();
g_type_class_add_private(klass, sizeof(NMSettingAdslPrivate)); g_type_class_add_private(klass, sizeof(NMSettingAdslPrivate));
@ -369,23 +370,24 @@ nm_setting_adsl_class_init(NMSettingAdslClass *klass)
* *
* Username used to authenticate with the ADSL service. * Username used to authenticate with the ADSL service.
**/ **/
obj_properties[PROP_USERNAME] = g_param_spec_string(NM_SETTING_ADSL_USERNAME, _nm_setting_property_define_string(properties_override,
"", obj_properties,
"", NM_SETTING_ADSL_USERNAME,
NULL, PROP_USERNAME,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_adsl_get_username);
/** /**
* NMSettingAdsl:password: * NMSettingAdsl:password:
* *
* Password used to authenticate with the ADSL service. * Password used to authenticate with the ADSL service.
**/ **/
obj_properties[PROP_PASSWORD] = _nm_setting_property_define_string(properties_override,
g_param_spec_string(NM_SETTING_ADSL_PASSWORD, obj_properties,
"", NM_SETTING_ADSL_PASSWORD,
"", PROP_PASSWORD,
NULL, NM_SETTING_PARAM_SECRET,
G_PARAM_READWRITE | NM_SETTING_PARAM_SECRET | G_PARAM_STATIC_STRINGS); nm_setting_adsl_get_password);
/** /**
* NMSettingAdsl:password-flags: * NMSettingAdsl:password-flags:
@ -405,23 +407,24 @@ nm_setting_adsl_class_init(NMSettingAdslClass *klass)
* *
* ADSL connection protocol. Can be "pppoa", "pppoe" or "ipoatm". * ADSL connection protocol. Can be "pppoa", "pppoe" or "ipoatm".
**/ **/
obj_properties[PROP_PROTOCOL] = g_param_spec_string(NM_SETTING_ADSL_PROTOCOL, _nm_setting_property_define_string(properties_override,
"", obj_properties,
"", NM_SETTING_ADSL_PROTOCOL,
NULL, PROP_PROTOCOL,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_adsl_get_protocol);
/** /**
* NMSettingAdsl:encapsulation: * NMSettingAdsl:encapsulation:
* *
* Encapsulation of ADSL connection. Can be "vcmux" or "llc". * Encapsulation of ADSL connection. Can be "vcmux" or "llc".
**/ **/
obj_properties[PROP_ENCAPSULATION] = _nm_setting_property_define_string(properties_override,
g_param_spec_string(NM_SETTING_ADSL_ENCAPSULATION, obj_properties,
"", NM_SETTING_ADSL_ENCAPSULATION,
"", PROP_ENCAPSULATION,
NULL, NM_SETTING_PARAM_NONE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); nm_setting_adsl_get_encapsulation);
/** /**
* NMSettingAdsl:vpi: * NMSettingAdsl:vpi:
@ -451,5 +454,8 @@ nm_setting_adsl_class_init(NMSettingAdslClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
_nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_ADSL); _nm_setting_class_commit_full(setting_class,
NM_META_SETTING_TYPE_ADSL,
NULL,
properties_override);
} }

View file

@ -564,12 +564,13 @@ nm_setting_bridge_port_class_init(NMSettingBridgePortClass *klass)
* description: Hairpin mode of the bridge port. * description: Hairpin mode of the bridge port.
* ---end--- * ---end---
*/ */
obj_properties[PROP_HAIRPIN_MODE] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE, obj_properties,
"", NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE,
"", PROP_HAIRPIN_MODE,
FALSE, FALSE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_bridge_port_get_hairpin_mode);
/** /**
* NMSettingBridgePort:vlans: (type GPtrArray(NMBridgeVlan)) * NMSettingBridgePort:vlans: (type GPtrArray(NMBridgeVlan))

View file

@ -1672,12 +1672,13 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
* description: Span tree protocol participation. * description: Span tree protocol participation.
* ---end--- * ---end---
*/ */
obj_properties[PROP_STP] = g_param_spec_boolean(NM_SETTING_BRIDGE_STP, _nm_setting_property_define_boolean(properties_override,
"", obj_properties,
"", NM_SETTING_BRIDGE_STP,
NM_BRIDGE_STP_DEF, PROP_STP,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE NM_BRIDGE_STP_DEF,
| G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_bridge_get_stp);
/** /**
* NMSettingBridge:priority: * NMSettingBridge:priority:
@ -1830,12 +1831,13 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
* description: IGMP snooping support. * description: IGMP snooping support.
* ---end--- * ---end---
*/ */
obj_properties[PROP_MULTICAST_SNOOPING] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_BRIDGE_MULTICAST_SNOOPING, obj_properties,
"", NM_SETTING_BRIDGE_MULTICAST_SNOOPING,
"", PROP_MULTICAST_SNOOPING,
NM_BRIDGE_MULTICAST_SNOOPING_DEF, NM_BRIDGE_MULTICAST_SNOOPING_DEF,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_bridge_get_multicast_snooping);
/** /**
* NMSettingBridge:vlan-filtering: * NMSettingBridge:vlan-filtering:
@ -1852,12 +1854,13 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
* description: VLAN filtering support. * description: VLAN filtering support.
* ---end--- * ---end---
*/ */
obj_properties[PROP_VLAN_FILTERING] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_BRIDGE_VLAN_FILTERING, obj_properties,
"", NM_SETTING_BRIDGE_VLAN_FILTERING,
"", PROP_VLAN_FILTERING,
FALSE, FALSE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_bridge_get_vlan_filtering);
/** /**
* NMSettingBridge:vlan-default-pvid: * NMSettingBridge:vlan-default-pvid:
@ -1998,12 +2001,13 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
* *
* Since: 1.24 * Since: 1.24
*/ */
obj_properties[PROP_VLAN_STATS_ENABLED] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_BRIDGE_VLAN_STATS_ENABLED, obj_properties,
"", NM_SETTING_BRIDGE_VLAN_STATS_ENABLED,
"", PROP_VLAN_STATS_ENABLED,
NM_BRIDGE_VLAN_STATS_ENABLED_DEF, NM_BRIDGE_VLAN_STATS_ENABLED_DEF,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_bridge_get_vlan_stats_enabled);
/** /**
* NMSettingBridge:multicast-router: * NMSettingBridge:multicast-router:
@ -2048,12 +2052,13 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
* *
* Since: 1.24 * Since: 1.24
*/ */
obj_properties[PROP_MULTICAST_QUERY_USE_IFADDR] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR, obj_properties,
"", NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR,
"", PROP_MULTICAST_QUERY_USE_IFADDR,
NM_BRIDGE_MULTICAST_QUERY_USE_IFADDR_DEF, NM_BRIDGE_MULTICAST_QUERY_USE_IFADDR_DEF,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_bridge_get_multicast_query_use_ifaddr);
/** /**
* NMSettingBridge:multicast-querier: * NMSettingBridge:multicast-querier:
@ -2070,12 +2075,13 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
* *
* Since: 1.24 * Since: 1.24
*/ */
obj_properties[PROP_MULTICAST_QUERIER] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_BRIDGE_MULTICAST_QUERIER, obj_properties,
"", NM_SETTING_BRIDGE_MULTICAST_QUERIER,
"", PROP_MULTICAST_QUERIER,
NM_BRIDGE_MULTICAST_QUERIER_DEF, NM_BRIDGE_MULTICAST_QUERIER_DEF,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_bridge_get_multicast_querier);
/** /**
* NMSettingBridge:multicast-hash-max: * NMSettingBridge:multicast-hash-max:

View file

@ -1872,12 +1872,12 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
* description: User friendly name for the connection profile. * description: User friendly name for the connection profile.
* ---end--- * ---end---
*/ */
obj_properties[PROP_ID] = g_param_spec_string(NM_SETTING_CONNECTION_ID, _nm_setting_property_define_string(properties_override,
"", obj_properties,
"", NM_SETTING_CONNECTION_ID,
NULL, PROP_ID,
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE NM_SETTING_PARAM_FUZZY_IGNORE,
| G_PARAM_STATIC_STRINGS); nm_setting_connection_get_id);
/** /**
* NMSettingConnection:uuid: * NMSettingConnection:uuid:
@ -1902,12 +1902,12 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
* creates the UUID itself (by hashing the filename). * creates the UUID itself (by hashing the filename).
* ---end--- * ---end---
*/ */
obj_properties[PROP_UUID] = g_param_spec_string( _nm_setting_property_define_string(properties_override,
NM_SETTING_CONNECTION_UUID, obj_properties,
"", NM_SETTING_CONNECTION_UUID,
"", PROP_UUID,
NULL, NM_SETTING_PARAM_FUZZY_IGNORE,
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS); nm_setting_connection_get_uuid);
/** /**
* NMSettingConnection:stable-id: * NMSettingConnection:stable-id:
@ -1956,12 +1956,12 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
* description: Token to generate stable IDs. * description: Token to generate stable IDs.
* ---end--- * ---end---
*/ */
obj_properties[PROP_STABLE_ID] = g_param_spec_string( _nm_setting_property_define_string(properties_override,
NM_SETTING_CONNECTION_STABLE_ID, obj_properties,
"", NM_SETTING_CONNECTION_STABLE_ID,
"", PROP_STABLE_ID,
NULL, NM_SETTING_PARAM_FUZZY_IGNORE,
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS); nm_setting_connection_get_stable_id);
/** /**
* NMSettingConnection:interface-name: * NMSettingConnection:interface-name:
@ -1986,18 +1986,17 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
* can be required for some connection types. * can be required for some connection types.
* ---end--- * ---end---
*/ */
obj_properties[PROP_INTERFACE_NAME] = g_param_spec_string( _nm_setting_property_define_string_full(
NM_SETTING_CONNECTION_INTERFACE_NAME,
"",
"",
NULL,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
_nm_properties_override_gobj(
properties_override, properties_override,
obj_properties[PROP_INTERFACE_NAME], obj_properties,
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_STRING, NM_SETTING_CONNECTION_INTERFACE_NAME,
.missing_from_dbus_fcn = PROP_INTERFACE_NAME,
nm_setting_connection_no_interface_name, )); NM_SETTING_PARAM_INFERRABLE,
NM_SETT_INFO_PROPERT_TYPE_DBUS(G_VARIANT_TYPE_STRING,
.to_dbus_fcn = _nm_setting_property_to_dbus_fcn_get_string,
.missing_from_dbus_fcn =
nm_setting_connection_no_interface_name),
nm_setting_connection_get_interface_name);
/** /**
* NMSettingConnection:type: * NMSettingConnection:type:
@ -2017,12 +2016,12 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
* example: TYPE=Ethernet; TYPE=Bond; TYPE=Bridge; DEVICETYPE=TeamPort * example: TYPE=Ethernet; TYPE=Bond; TYPE=Bridge; DEVICETYPE=TeamPort
* ---end--- * ---end---
*/ */
obj_properties[PROP_TYPE] = g_param_spec_string(NM_SETTING_CONNECTION_TYPE, _nm_setting_property_define_string(properties_override,
"", obj_properties,
"", NM_SETTING_CONNECTION_TYPE,
NULL, PROP_TYPE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE NM_SETTING_PARAM_INFERRABLE,
| G_PARAM_STATIC_STRINGS); nm_setting_connection_get_connection_type);
/** /**
* NMSettingConnection:permissions: * NMSettingConnection:permissions:
@ -2075,12 +2074,13 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
* description: Whether the connection should be autoconnected (not only while booting). * description: Whether the connection should be autoconnected (not only while booting).
* ---end--- * ---end---
*/ */
obj_properties[PROP_AUTOCONNECT] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_CONNECTION_AUTOCONNECT, obj_properties,
"", NM_SETTING_CONNECTION_AUTOCONNECT,
"", PROP_AUTOCONNECT,
TRUE, TRUE,
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_FUZZY_IGNORE,
nm_setting_connection_get_autoconnect);
/** /**
* NMSettingConnection:autoconnect-priority: * NMSettingConnection:autoconnect-priority:
@ -2182,8 +2182,8 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
_nm_properties_override_gobj( _nm_properties_override_gobj(
properties_override, properties_override,
obj_properties[PROP_TIMESTAMP], obj_properties[PROP_TIMESTAMP],
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_UINT64, NM_SETT_INFO_PROPERT_TYPE_DBUS(G_VARIANT_TYPE_UINT64,
.to_dbus_fcn = _to_dbus_fcn_timestamp, )); .to_dbus_fcn = _to_dbus_fcn_timestamp, ));
/** /**
* NMSettingConnection:read-only: * NMSettingConnection:read-only:
@ -2192,12 +2192,13 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
* service's D-Bus interface with the right privileges, or %TRUE if the * service's D-Bus interface with the right privileges, or %TRUE if the
* connection is read-only and cannot be modified. * connection is read-only and cannot be modified.
**/ **/
obj_properties[PROP_READ_ONLY] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_CONNECTION_READ_ONLY, obj_properties,
"", NM_SETTING_CONNECTION_READ_ONLY,
"", PROP_READ_ONLY,
FALSE, FALSE,
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_FUZZY_IGNORE,
nm_setting_connection_get_read_only);
/** /**
* NMSettingConnection:zone: * NMSettingConnection:zone:
@ -2218,13 +2219,13 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
* example: ZONE=Work * example: ZONE=Work
* ---end--- * ---end---
*/ */
obj_properties[PROP_ZONE] = _nm_setting_property_define_string(properties_override,
g_param_spec_string(NM_SETTING_CONNECTION_ZONE, obj_properties,
"", NM_SETTING_CONNECTION_ZONE,
"", PROP_ZONE,
NULL, NM_SETTING_PARAM_FUZZY_IGNORE
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | NM_SETTING_PARAM_REAPPLY_IMMEDIATELY,
| NM_SETTING_PARAM_REAPPLY_IMMEDIATELY | G_PARAM_STATIC_STRINGS); nm_setting_connection_get_zone);
/** /**
* NMSettingConnection:master: * NMSettingConnection:master:
@ -2240,13 +2241,12 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
* for compatibility with legacy tooling. * for compatibility with legacy tooling.
* ---end--- * ---end---
*/ */
obj_properties[PROP_MASTER] = _nm_setting_property_define_string(properties_override,
g_param_spec_string(NM_SETTING_CONNECTION_MASTER, obj_properties,
"", NM_SETTING_CONNECTION_MASTER,
"", PROP_MASTER,
NULL, NM_SETTING_PARAM_FUZZY_IGNORE | NM_SETTING_PARAM_INFERRABLE,
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE nm_setting_connection_get_master);
| NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
/** /**
* NMSettingConnection:slave-type: * NMSettingConnection:slave-type:
@ -2265,13 +2265,12 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
* and BRIDGE_UUID for bridging. * and BRIDGE_UUID for bridging.
* ---end--- * ---end---
*/ */
obj_properties[PROP_SLAVE_TYPE] = _nm_setting_property_define_string(properties_override,
g_param_spec_string(NM_SETTING_CONNECTION_SLAVE_TYPE, obj_properties,
"", NM_SETTING_CONNECTION_SLAVE_TYPE,
"", PROP_SLAVE_TYPE,
NULL, NM_SETTING_PARAM_FUZZY_IGNORE | NM_SETTING_PARAM_INFERRABLE,
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE nm_setting_connection_get_slave_type);
| NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
/** /**
* NMSettingConnection:autoconnect-slaves: * NMSettingConnection:autoconnect-slaves:
@ -2553,11 +2552,12 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
* example: https://yourdevice.example.com/model.json * example: https://yourdevice.example.com/model.json
* ---end--- * ---end---
*/ */
obj_properties[PROP_MUD_URL] = g_param_spec_string(NM_SETTING_CONNECTION_MUD_URL, _nm_setting_property_define_string(properties_override,
"", obj_properties,
"", NM_SETTING_CONNECTION_MUD_URL,
NULL, PROP_MUD_URL,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_connection_get_mud_url);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);

View file

@ -744,14 +744,6 @@ set_gvalue_from_array(GValue *v, uint *a, size_t len)
#define SET_GVALUE_FROM_ARRAY(v, a) set_gvalue_from_array(v, a, G_N_ELEMENTS(a)) #define SET_GVALUE_FROM_ARRAY(v, a) set_gvalue_from_array(v, a, G_N_ELEMENTS(a))
static GVariant *
_nm_setting_dcb_uint_array_to_dbus(const GValue *prop_value)
{
GArray *src = g_value_get_boxed(prop_value);
return nm_g_variant_new_au((const guint32 *) src->data, src->len);
}
static void static void
_nm_setting_dcb_uint_array_from_dbus(GVariant *dbus_value, GValue *prop_value) _nm_setting_dcb_uint_array_from_dbus(GVariant *dbus_value, GValue *prop_value)
{ {
@ -762,11 +754,11 @@ _nm_setting_dcb_uint_array_from_dbus(GVariant *dbus_value, GValue *prop_value)
set_gvalue_from_array(prop_value, (guint *) array, length); set_gvalue_from_array(prop_value, (guint *) array, length);
} }
static const NMSettInfoPropertType nm_sett_info_propert_type_dcb_au = { static const NMSettInfoPropertType nm_sett_info_propert_type_dcb_au =
.dbus_type = NM_G_VARIANT_TYPE("au"), NM_SETT_INFO_PROPERT_TYPE_GPROP_INIT(
.gprop_to_dbus_fcn = _nm_setting_dcb_uint_array_to_dbus, NM_G_VARIANT_TYPE("au"),
.gprop_from_dbus_fcn = _nm_setting_dcb_uint_array_from_dbus, .typdata_to_dbus.gprop_type = NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_GARRAY_UINT,
}; .gprop_from_dbus_fcn = _nm_setting_dcb_uint_array_from_dbus, );
/*****************************************************************************/ /*****************************************************************************/

View file

@ -667,12 +667,13 @@ nm_setting_gsm_class_init(NMSettingGsmClass *klass)
* *
* Since: 1.22 * Since: 1.22
**/ **/
obj_properties[PROP_AUTO_CONFIG] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_GSM_AUTO_CONFIG, obj_properties,
"", NM_SETTING_GSM_AUTO_CONFIG,
"", PROP_AUTO_CONFIG,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_gsm_get_auto_config);
/** /**
* NMSettingGsm:number: * NMSettingGsm:number:
@ -793,12 +794,13 @@ nm_setting_gsm_class_init(NMSettingGsmClass *klass)
* When %TRUE, only connections to the home network will be allowed. * When %TRUE, only connections to the home network will be allowed.
* Connections to roaming networks will not be made. * Connections to roaming networks will not be made.
**/ **/
obj_properties[PROP_HOME_ONLY] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_GSM_HOME_ONLY, obj_properties,
"", NM_SETTING_GSM_HOME_ONLY,
"", PROP_HOME_ONLY,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_gsm_get_home_only);
/** /**
* NMSettingGsm:device-id: * NMSettingGsm:device-id:

View file

@ -5760,10 +5760,35 @@ _nm_sett_info_property_override_create_array_ip_config(void)
{ {
GArray *properties_override = _nm_sett_info_property_override_create_array(); GArray *properties_override = _nm_sett_info_property_override_create_array();
_nm_properties_override_gobj(properties_override, _nm_properties_override_gobj(
obj_properties[PROP_GATEWAY], properties_override,
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_STRING, obj_properties[PROP_METHOD],
.from_dbus_fcn = ip_gateway_set, )); &nm_sett_info_propert_type_string,
.to_dbus_data.get_string =
(const char *(*) (NMSetting *) ) nm_setting_ip_config_get_method);
_nm_properties_override_gobj(
properties_override,
obj_properties[PROP_GATEWAY],
NM_SETT_INFO_PROPERT_TYPE_DBUS(G_VARIANT_TYPE_STRING,
.to_dbus_fcn = _nm_setting_property_to_dbus_fcn_get_string,
.from_dbus_fcn = ip_gateway_set),
.to_dbus_data.get_string =
(const char *(*) (NMSetting *) ) nm_setting_ip_config_get_gateway);
_nm_properties_override_gobj(
properties_override,
obj_properties[PROP_DHCP_HOSTNAME],
&nm_sett_info_propert_type_string,
.to_dbus_data.get_string =
(const char *(*) (NMSetting *) ) nm_setting_ip_config_get_dhcp_hostname);
_nm_properties_override_gobj(
properties_override,
obj_properties[PROP_DHCP_IAID],
&nm_sett_info_propert_type_string,
.to_dbus_data.get_string =
(const char *(*) (NMSetting *) ) nm_setting_ip_config_get_dhcp_iaid);
/* ---dbus--- /* ---dbus---
* property: routing-rules * property: routing-rules
@ -5774,9 +5799,39 @@ _nm_sett_info_property_override_create_array_ip_config(void)
_nm_properties_override_dbus( _nm_properties_override_dbus(
properties_override, properties_override,
NM_SETTING_IP_CONFIG_ROUTING_RULES, NM_SETTING_IP_CONFIG_ROUTING_RULES,
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("aa{sv}"), NM_SETT_INFO_PROPERT_TYPE_DBUS(NM_G_VARIANT_TYPE("aa{sv}"),
.to_dbus_fcn = _routing_rules_dbus_only_synth, .to_dbus_fcn = _routing_rules_dbus_only_synth,
.from_dbus_fcn = _routing_rules_dbus_only_set, )); .from_dbus_fcn = _routing_rules_dbus_only_set, ));
_nm_properties_override_gobj(properties_override,
obj_properties[PROP_IGNORE_AUTO_ROUTES],
&nm_sett_info_propert_type_boolean,
.to_dbus_data.get_boolean = (gboolean(*)(
NMSetting *)) nm_setting_ip_config_get_ignore_auto_routes);
_nm_properties_override_gobj(properties_override,
obj_properties[PROP_IGNORE_AUTO_DNS],
&nm_sett_info_propert_type_boolean,
.to_dbus_data.get_boolean = (gboolean(*)(
NMSetting *)) nm_setting_ip_config_get_ignore_auto_dns);
_nm_properties_override_gobj(properties_override,
obj_properties[PROP_DHCP_SEND_HOSTNAME],
&nm_sett_info_propert_type_boolean,
.to_dbus_data.get_boolean = (gboolean(*)(
NMSetting *)) nm_setting_ip_config_get_dhcp_send_hostname);
_nm_properties_override_gobj(properties_override,
obj_properties[PROP_NEVER_DEFAULT],
&nm_sett_info_propert_type_boolean,
.to_dbus_data.get_boolean = (gboolean(*)(
NMSetting *)) nm_setting_ip_config_get_never_default);
_nm_properties_override_gobj(properties_override,
obj_properties[PROP_MAY_FAIL],
&nm_sett_info_propert_type_boolean,
.to_dbus_data.get_boolean =
(gboolean(*)(NMSetting *)) nm_setting_ip_config_get_may_fail);
return properties_override; return properties_override;
} }

View file

@ -654,8 +654,9 @@ finalize(GObject *object)
static void static void
nm_setting_ip_tunnel_class_init(NMSettingIPTunnelClass *klass) nm_setting_ip_tunnel_class_init(NMSettingIPTunnelClass *klass)
{ {
GObjectClass * object_class = G_OBJECT_CLASS(klass); GObjectClass * object_class = G_OBJECT_CLASS(klass);
NMSettingClass *setting_class = NM_SETTING_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
GArray * properties_override = _nm_sett_info_property_override_create_array();
g_type_class_add_private(klass, sizeof(NMSettingIPTunnelPrivate)); g_type_class_add_private(klass, sizeof(NMSettingIPTunnelPrivate));
@ -674,12 +675,12 @@ nm_setting_ip_tunnel_class_init(NMSettingIPTunnelClass *klass)
* *
* Since: 1.2 * Since: 1.2
**/ **/
obj_properties[PROP_PARENT] = g_param_spec_string( _nm_setting_property_define_string(properties_override,
NM_SETTING_IP_TUNNEL_PARENT, obj_properties,
"", NM_SETTING_IP_TUNNEL_PARENT,
"", PROP_PARENT,
NULL, NM_SETTING_PARAM_INFERRABLE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); nm_setting_ip_tunnel_get_parent);
/** /**
* NMSettingIPTunnel:mode: * NMSettingIPTunnel:mode:
@ -706,12 +707,12 @@ nm_setting_ip_tunnel_class_init(NMSettingIPTunnelClass *klass)
* *
* Since: 1.2 * Since: 1.2
**/ **/
obj_properties[PROP_LOCAL] = g_param_spec_string(NM_SETTING_IP_TUNNEL_LOCAL, _nm_setting_property_define_string(properties_override,
"", obj_properties,
"", NM_SETTING_IP_TUNNEL_LOCAL,
NULL, PROP_LOCAL,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE NM_SETTING_PARAM_INFERRABLE,
| G_PARAM_STATIC_STRINGS); nm_setting_ip_tunnel_get_local);
/** /**
* NMSettingIPTunnel:remote: * NMSettingIPTunnel:remote:
@ -721,12 +722,12 @@ nm_setting_ip_tunnel_class_init(NMSettingIPTunnelClass *klass)
* *
* Since: 1.2 * Since: 1.2
**/ **/
obj_properties[PROP_REMOTE] = g_param_spec_string( _nm_setting_property_define_string(properties_override,
NM_SETTING_IP_TUNNEL_REMOTE, obj_properties,
"", NM_SETTING_IP_TUNNEL_REMOTE,
"", PROP_REMOTE,
NULL, NM_SETTING_PARAM_INFERRABLE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); nm_setting_ip_tunnel_get_remote);
/** /**
* NMSettingIPTunnel:ttl * NMSettingIPTunnel:ttl
@ -769,12 +770,13 @@ nm_setting_ip_tunnel_class_init(NMSettingIPTunnelClass *klass)
* *
* Since: 1.2 * Since: 1.2
**/ **/
obj_properties[PROP_PATH_MTU_DISCOVERY] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_IP_TUNNEL_PATH_MTU_DISCOVERY, obj_properties,
"", NM_SETTING_IP_TUNNEL_PATH_MTU_DISCOVERY,
"", PROP_PATH_MTU_DISCOVERY,
TRUE, TRUE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_ip_tunnel_get_path_mtu_discovery);
/** /**
* NMSettingIPTunnel:input-key: * NMSettingIPTunnel:input-key:
@ -784,12 +786,12 @@ nm_setting_ip_tunnel_class_init(NMSettingIPTunnelClass *klass)
* *
* Since: 1.2 * Since: 1.2
**/ **/
obj_properties[PROP_INPUT_KEY] = g_param_spec_string( _nm_setting_property_define_string(properties_override,
NM_SETTING_IP_TUNNEL_INPUT_KEY, obj_properties,
"", NM_SETTING_IP_TUNNEL_INPUT_KEY,
"", PROP_INPUT_KEY,
NULL, NM_SETTING_PARAM_INFERRABLE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); nm_setting_ip_tunnel_get_input_key);
/** /**
* NMSettingIPTunnel:output-key: * NMSettingIPTunnel:output-key:
@ -799,12 +801,12 @@ nm_setting_ip_tunnel_class_init(NMSettingIPTunnelClass *klass)
* *
* Since: 1.2 * Since: 1.2
**/ **/
obj_properties[PROP_OUTPUT_KEY] = g_param_spec_string( _nm_setting_property_define_string(properties_override,
NM_SETTING_IP_TUNNEL_OUTPUT_KEY, obj_properties,
"", NM_SETTING_IP_TUNNEL_OUTPUT_KEY,
"", PROP_OUTPUT_KEY,
NULL, NM_SETTING_PARAM_INFERRABLE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); nm_setting_ip_tunnel_get_output_key);
/** /**
* NMSettingIPTunnel:encapsulation-limit: * NMSettingIPTunnel:encapsulation-limit:
@ -879,5 +881,8 @@ nm_setting_ip_tunnel_class_init(NMSettingIPTunnelClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
_nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_IP_TUNNEL); _nm_setting_class_commit_full(setting_class,
NM_META_SETTING_TYPE_IP_TUNNEL,
NULL,
properties_override);
} }

View file

@ -847,12 +847,12 @@ nm_setting_ip4_config_class_init(NMSettingIP4ConfigClass *klass)
* example: DHCP_CLIENT_ID=ax-srv-1; DHCP_CLIENT_ID=01:44:44:44:44:44:44 * example: DHCP_CLIENT_ID=ax-srv-1; DHCP_CLIENT_ID=01:44:44:44:44:44:44
* ---end--- * ---end---
*/ */
obj_properties[PROP_DHCP_CLIENT_ID] = _nm_setting_property_define_string(properties_override,
g_param_spec_string(NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID, obj_properties,
"", NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID,
"", PROP_DHCP_CLIENT_ID,
NULL, NM_SETTING_PARAM_NONE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); nm_setting_ip4_config_get_dhcp_client_id);
/* ---ifcfg-rh--- /* ---ifcfg-rh---
* property: dad-timeout * property: dad-timeout
@ -898,12 +898,12 @@ nm_setting_ip4_config_class_init(NMSettingIP4ConfigClass *klass)
* example: DHCP_FQDN=foo.bar.com * example: DHCP_FQDN=foo.bar.com
* ---end--- * ---end---
*/ */
obj_properties[PROP_DHCP_FQDN] = _nm_setting_property_define_string(properties_override,
g_param_spec_string(NM_SETTING_IP4_CONFIG_DHCP_FQDN, obj_properties,
"", NM_SETTING_IP4_CONFIG_DHCP_FQDN,
"", PROP_DHCP_FQDN,
NULL, NM_SETTING_PARAM_NONE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); nm_setting_ip4_config_get_dhcp_fqdn);
/** /**
* NMSettingIP4Config:dhcp-vendor-class-identifier: * NMSettingIP4Config:dhcp-vendor-class-identifier:
@ -924,12 +924,12 @@ nm_setting_ip4_config_class_init(NMSettingIP4ConfigClass *klass)
* example: DHCP_VENDOR_CLASS_IDENTIFIER=foo * example: DHCP_VENDOR_CLASS_IDENTIFIER=foo
* ---end--- * ---end---
*/ */
obj_properties[PROP_DHCP_VENDOR_CLASS_IDENTIFIER] = _nm_setting_property_define_string(properties_override,
g_param_spec_string(NM_SETTING_IP4_CONFIG_DHCP_VENDOR_CLASS_IDENTIFIER, obj_properties,
"", NM_SETTING_IP4_CONFIG_DHCP_VENDOR_CLASS_IDENTIFIER,
"", PROP_DHCP_VENDOR_CLASS_IDENTIFIER,
NULL, NM_SETTING_PARAM_NONE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); nm_setting_ip4_config_get_dhcp_vendor_class_identifier);
/* IP4-specific property overrides */ /* IP4-specific property overrides */
@ -943,9 +943,9 @@ nm_setting_ip4_config_class_init(NMSettingIP4ConfigClass *klass)
_nm_properties_override_gobj( _nm_properties_override_gobj(
properties_override, properties_override,
g_object_class_find_property(G_OBJECT_CLASS(setting_class), NM_SETTING_IP_CONFIG_DNS), g_object_class_find_property(G_OBJECT_CLASS(setting_class), NM_SETTING_IP_CONFIG_DNS),
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("au"), NM_SETT_INFO_PROPERT_TYPE_GPROP(NM_G_VARIANT_TYPE("au"),
.gprop_to_dbus_fcn = ip4_dns_to_dbus, .gprop_from_dbus_fcn = ip4_dns_from_dbus, ),
.gprop_from_dbus_fcn = ip4_dns_from_dbus, )); .to_dbus_data.gprop_to_dbus_fcn = ip4_dns_to_dbus);
/* ---dbus--- /* ---dbus---
* property: addresses * property: addresses
@ -972,14 +972,14 @@ nm_setting_ip4_config_class_init(NMSettingIP4ConfigClass *klass)
_nm_properties_override_gobj( _nm_properties_override_gobj(
properties_override, properties_override,
g_object_class_find_property(G_OBJECT_CLASS(setting_class), NM_SETTING_IP_CONFIG_ADDRESSES), g_object_class_find_property(G_OBJECT_CLASS(setting_class), NM_SETTING_IP_CONFIG_ADDRESSES),
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("aau"), NM_SETT_INFO_PROPERT_TYPE_DBUS(NM_G_VARIANT_TYPE("aau"),
.to_dbus_fcn = ip4_addresses_get, .to_dbus_fcn = ip4_addresses_get,
.from_dbus_fcn = ip4_addresses_set, )); .from_dbus_fcn = ip4_addresses_set, ));
_nm_properties_override_dbus( _nm_properties_override_dbus(
properties_override, properties_override,
"address-labels", "address-labels",
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_STRING_ARRAY, NM_SETT_INFO_PROPERT_TYPE_DBUS(G_VARIANT_TYPE_STRING_ARRAY,
.to_dbus_fcn = ip4_address_labels_get, )); .to_dbus_fcn = ip4_address_labels_get, ));
/* ---dbus--- /* ---dbus---
* property: address-data * property: address-data
@ -993,9 +993,9 @@ nm_setting_ip4_config_class_init(NMSettingIP4ConfigClass *klass)
_nm_properties_override_dbus( _nm_properties_override_dbus(
properties_override, properties_override,
"address-data", "address-data",
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("aa{sv}"), NM_SETT_INFO_PROPERT_TYPE_DBUS(NM_G_VARIANT_TYPE("aa{sv}"),
.to_dbus_fcn = ip4_address_data_get, .to_dbus_fcn = ip4_address_data_get,
.from_dbus_fcn = ip4_address_data_set, )); .from_dbus_fcn = ip4_address_data_set, ));
/* ---dbus--- /* ---dbus---
* property: routes * property: routes
@ -1026,9 +1026,9 @@ nm_setting_ip4_config_class_init(NMSettingIP4ConfigClass *klass)
_nm_properties_override_gobj( _nm_properties_override_gobj(
properties_override, properties_override,
g_object_class_find_property(G_OBJECT_CLASS(setting_class), NM_SETTING_IP_CONFIG_ROUTES), g_object_class_find_property(G_OBJECT_CLASS(setting_class), NM_SETTING_IP_CONFIG_ROUTES),
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("aau"), NM_SETT_INFO_PROPERT_TYPE_DBUS(NM_G_VARIANT_TYPE("aau"),
.to_dbus_fcn = ip4_routes_get, .to_dbus_fcn = ip4_routes_get,
.from_dbus_fcn = ip4_routes_set, )); .from_dbus_fcn = ip4_routes_set, ));
/* ---dbus--- /* ---dbus---
* property: route-data * property: route-data
@ -1043,11 +1043,12 @@ nm_setting_ip4_config_class_init(NMSettingIP4ConfigClass *klass)
* also exist on some routes. * also exist on some routes.
* ---end--- * ---end---
*/ */
_nm_properties_override_dbus(properties_override, _nm_properties_override_dbus(
"route-data", properties_override,
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("aa{sv}"), "route-data",
.to_dbus_fcn = ip4_route_data_get, NM_SETT_INFO_PROPERT_TYPE_DBUS(NM_G_VARIANT_TYPE("aa{sv}"),
.from_dbus_fcn = ip4_route_data_set, )); .to_dbus_fcn = ip4_route_data_get,
.from_dbus_fcn = ip4_route_data_set, ));
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);

View file

@ -914,12 +914,12 @@ nm_setting_ip6_config_class_init(NMSettingIP6ConfigClass *klass)
* example: IPV6_TOKEN=::53 * example: IPV6_TOKEN=::53
* ---end--- * ---end---
*/ */
obj_properties[PROP_TOKEN] = g_param_spec_string(NM_SETTING_IP6_CONFIG_TOKEN, _nm_setting_property_define_string(properties_override,
"", obj_properties,
"", NM_SETTING_IP6_CONFIG_TOKEN,
NULL, PROP_TOKEN,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE NM_SETTING_PARAM_INFERRABLE,
| G_PARAM_STATIC_STRINGS); nm_setting_ip6_config_get_token);
/** /**
* NMSettingIP6Config:ra-timeout: * NMSettingIP6Config:ra-timeout:
@ -994,12 +994,12 @@ nm_setting_ip6_config_class_init(NMSettingIP6ConfigClass *klass)
* example: DHCPV6_DUID=LL; DHCPV6_DUID=0301deadbeef0001; DHCPV6_DUID=03:01:de:ad:be:ef:00:01 * example: DHCPV6_DUID=LL; DHCPV6_DUID=0301deadbeef0001; DHCPV6_DUID=03:01:de:ad:be:ef:00:01
* ---end--- * ---end---
*/ */
obj_properties[PROP_DHCP_DUID] = _nm_setting_property_define_string(properties_override,
g_param_spec_string(NM_SETTING_IP6_CONFIG_DHCP_DUID, obj_properties,
"", NM_SETTING_IP6_CONFIG_DHCP_DUID,
"", PROP_DHCP_DUID,
NULL, NM_SETTING_PARAM_NONE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); nm_setting_ip6_config_get_dhcp_duid);
/* IP6-specific property overrides */ /* IP6-specific property overrides */
@ -1012,9 +1012,9 @@ nm_setting_ip6_config_class_init(NMSettingIP6ConfigClass *klass)
_nm_properties_override_gobj( _nm_properties_override_gobj(
properties_override, properties_override,
g_object_class_find_property(G_OBJECT_CLASS(setting_class), NM_SETTING_IP_CONFIG_DNS), g_object_class_find_property(G_OBJECT_CLASS(setting_class), NM_SETTING_IP_CONFIG_DNS),
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("aay"), NM_SETT_INFO_PROPERT_TYPE_GPROP(NM_G_VARIANT_TYPE("aay"),
.gprop_to_dbus_fcn = ip6_dns_to_dbus, .gprop_from_dbus_fcn = ip6_dns_from_dbus, ),
.gprop_from_dbus_fcn = ip6_dns_from_dbus, )); .to_dbus_data.gprop_to_dbus_fcn = ip6_dns_to_dbus);
/* ---dbus--- /* ---dbus---
* property: addresses * property: addresses
@ -1033,9 +1033,9 @@ nm_setting_ip6_config_class_init(NMSettingIP6ConfigClass *klass)
_nm_properties_override_gobj( _nm_properties_override_gobj(
properties_override, properties_override,
g_object_class_find_property(G_OBJECT_CLASS(setting_class), NM_SETTING_IP_CONFIG_ADDRESSES), g_object_class_find_property(G_OBJECT_CLASS(setting_class), NM_SETTING_IP_CONFIG_ADDRESSES),
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("a(ayuay)"), NM_SETT_INFO_PROPERT_TYPE_DBUS(NM_G_VARIANT_TYPE("a(ayuay)"),
.to_dbus_fcn = ip6_addresses_get, .to_dbus_fcn = ip6_addresses_get,
.from_dbus_fcn = ip6_addresses_set, )); .from_dbus_fcn = ip6_addresses_set, ));
/* ---dbus--- /* ---dbus---
* property: address-data * property: address-data
@ -1049,9 +1049,9 @@ nm_setting_ip6_config_class_init(NMSettingIP6ConfigClass *klass)
_nm_properties_override_dbus( _nm_properties_override_dbus(
properties_override, properties_override,
"address-data", "address-data",
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("aa{sv}"), NM_SETT_INFO_PROPERT_TYPE_DBUS(NM_G_VARIANT_TYPE("aa{sv}"),
.to_dbus_fcn = ip6_address_data_get, .to_dbus_fcn = ip6_address_data_get,
.from_dbus_fcn = ip6_address_data_set, )); .from_dbus_fcn = ip6_address_data_set, ));
/* ---dbus--- /* ---dbus---
* property: routes * property: routes
@ -1070,9 +1070,9 @@ nm_setting_ip6_config_class_init(NMSettingIP6ConfigClass *klass)
_nm_properties_override_gobj( _nm_properties_override_gobj(
properties_override, properties_override,
g_object_class_find_property(G_OBJECT_CLASS(setting_class), NM_SETTING_IP_CONFIG_ROUTES), g_object_class_find_property(G_OBJECT_CLASS(setting_class), NM_SETTING_IP_CONFIG_ROUTES),
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("a(ayuayu)"), NM_SETT_INFO_PROPERT_TYPE_DBUS(NM_G_VARIANT_TYPE("a(ayuayu)"),
.to_dbus_fcn = ip6_routes_get, .to_dbus_fcn = ip6_routes_get,
.from_dbus_fcn = ip6_routes_set, )); .from_dbus_fcn = ip6_routes_set, ));
/* ---dbus--- /* ---dbus---
* property: route-data * property: route-data
@ -1087,11 +1087,12 @@ nm_setting_ip6_config_class_init(NMSettingIP6ConfigClass *klass)
* also exist on some routes. * also exist on some routes.
* ---end--- * ---end---
*/ */
_nm_properties_override_dbus(properties_override, _nm_properties_override_dbus(
"route-data", properties_override,
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("aa{sv}"), "route-data",
.to_dbus_fcn = ip6_route_data_get, NM_SETT_INFO_PROPERT_TYPE_DBUS(NM_G_VARIANT_TYPE("aa{sv}"),
.from_dbus_fcn = ip6_route_data_set, )); .to_dbus_fcn = ip6_route_data_get,
.from_dbus_fcn = ip6_route_data_set, ));
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);

View file

@ -529,8 +529,9 @@ finalize(GObject *object)
static void static void
nm_setting_macsec_class_init(NMSettingMacsecClass *klass) nm_setting_macsec_class_init(NMSettingMacsecClass *klass)
{ {
GObjectClass * object_class = G_OBJECT_CLASS(klass); GObjectClass * object_class = G_OBJECT_CLASS(klass);
NMSettingClass *setting_class = NM_SETTING_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
GArray * properties_override = _nm_sett_info_property_override_create_array();
g_type_class_add_private(klass, sizeof(NMSettingMacsecPrivate)); g_type_class_add_private(klass, sizeof(NMSettingMacsecPrivate));
@ -582,11 +583,13 @@ nm_setting_macsec_class_init(NMSettingMacsecClass *klass)
* *
* Since: 1.6 * Since: 1.6
**/ **/
obj_properties[PROP_ENCRYPT] = g_param_spec_boolean(NM_SETTING_MACSEC_ENCRYPT, _nm_setting_property_define_boolean(properties_override,
"", obj_properties,
"", NM_SETTING_MACSEC_ENCRYPT,
TRUE, PROP_ENCRYPT,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); TRUE,
NM_SETTING_PARAM_NONE,
nm_setting_macsec_get_encrypt);
/** /**
* NMSettingMacsec:mka-cak: * NMSettingMacsec:mka-cak:
@ -673,14 +676,18 @@ nm_setting_macsec_class_init(NMSettingMacsecClass *klass)
* *
* Since: 1.12 * Since: 1.12
**/ **/
obj_properties[PROP_SEND_SCI] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_MACSEC_SEND_SCI, obj_properties,
"", NM_SETTING_MACSEC_SEND_SCI,
"", PROP_SEND_SCI,
TRUE, TRUE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_macsec_get_send_sci);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
_nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_MACSEC); _nm_setting_class_commit_full(setting_class,
NM_META_SETTING_TYPE_MACSEC,
NULL,
properties_override);
} }

View file

@ -269,8 +269,9 @@ finalize(GObject *object)
static void static void
nm_setting_macvlan_class_init(NMSettingMacvlanClass *klass) nm_setting_macvlan_class_init(NMSettingMacvlanClass *klass)
{ {
GObjectClass * object_class = G_OBJECT_CLASS(klass); GObjectClass * object_class = G_OBJECT_CLASS(klass);
NMSettingClass *setting_class = NM_SETTING_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
GArray * properties_override = _nm_sett_info_property_override_create_array();
g_type_class_add_private(klass, sizeof(NMSettingMacvlanPrivate)); g_type_class_add_private(klass, sizeof(NMSettingMacvlanPrivate));
@ -321,12 +322,13 @@ nm_setting_macvlan_class_init(NMSettingMacvlanClass *klass)
* *
* Since: 1.2 * Since: 1.2
**/ **/
obj_properties[PROP_PROMISCUOUS] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_MACVLAN_PROMISCUOUS, obj_properties,
"", NM_SETTING_MACVLAN_PROMISCUOUS,
"", PROP_PROMISCUOUS,
TRUE, TRUE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_macvlan_get_promiscuous);
/** /**
* NMSettingMacvlan:tap: * NMSettingMacvlan:tap:
@ -335,14 +337,18 @@ nm_setting_macvlan_class_init(NMSettingMacvlanClass *klass)
* *
* Since: 1.2 * Since: 1.2
**/ **/
obj_properties[PROP_TAP] = g_param_spec_boolean(NM_SETTING_MACVLAN_TAP, _nm_setting_property_define_boolean(properties_override,
"", obj_properties,
"", NM_SETTING_MACVLAN_TAP,
FALSE, PROP_TAP,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE FALSE,
| G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_macvlan_get_tap);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
_nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_MACVLAN); _nm_setting_class_commit_full(setting_class,
NM_META_SETTING_TYPE_MACVLAN,
NULL,
properties_override);
} }

View file

@ -289,8 +289,9 @@ finalize(GObject *object)
static void static void
nm_setting_ovs_bridge_class_init(NMSettingOvsBridgeClass *klass) nm_setting_ovs_bridge_class_init(NMSettingOvsBridgeClass *klass)
{ {
GObjectClass * object_class = G_OBJECT_CLASS(klass); GObjectClass * object_class = G_OBJECT_CLASS(klass);
NMSettingClass *setting_class = NM_SETTING_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
GArray * properties_override = _nm_sett_info_property_override_create_array();
object_class->get_property = get_property; object_class->get_property = get_property;
object_class->set_property = set_property; object_class->set_property = set_property;
@ -319,12 +320,13 @@ nm_setting_ovs_bridge_class_init(NMSettingOvsBridgeClass *klass)
* *
* Since: 1.10 * Since: 1.10
**/ **/
obj_properties[PROP_MCAST_SNOOPING_ENABLE] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_OVS_BRIDGE_MCAST_SNOOPING_ENABLE, obj_properties,
"", NM_SETTING_OVS_BRIDGE_MCAST_SNOOPING_ENABLE,
"", PROP_MCAST_SNOOPING_ENABLE,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_ovs_bridge_get_mcast_snooping_enable);
/** /**
* NMSettingOvsBridge:rstp-enable: * NMSettingOvsBridge:rstp-enable:
@ -333,12 +335,13 @@ nm_setting_ovs_bridge_class_init(NMSettingOvsBridgeClass *klass)
* *
* Since: 1.10 * Since: 1.10
**/ **/
obj_properties[PROP_RSTP_ENABLE] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_OVS_BRIDGE_RSTP_ENABLE, obj_properties,
"", NM_SETTING_OVS_BRIDGE_RSTP_ENABLE,
"", PROP_RSTP_ENABLE,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_ovs_bridge_get_rstp_enable);
/** /**
* NMSettingOvsBridge:stp-enable: * NMSettingOvsBridge:stp-enable:
@ -347,12 +350,13 @@ nm_setting_ovs_bridge_class_init(NMSettingOvsBridgeClass *klass)
* *
* Since: 1.10 * Since: 1.10
**/ **/
obj_properties[PROP_STP_ENABLE] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_OVS_BRIDGE_STP_ENABLE, obj_properties,
"", NM_SETTING_OVS_BRIDGE_STP_ENABLE,
"", PROP_STP_ENABLE,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_ovs_bridge_get_stp_enable);
/** /**
* NMSettingOvsBridge:datapath-type: * NMSettingOvsBridge:datapath-type:
@ -370,5 +374,8 @@ nm_setting_ovs_bridge_class_init(NMSettingOvsBridgeClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
_nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_OVS_BRIDGE); _nm_setting_class_commit_full(setting_class,
NM_META_SETTING_TYPE_OVS_BRIDGE,
NULL,
properties_override);
} }

View file

@ -534,8 +534,9 @@ nm_setting_ppp_new(void)
static void static void
nm_setting_ppp_class_init(NMSettingPppClass *klass) nm_setting_ppp_class_init(NMSettingPppClass *klass)
{ {
GObjectClass * object_class = G_OBJECT_CLASS(klass); GObjectClass * object_class = G_OBJECT_CLASS(klass);
NMSettingClass *setting_class = NM_SETTING_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
GArray * properties_override = _nm_sett_info_property_override_create_array();
g_type_class_add_private(klass, sizeof(NMSettingPppPrivate)); g_type_class_add_private(klass, sizeof(NMSettingPppPrivate));
@ -551,107 +552,117 @@ nm_setting_ppp_class_init(NMSettingPppClass *klass)
* authenticate itself to the client. If %FALSE, require authentication * authenticate itself to the client. If %FALSE, require authentication
* from the remote side. In almost all cases, this should be %TRUE. * from the remote side. In almost all cases, this should be %TRUE.
**/ **/
obj_properties[PROP_NOAUTH] = g_param_spec_boolean(NM_SETTING_PPP_NOAUTH, _nm_setting_property_define_boolean(properties_override,
"", obj_properties,
"", NM_SETTING_PPP_NOAUTH,
TRUE, PROP_NOAUTH,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); TRUE,
NM_SETTING_PARAM_NONE,
nm_setting_ppp_get_noauth);
/** /**
* NMSettingPpp:refuse-eap: * NMSettingPpp:refuse-eap:
* *
* If %TRUE, the EAP authentication method will not be used. * If %TRUE, the EAP authentication method will not be used.
**/ **/
obj_properties[PROP_REFUSE_EAP] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_PPP_REFUSE_EAP, obj_properties,
"", NM_SETTING_PPP_REFUSE_EAP,
"", PROP_REFUSE_EAP,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_ppp_get_refuse_eap);
/** /**
* NMSettingPpp:refuse-pap: * NMSettingPpp:refuse-pap:
* *
* If %TRUE, the PAP authentication method will not be used. * If %TRUE, the PAP authentication method will not be used.
**/ **/
obj_properties[PROP_REFUSE_PAP] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_PPP_REFUSE_PAP, obj_properties,
"", NM_SETTING_PPP_REFUSE_PAP,
"", PROP_REFUSE_PAP,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_ppp_get_refuse_pap);
/** /**
* NMSettingPpp:refuse-chap: * NMSettingPpp:refuse-chap:
* *
* If %TRUE, the CHAP authentication method will not be used. * If %TRUE, the CHAP authentication method will not be used.
**/ **/
obj_properties[PROP_REFUSE_CHAP] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_PPP_REFUSE_CHAP, obj_properties,
"", NM_SETTING_PPP_REFUSE_CHAP,
"", PROP_REFUSE_CHAP,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_ppp_get_refuse_chap);
/** /**
* NMSettingPpp:refuse-mschap: * NMSettingPpp:refuse-mschap:
* *
* If %TRUE, the MSCHAP authentication method will not be used. * If %TRUE, the MSCHAP authentication method will not be used.
**/ **/
obj_properties[PROP_REFUSE_MSCHAP] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_PPP_REFUSE_MSCHAP, obj_properties,
"", NM_SETTING_PPP_REFUSE_MSCHAP,
"", PROP_REFUSE_MSCHAP,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_ppp_get_refuse_mschap);
/** /**
* NMSettingPpp:refuse-mschapv2: * NMSettingPpp:refuse-mschapv2:
* *
* If %TRUE, the MSCHAPv2 authentication method will not be used. * If %TRUE, the MSCHAPv2 authentication method will not be used.
**/ **/
obj_properties[PROP_REFUSE_MSCHAPV2] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_PPP_REFUSE_MSCHAPV2, obj_properties,
"", NM_SETTING_PPP_REFUSE_MSCHAPV2,
"", PROP_REFUSE_MSCHAPV2,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_ppp_get_refuse_mschapv2);
/** /**
* NMSettingPpp:nobsdcomp: * NMSettingPpp:nobsdcomp:
* *
* If %TRUE, BSD compression will not be requested. * If %TRUE, BSD compression will not be requested.
**/ **/
obj_properties[PROP_NOBSDCOMP] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_PPP_NOBSDCOMP, obj_properties,
"", NM_SETTING_PPP_NOBSDCOMP,
"", PROP_NOBSDCOMP,
FALSE, FALSE,
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_FUZZY_IGNORE,
nm_setting_ppp_get_nobsdcomp);
/** /**
* NMSettingPpp:nodeflate: * NMSettingPpp:nodeflate:
* *
* If %TRUE, "deflate" compression will not be requested. * If %TRUE, "deflate" compression will not be requested.
**/ **/
obj_properties[PROP_NODEFLATE] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_PPP_NODEFLATE, obj_properties,
"", NM_SETTING_PPP_NODEFLATE,
"", PROP_NODEFLATE,
FALSE, FALSE,
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_FUZZY_IGNORE,
nm_setting_ppp_get_nodeflate);
/** /**
* NMSettingPpp:no-vj-comp: * NMSettingPpp:no-vj-comp:
* *
* If %TRUE, Van Jacobsen TCP header compression will not be requested. * If %TRUE, Van Jacobsen TCP header compression will not be requested.
**/ **/
obj_properties[PROP_NO_VJ_COMP] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_PPP_NO_VJ_COMP, obj_properties,
"", NM_SETTING_PPP_NO_VJ_COMP,
"", PROP_NO_VJ_COMP,
FALSE, FALSE,
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_FUZZY_IGNORE,
nm_setting_ppp_get_no_vj_comp);
/** /**
* NMSettingPpp:require-mppe: * NMSettingPpp:require-mppe:
@ -661,12 +672,13 @@ nm_setting_ppp_class_init(NMSettingPppClass *klass)
* session will fail. Note that MPPE is not used on mobile broadband * session will fail. Note that MPPE is not used on mobile broadband
* connections. * connections.
**/ **/
obj_properties[PROP_REQUIRE_MPPE] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_PPP_REQUIRE_MPPE, obj_properties,
"", NM_SETTING_PPP_REQUIRE_MPPE,
"", PROP_REQUIRE_MPPE,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_ppp_get_require_mppe);
/** /**
* NMSettingPpp:require-mppe-128: * NMSettingPpp:require-mppe-128:
@ -675,12 +687,13 @@ nm_setting_ppp_class_init(NMSettingPppClass *klass)
* required for the PPP session, and the "require-mppe" property must also * required for the PPP session, and the "require-mppe" property must also
* be set to %TRUE. If 128-bit MPPE is not available the session will fail. * be set to %TRUE. If 128-bit MPPE is not available the session will fail.
**/ **/
obj_properties[PROP_REQUIRE_MPPE_128] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_PPP_REQUIRE_MPPE_128, obj_properties,
"", NM_SETTING_PPP_REQUIRE_MPPE_128,
"", PROP_REQUIRE_MPPE_128,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_ppp_get_require_mppe_128);
/** /**
* NMSettingPpp:mppe-stateful: * NMSettingPpp:mppe-stateful:
@ -688,12 +701,13 @@ nm_setting_ppp_class_init(NMSettingPppClass *klass)
* If %TRUE, stateful MPPE is used. See pppd documentation for more * If %TRUE, stateful MPPE is used. See pppd documentation for more
* information on stateful MPPE. * information on stateful MPPE.
**/ **/
obj_properties[PROP_MPPE_STATEFUL] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_PPP_MPPE_STATEFUL, obj_properties,
"", NM_SETTING_PPP_MPPE_STATEFUL,
"", PROP_MPPE_STATEFUL,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_ppp_get_mppe_stateful);
/** /**
* NMSettingPpp:crtscts: * NMSettingPpp:crtscts:
@ -702,11 +716,13 @@ nm_setting_ppp_class_init(NMSettingPppClass *klass)
* flow control with RTS and CTS signals. This value should normally be set * flow control with RTS and CTS signals. This value should normally be set
* to %FALSE. * to %FALSE.
**/ **/
obj_properties[PROP_CRTSCTS] = g_param_spec_boolean(NM_SETTING_PPP_CRTSCTS, _nm_setting_property_define_boolean(properties_override,
"", obj_properties,
"", NM_SETTING_PPP_CRTSCTS,
FALSE, PROP_CRTSCTS,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); FALSE,
NM_SETTING_PARAM_NONE,
nm_setting_ppp_get_crtscts);
/** /**
* NMSettingPpp:baud: * NMSettingPpp:baud:
@ -790,5 +806,8 @@ nm_setting_ppp_class_init(NMSettingPppClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
_nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_PPP); _nm_setting_class_commit_full(setting_class,
NM_META_SETTING_TYPE_PPP,
NULL,
properties_override);
} }

View file

@ -211,6 +211,10 @@ gboolean _nm_setting_clear_secrets(NMSetting * setting,
NMSettingClearSecretsWithFlagsFn func, NMSettingClearSecretsWithFlagsFn func,
gpointer user_data); gpointer user_data);
/*****************************************************************************/
#define NM_SETTING_PARAM_NONE 0
/* The property of the #NMSetting should be considered during comparisons that /* The property of the #NMSetting should be considered during comparisons that
* use the %NM_SETTING_COMPARE_FLAG_INFERRABLE flag. Properties that don't have * use the %NM_SETTING_COMPARE_FLAG_INFERRABLE flag. Properties that don't have
* this flag, are ignored when doing an infrerrable comparison. This flag should * this flag, are ignored when doing an infrerrable comparison. This flag should
@ -249,6 +253,9 @@ extern const NMSettInfoPropertType nm_sett_info_propert_type_deprecated_ignore_u
extern const NMSettInfoPropertType nm_sett_info_propert_type_plain_i; extern const NMSettInfoPropertType nm_sett_info_propert_type_plain_i;
extern const NMSettInfoPropertType nm_sett_info_propert_type_plain_u; extern const NMSettInfoPropertType nm_sett_info_propert_type_plain_u;
extern const NMSettInfoPropertType nm_sett_info_propert_type_boolean;
extern const NMSettInfoPropertType nm_sett_info_propert_type_string;
NMSettingVerifyResult NMSettingVerifyResult
_nm_setting_verify(NMSetting *setting, NMConnection *connection, GError **error); _nm_setting_verify(NMSetting *setting, NMConnection *connection, GError **error);
@ -261,6 +268,29 @@ gboolean _nm_setting_aggregate(NMSetting *setting, NMConnectionAggregateType typ
gboolean _nm_setting_slave_type_is_valid(const char *slave_type, const char **out_port_type); gboolean _nm_setting_slave_type_is_valid(const char *slave_type, const char **out_port_type);
GVariant *_nm_setting_property_to_dbus_fcn_gprop(const NMSettInfoSetting * sett_info,
guint property_idx,
NMConnection * connection,
NMSetting * setting,
NMConnectionSerializationFlags flags,
const NMConnectionSerializationOptions *options);
GVariant *
_nm_setting_property_to_dbus_fcn_get_boolean(const NMSettInfoSetting * sett_info,
guint property_idx,
NMConnection * connection,
NMSetting * setting,
NMConnectionSerializationFlags flags,
const NMConnectionSerializationOptions *options);
GVariant *
_nm_setting_property_to_dbus_fcn_get_string(const NMSettInfoSetting * sett_info,
guint property_idx,
NMConnection * connection,
NMSetting * setting,
NMConnectionSerializationFlags flags,
const NMConnectionSerializationOptions *options);
GVariant *_nm_setting_to_dbus(NMSetting * setting, GVariant *_nm_setting_to_dbus(NMSetting * setting,
NMConnection * connection, NMConnection * connection,
NMConnectionSerializationFlags flags, NMConnectionSerializationFlags flags,
@ -306,13 +336,30 @@ _nm_setting_class_commit(NMSettingClass *setting_class, NMMetaSettingType meta_t
#define NM_SETT_INFO_SETT_DETAIL(...) (&((const NMSettInfoSettDetail){__VA_ARGS__})) #define NM_SETT_INFO_SETT_DETAIL(...) (&((const NMSettInfoSettDetail){__VA_ARGS__}))
#define NM_SETT_INFO_PROPERT_TYPE(...) \ #define NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(_dbus_type, ...) \
({ \ { \
static const NMSettInfoPropertType _g = {__VA_ARGS__}; \ .dbus_type = _dbus_type, __VA_ARGS__ \
\ }
&_g; \
#define NM_SETT_INFO_PROPERT_TYPE_GPROP_INIT(_dbus_type, ...) \
{ \
.dbus_type = _dbus_type, .to_dbus_fcn = _nm_setting_property_to_dbus_fcn_gprop, \
__VA_ARGS__ \
}
#define NM_SETT_INFO_PROPERT_TYPE(init) \
({ \
static const NMSettInfoPropertType _g = init; \
\
&_g; \
}) })
#define NM_SETT_INFO_PROPERT_TYPE_DBUS(_dbus_type, ...) \
NM_SETT_INFO_PROPERT_TYPE(NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(_dbus_type, __VA_ARGS__))
#define NM_SETT_INFO_PROPERT_TYPE_GPROP(_dbus_type, ...) \
NM_SETT_INFO_PROPERT_TYPE(NM_SETT_INFO_PROPERT_TYPE_GPROP_INIT(_dbus_type, __VA_ARGS__))
#define NM_SETT_INFO_PROPERTY(...) (&((const NMSettInfoProperty){__VA_ARGS__})) #define NM_SETT_INFO_PROPERTY(...) (&((const NMSettInfoProperty){__VA_ARGS__}))
gboolean _nm_properties_override_assert(const NMSettInfoProperty *prop_info); gboolean _nm_properties_override_assert(const NMSettInfoProperty *prop_info);
@ -325,10 +372,12 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
g_array_append_vals(properties_override, prop_info, 1); g_array_append_vals(properties_override, prop_info, 1);
} }
#define _nm_properties_override_gobj(properties_override, p_param_spec, p_property_type) \ #define _nm_properties_override_gobj(properties_override, p_param_spec, p_property_type, ...) \
_nm_properties_override( \ _nm_properties_override((properties_override), \
(properties_override), \ NM_SETT_INFO_PROPERTY(.name = NULL, \
NM_SETT_INFO_PROPERTY(.param_spec = (p_param_spec), .property_type = (p_property_type), )) .param_spec = (p_param_spec), \
.property_type = (p_property_type), \
__VA_ARGS__))
#define _nm_properties_override_dbus(properties_override, p_name, p_property_type) \ #define _nm_properties_override_dbus(properties_override, p_name, p_property_type) \
_nm_properties_override( \ _nm_properties_override( \
@ -337,6 +386,125 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
/*****************************************************************************/ /*****************************************************************************/
#define _nm_setting_property_define_boolean_full(properties_override, \
obj_properties, \
prop_name, \
prop_id, \
default_value, \
param_flags, \
property_type, \
get_fcn, \
...) \
G_STMT_START \
{ \
const gboolean _default_value = (default_value); \
GParamSpec * _param_spec; \
const NMSettInfoPropertType *const _property_type = (property_type); \
\
G_STATIC_ASSERT( \
!NM_FLAGS_ANY((param_flags), \
~(NM_SETTING_PARAM_FUZZY_IGNORE | NM_SETTING_PARAM_INFERRABLE \
| NM_SETTING_PARAM_REAPPLY_IMMEDIATELY))); \
\
nm_assert(_property_type); \
nm_assert(_property_type->to_dbus_fcn == _nm_setting_property_to_dbus_fcn_get_boolean); \
\
nm_assert(NM_IN_SET(_default_value, 0, 1)); \
\
_param_spec = \
g_param_spec_boolean("" prop_name "", \
"", \
"", \
_default_value, \
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | (param_flags)); \
\
(obj_properties)[(prop_id)] = _param_spec; \
\
_nm_properties_override_gobj((properties_override), \
_param_spec, \
_property_type, \
.to_dbus_data.get_boolean = \
(gboolean(*)(NMSetting *)) (get_fcn), \
__VA_ARGS__); \
} \
G_STMT_END
#define _nm_setting_property_define_boolean(properties_override, \
obj_properties, \
prop_name, \
prop_id, \
default_value, \
param_flags, \
get_fcn, \
...) \
_nm_setting_property_define_boolean_full((properties_override), \
(obj_properties), \
prop_name, \
(prop_id), \
(default_value), \
(param_flags), \
&nm_sett_info_propert_type_boolean, \
(get_fcn), \
__VA_ARGS__)
/*****************************************************************************/
#define _nm_setting_property_define_string_full(properties_override, \
obj_properties, \
prop_name, \
prop_id, \
param_flags, \
property_type, \
get_fcn, \
...) \
G_STMT_START \
{ \
GParamSpec * _param_spec; \
const NMSettInfoPropertType *const _property_type = (property_type); \
\
G_STATIC_ASSERT(!NM_FLAGS_ANY((param_flags), \
~(NM_SETTING_PARAM_SECRET | NM_SETTING_PARAM_FUZZY_IGNORE \
| NM_SETTING_PARAM_INFERRABLE \
| NM_SETTING_PARAM_REAPPLY_IMMEDIATELY))); \
nm_assert(_property_type); \
nm_assert(_property_type->to_dbus_fcn == _nm_setting_property_to_dbus_fcn_get_string); \
\
_param_spec = \
g_param_spec_string("" prop_name "", \
"", \
"", \
NULL, \
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | (param_flags)); \
\
(obj_properties)[(prop_id)] = _param_spec; \
\
_nm_properties_override_gobj((properties_override), \
_param_spec, \
_property_type, \
.to_dbus_data.get_string = \
(const char *(*) (NMSetting *) ) (get_fcn), \
__VA_ARGS__); \
} \
G_STMT_END
#define _nm_setting_property_define_string(properties_override, \
obj_properties, \
prop_name, \
prop_id, \
param_flags, \
get_fcn, \
...) \
_nm_setting_property_define_string_full((properties_override), \
(obj_properties), \
prop_name, \
(prop_id), \
(param_flags), \
&nm_sett_info_propert_type_string, \
(get_fcn), \
__VA_ARGS__)
/*****************************************************************************/
gboolean _nm_setting_use_legacy_property(NMSetting * setting, gboolean _nm_setting_use_legacy_property(NMSetting * setting,
GVariant * connection_dict, GVariant * connection_dict,
const char *legacy_property, const char *legacy_property,

View file

@ -295,8 +295,9 @@ finalize(GObject *object)
static void static void
nm_setting_proxy_class_init(NMSettingProxyClass *klass) nm_setting_proxy_class_init(NMSettingProxyClass *klass)
{ {
GObjectClass * object_class = G_OBJECT_CLASS(klass); GObjectClass * object_class = G_OBJECT_CLASS(klass);
NMSettingClass *setting_class = NM_SETTING_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
GArray * properties_override = _nm_sett_info_property_override_create_array();
g_type_class_add_private(klass, sizeof(NMSettingProxyPrivate)); g_type_class_add_private(klass, sizeof(NMSettingProxyPrivate));
@ -344,12 +345,13 @@ nm_setting_proxy_class_init(NMSettingProxyClass *klass)
* description: Whether the proxy configuration is for browser only. * description: Whether the proxy configuration is for browser only.
* ---end--- * ---end---
*/ */
obj_properties[PROP_BROWSER_ONLY] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_PROXY_BROWSER_ONLY, obj_properties,
"", NM_SETTING_PROXY_BROWSER_ONLY,
"", PROP_BROWSER_ONLY,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_proxy_get_browser_only);
/** /**
* NMSettingProxy:pac-url: * NMSettingProxy:pac-url:
@ -394,5 +396,8 @@ nm_setting_proxy_class_init(NMSettingProxyClass *klass)
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
_nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_PROXY); _nm_setting_class_commit_full(setting_class,
NM_META_SETTING_TYPE_PROXY,
NULL,
properties_override);
} }

View file

@ -311,9 +311,9 @@ nm_setting_serial_class_init(NMSettingSerialClass *klass)
_nm_properties_override_gobj( _nm_properties_override_gobj(
properties_override, properties_override,
obj_properties[PROP_PARITY], obj_properties[PROP_PARITY],
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_BYTE, NM_SETT_INFO_PROPERT_TYPE_GPROP(G_VARIANT_TYPE_BYTE,
.gprop_to_dbus_fcn = parity_to_dbus, .gprop_from_dbus_fcn = parity_from_dbus, ),
.gprop_from_dbus_fcn = parity_from_dbus, )); .to_dbus_data.gprop_to_dbus_fcn = parity_to_dbus, );
/** /**
* NMSettingSerial:stopbits: * NMSettingSerial:stopbits:

View file

@ -1325,9 +1325,9 @@ nm_setting_sriov_class_init(NMSettingSriovClass *klass)
| G_PARAM_STATIC_STRINGS); | G_PARAM_STATIC_STRINGS);
_nm_properties_override_gobj(properties_override, _nm_properties_override_gobj(properties_override,
obj_properties[PROP_VFS], obj_properties[PROP_VFS],
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("aa{sv}"), NM_SETT_INFO_PROPERT_TYPE_DBUS(NM_G_VARIANT_TYPE("aa{sv}"),
.to_dbus_fcn = vfs_to_dbus, .to_dbus_fcn = vfs_to_dbus,
.from_dbus_fcn = vfs_from_dbus, )); .from_dbus_fcn = vfs_from_dbus, ));
/** /**
* NMSettingSriov:autoprobe-drivers * NMSettingSriov:autoprobe-drivers

View file

@ -1838,9 +1838,9 @@ nm_setting_tc_config_class_init(NMSettingTCConfigClass *klass)
| G_PARAM_STATIC_STRINGS); | G_PARAM_STATIC_STRINGS);
_nm_properties_override_gobj(properties_override, _nm_properties_override_gobj(properties_override,
obj_properties[PROP_QDISCS], obj_properties[PROP_QDISCS],
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("aa{sv}"), NM_SETT_INFO_PROPERT_TYPE_DBUS(NM_G_VARIANT_TYPE("aa{sv}"),
.to_dbus_fcn = tc_qdiscs_get, .to_dbus_fcn = tc_qdiscs_get,
.from_dbus_fcn = tc_qdiscs_set, )); .from_dbus_fcn = tc_qdiscs_set, ));
/** /**
* NMSettingTCConfig:tfilters: (type GPtrArray(NMTCTfilter)) * NMSettingTCConfig:tfilters: (type GPtrArray(NMTCTfilter))
@ -1870,11 +1870,12 @@ nm_setting_tc_config_class_init(NMSettingTCConfigClass *klass)
"", "",
G_TYPE_PTR_ARRAY, G_TYPE_PTR_ARRAY,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
_nm_properties_override_gobj(properties_override, _nm_properties_override_gobj(
obj_properties[PROP_TFILTERS], properties_override,
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("aa{sv}"), obj_properties[PROP_TFILTERS],
.to_dbus_fcn = tc_tfilters_get, NM_SETT_INFO_PROPERT_TYPE_DBUS(NM_G_VARIANT_TYPE("aa{sv}"),
.from_dbus_fcn = tc_tfilters_set, )); .to_dbus_fcn = tc_tfilters_get,
.from_dbus_fcn = tc_tfilters_set, ));
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);

View file

@ -300,8 +300,9 @@ finalize(GObject *object)
static void static void
nm_setting_tun_class_init(NMSettingTunClass *klass) nm_setting_tun_class_init(NMSettingTunClass *klass)
{ {
GObjectClass * object_class = G_OBJECT_CLASS(klass); GObjectClass * object_class = G_OBJECT_CLASS(klass);
NMSettingClass *setting_class = NM_SETTING_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
GArray * properties_override = _nm_sett_info_property_override_create_array();
g_type_class_add_private(klass, sizeof(NMSettingTunPrivate)); g_type_class_add_private(klass, sizeof(NMSettingTunPrivate));
@ -368,12 +369,13 @@ nm_setting_tun_class_init(NMSettingTunClass *klass)
* *
* Since: 1.2 * Since: 1.2
*/ */
obj_properties[PROP_PI] = g_param_spec_boolean(NM_SETTING_TUN_PI, _nm_setting_property_define_boolean(properties_override,
"", obj_properties,
"", NM_SETTING_TUN_PI,
FALSE, PROP_PI,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE FALSE,
| G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_tun_get_pi);
/** /**
* NMSettingTun:vnet-hdr: * NMSettingTun:vnet-hdr:
@ -383,12 +385,13 @@ nm_setting_tun_class_init(NMSettingTunClass *klass)
* *
* Since: 1.2 * Since: 1.2
*/ */
obj_properties[PROP_VNET_HDR] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_TUN_VNET_HDR, obj_properties,
"", NM_SETTING_TUN_VNET_HDR,
"", PROP_VNET_HDR,
FALSE, FALSE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_tun_get_vnet_hdr);
/** /**
* NMSettingTun:multi-queue: * NMSettingTun:multi-queue:
@ -400,14 +403,18 @@ nm_setting_tun_class_init(NMSettingTunClass *klass)
* *
* Since: 1.2 * Since: 1.2
*/ */
obj_properties[PROP_MULTI_QUEUE] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_TUN_MULTI_QUEUE, obj_properties,
"", NM_SETTING_TUN_MULTI_QUEUE,
"", PROP_MULTI_QUEUE,
FALSE, FALSE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_tun_get_multi_queue);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
_nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_TUN); _nm_setting_class_commit_full(setting_class,
NM_META_SETTING_TYPE_TUN,
NULL,
properties_override);
} }

View file

@ -926,9 +926,9 @@ nm_setting_vlan_class_init(NMSettingVlanClass *klass)
_nm_properties_override_gobj( _nm_properties_override_gobj(
properties_override, properties_override,
obj_properties[PROP_FLAGS], obj_properties[PROP_FLAGS],
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_UINT32, NM_SETT_INFO_PROPERT_TYPE_DBUS(G_VARIANT_TYPE_UINT32,
.to_dbus_fcn = _override_flags_get, .to_dbus_fcn = _override_flags_get,
.missing_from_dbus_fcn = _override_flags_not_set, )); .missing_from_dbus_fcn = _override_flags_not_set, ));
/** /**
* NMSettingVlan:ingress-priority-map: * NMSettingVlan:ingress-priority-map:

View file

@ -1172,12 +1172,13 @@ nm_setting_vpn_class_init(NMSettingVpnClass *klass)
* the VPN will attempt to stay connected across link changes and outages, * the VPN will attempt to stay connected across link changes and outages,
* until explicitly disconnected. * until explicitly disconnected.
**/ **/
obj_properties[PROP_PERSISTENT] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_VPN_PERSISTENT, obj_properties,
"", NM_SETTING_VPN_PERSISTENT,
"", PROP_PERSISTENT,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_vpn_get_persistent);
/** /**
* NMSettingVpn:data: (type GHashTable(utf8,utf8)): * NMSettingVpn:data: (type GHashTable(utf8,utf8)):
@ -1226,9 +1227,9 @@ nm_setting_vpn_class_init(NMSettingVpnClass *klass)
_nm_properties_override_gobj( _nm_properties_override_gobj(
properties_override, properties_override,
obj_properties[PROP_SECRETS], obj_properties[PROP_SECRETS],
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("a{ss}"), NM_SETT_INFO_PROPERT_TYPE_DBUS(NM_G_VARIANT_TYPE("a{ss}"),
.to_dbus_fcn = vpn_secrets_to_dbus, .to_dbus_fcn = vpn_secrets_to_dbus,
.from_dbus_fcn = vpn_secrets_from_dbus, )); .from_dbus_fcn = vpn_secrets_from_dbus, ));
/** /**
* NMSettingVpn:timeout: * NMSettingVpn:timeout:

View file

@ -570,8 +570,9 @@ finalize(GObject *object)
static void static void
nm_setting_vxlan_class_init(NMSettingVxlanClass *klass) nm_setting_vxlan_class_init(NMSettingVxlanClass *klass)
{ {
GObjectClass * object_class = G_OBJECT_CLASS(klass); GObjectClass * object_class = G_OBJECT_CLASS(klass);
NMSettingClass *setting_class = NM_SETTING_CLASS(klass); NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
GArray * properties_override = _nm_sett_info_property_override_create_array();
g_type_class_add_private(klass, sizeof(NMSettingVxlanPrivate)); g_type_class_add_private(klass, sizeof(NMSettingVxlanPrivate));
@ -764,12 +765,13 @@ nm_setting_vxlan_class_init(NMSettingVxlanClass *klass)
* *
* Since: 1.2 * Since: 1.2
**/ **/
obj_properties[PROP_PROXY] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_VXLAN_PROXY, obj_properties,
"", NM_SETTING_VXLAN_PROXY,
"", PROP_PROXY,
FALSE, FALSE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_vxlan_get_proxy);
/** /**
* NMSettingVxlan:learning: * NMSettingVxlan:learning:
@ -779,12 +781,14 @@ nm_setting_vxlan_class_init(NMSettingVxlanClass *klass)
* *
* Since: 1.2 * Since: 1.2
**/ **/
obj_properties[PROP_LEARNING] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_VXLAN_LEARNING, obj_properties,
"", NM_SETTING_VXLAN_LEARNING,
"", PROP_LEARNING,
TRUE, TRUE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_vxlan_get_learning);
/** /**
* NMSettingVxlan:rsc: * NMSettingVxlan:rsc:
* *
@ -792,12 +796,14 @@ nm_setting_vxlan_class_init(NMSettingVxlanClass *klass)
* *
* Since: 1.2 * Since: 1.2
**/ **/
obj_properties[PROP_RSC] = g_param_spec_boolean(NM_SETTING_VXLAN_RSC, _nm_setting_property_define_boolean(properties_override,
"", obj_properties,
"", NM_SETTING_VXLAN_RSC,
FALSE, PROP_RSC,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE FALSE,
| G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_vxlan_get_rsc);
/** /**
* NMSettingVxlan:l2-miss: * NMSettingVxlan:l2-miss:
* *
@ -805,12 +811,13 @@ nm_setting_vxlan_class_init(NMSettingVxlanClass *klass)
* *
* Since: 1.2 * Since: 1.2
**/ **/
obj_properties[PROP_L2_MISS] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_VXLAN_L2_MISS, obj_properties,
"", NM_SETTING_VXLAN_L2_MISS,
"", PROP_L2_MISS,
FALSE, FALSE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_vxlan_get_l2_miss);
/** /**
* NMSettingVxlan:l3-miss: * NMSettingVxlan:l3-miss:
@ -819,14 +826,18 @@ nm_setting_vxlan_class_init(NMSettingVxlanClass *klass)
* *
* Since: 1.2 * Since: 1.2
**/ **/
obj_properties[PROP_L3_MISS] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_VXLAN_L3_MISS, obj_properties,
"", NM_SETTING_VXLAN_L3_MISS,
"", PROP_L3_MISS,
FALSE, FALSE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_vxlan_get_l3_miss);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
_nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_VXLAN); _nm_setting_class_commit_full(setting_class,
NM_META_SETTING_TYPE_VXLAN,
NULL,
properties_override);
} }

View file

@ -995,17 +995,6 @@ compare_property(const NMSettInfoSetting *sett_info,
->compare_property(sett_info, property_idx, con_a, set_a, con_b, set_b, flags); ->compare_property(sett_info, property_idx, con_a, set_a, con_b, set_b, flags);
} }
static GVariant *
_override_autoneg_get(const NMSettInfoSetting * sett_info,
guint property_idx,
NMConnection * connection,
NMSetting * setting,
NMConnectionSerializationFlags flags,
const NMConnectionSerializationOptions *options)
{
return g_variant_new_boolean(nm_setting_wired_get_auto_negotiate((NMSettingWired *) setting));
}
/*****************************************************************************/ /*****************************************************************************/
static void static void
@ -1302,11 +1291,12 @@ nm_setting_wired_class_init(NMSettingWiredClass *klass)
* description: The property is not saved by the plugin. * description: The property is not saved by the plugin.
* ---end--- * ---end---
*/ */
obj_properties[PROP_PORT] = g_param_spec_string(NM_SETTING_WIRED_PORT, _nm_setting_property_define_string(properties_override,
"", obj_properties,
"", NM_SETTING_WIRED_PORT,
NULL, PROP_PORT,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_wired_get_port);
/** /**
* NMSettingWired:speed: * NMSettingWired:speed:
@ -1363,11 +1353,12 @@ nm_setting_wired_class_init(NMSettingWiredClass *klass)
* "duplex" parameter in the ETHOOL_OPTS variable. * "duplex" parameter in the ETHOOL_OPTS variable.
* ---end--- * ---end---
*/ */
obj_properties[PROP_DUPLEX] = g_param_spec_string(NM_SETTING_WIRED_DUPLEX, _nm_setting_property_define_string(properties_override,
"", obj_properties,
"", NM_SETTING_WIRED_DUPLEX,
NULL, PROP_DUPLEX,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
nm_setting_wired_get_duplex);
/** /**
* NMSettingWired:auto-negotiate: * NMSettingWired:auto-negotiate:
@ -1389,16 +1380,14 @@ nm_setting_wired_class_init(NMSettingWiredClass *klass)
* "speed" and "duplex" parameters (skips link configuration). * "speed" and "duplex" parameters (skips link configuration).
* ---end--- * ---end---
*/ */
obj_properties[PROP_AUTO_NEGOTIATE] = _nm_setting_property_define_boolean(properties_override,
g_param_spec_boolean(NM_SETTING_WIRED_AUTO_NEGOTIATE, obj_properties,
"", NM_SETTING_WIRED_AUTO_NEGOTIATE,
"", PROP_AUTO_NEGOTIATE,
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_NONE,
_nm_properties_override_gobj(properties_override, nm_setting_wired_get_auto_negotiate,
obj_properties[PROP_AUTO_NEGOTIATE], .to_dbus_data.including_default = TRUE);
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_BOOLEAN,
.to_dbus_fcn = _override_autoneg_get, ));
/** /**
* NMSettingWired:mac-address: * NMSettingWired:mac-address:
@ -1542,12 +1531,12 @@ nm_setting_wired_class_init(NMSettingWiredClass *klass)
* cloned-mac-address. * cloned-mac-address.
* ---end--- * ---end---
*/ */
obj_properties[PROP_GENERATE_MAC_ADDRESS_MASK] = g_param_spec_string( _nm_setting_property_define_string(properties_override,
NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK, obj_properties,
"", NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK,
"", PROP_GENERATE_MAC_ADDRESS_MASK,
NULL, NM_SETTING_PARAM_FUZZY_IGNORE,
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS); nm_setting_wired_get_generate_mac_address_mask);
/** /**
* NMSettingWired:mac-address-blacklist: * NMSettingWired:mac-address-blacklist:
@ -1638,12 +1627,12 @@ nm_setting_wired_class_init(NMSettingWiredClass *klass)
* example: NETTYPE=qeth * example: NETTYPE=qeth
* ---end--- * ---end---
*/ */
obj_properties[PROP_S390_NETTYPE] = g_param_spec_string( _nm_setting_property_define_string(properties_override,
NM_SETTING_WIRED_S390_NETTYPE, obj_properties,
"", NM_SETTING_WIRED_S390_NETTYPE,
"", PROP_S390_NETTYPE,
NULL, NM_SETTING_PARAM_INFERRABLE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); nm_setting_wired_get_s390_nettype);
/** /**
* NMSettingWired:s390-options: (type GHashTable(utf8,utf8)): * NMSettingWired:s390-options: (type GHashTable(utf8,utf8)):
@ -1719,12 +1708,13 @@ nm_setting_wired_class_init(NMSettingWiredClass *klass)
* example: ETHTOOL_OPTS="wol gs sopass 00:11:22:33:44:55" * example: ETHTOOL_OPTS="wol gs sopass 00:11:22:33:44:55"
* ---end--- * ---end---
*/ */
obj_properties[PROP_WAKE_ON_LAN_PASSWORD] = _nm_setting_property_define_string(properties_override,
g_param_spec_string(NM_SETTING_WIRED_WAKE_ON_LAN_PASSWORD, obj_properties,
"", NM_SETTING_WIRED_WAKE_ON_LAN_PASSWORD,
"", PROP_WAKE_ON_LAN_PASSWORD,
NULL, NM_SETTING_PARAM_NONE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); nm_setting_wired_get_wake_on_lan_password);
/** /**
* NMSettingWired:accept-all-mac-addresses: * NMSettingWired:accept-all-mac-addresses:
* *

View file

@ -2514,12 +2514,13 @@ nm_setting_wireguard_class_init(NMSettingWireGuardClass *klass)
* *
* Since: 1.16 * Since: 1.16
**/ **/
obj_properties[PROP_PEER_ROUTES] = g_param_spec_boolean( _nm_setting_property_define_boolean(properties_override,
NM_SETTING_WIREGUARD_PEER_ROUTES, obj_properties,
"", NM_SETTING_WIREGUARD_PEER_ROUTES,
"", PROP_PEER_ROUTES,
TRUE, TRUE,
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS); NM_SETTING_PARAM_INFERRABLE,
nm_setting_wireguard_get_peer_routes);
/** /**
* NMSettingWireGuard:mtu: * NMSettingWireGuard:mtu:
@ -2594,9 +2595,9 @@ nm_setting_wireguard_class_init(NMSettingWireGuardClass *klass)
_nm_properties_override_dbus( _nm_properties_override_dbus(
properties_override, properties_override,
NM_SETTING_WIREGUARD_PEERS, NM_SETTING_WIREGUARD_PEERS,
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = NM_G_VARIANT_TYPE("aa{sv}"), NM_SETT_INFO_PROPERT_TYPE_DBUS(NM_G_VARIANT_TYPE("aa{sv}"),
.to_dbus_fcn = _peers_dbus_only_synth, .to_dbus_fcn = _peers_dbus_only_synth,
.from_dbus_fcn = _peers_dbus_only_set, )); .from_dbus_fcn = _peers_dbus_only_set, ));
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);

View file

@ -1924,11 +1924,10 @@ nm_setting_wireless_security_class_init(NMSettingWirelessSecurityClass *klass)
NM_TYPE_WEP_KEY_TYPE, NM_TYPE_WEP_KEY_TYPE,
NM_WEP_KEY_TYPE_UNKNOWN, NM_WEP_KEY_TYPE_UNKNOWN,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
_nm_properties_override_gobj( _nm_properties_override_gobj(properties_override,
properties_override, obj_properties[PROP_WEP_KEY_TYPE],
obj_properties[PROP_WEP_KEY_TYPE], &nm_sett_info_propert_type_plain_u,
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_UINT32, .to_dbus_data.gprop_to_dbus_fcn = wep_key_type_to_dbus, );
.gprop_to_dbus_fcn = wep_key_type_to_dbus, ));
/** /**
* NMSettingWirelessSecurity:wps-method: * NMSettingWirelessSecurity:wps-method:

View file

@ -1743,8 +1743,8 @@ nm_setting_wireless_class_init(NMSettingWirelessClass *klass)
_nm_properties_override_gobj( _nm_properties_override_gobj(
properties_override, properties_override,
obj_properties[PROP_SEEN_BSSIDS], obj_properties[PROP_SEEN_BSSIDS],
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_STRING_ARRAY, NM_SETT_INFO_PROPERT_TYPE_DBUS(G_VARIANT_TYPE_STRING_ARRAY,
.to_dbus_fcn = _to_dbus_fcn_seen_bssids, )); .to_dbus_fcn = _to_dbus_fcn_seen_bssids, ));
/** /**
* NMSettingWireless:mtu: * NMSettingWireless:mtu:
@ -1791,11 +1791,13 @@ nm_setting_wireless_class_init(NMSettingWirelessClass *klass)
* description: Whether the network hides the SSID. * description: Whether the network hides the SSID.
* ---end--- * ---end---
*/ */
obj_properties[PROP_HIDDEN] = g_param_spec_boolean(NM_SETTING_WIRELESS_HIDDEN, _nm_setting_property_define_boolean(properties_override,
"", obj_properties,
"", NM_SETTING_WIRELESS_HIDDEN,
FALSE, PROP_HIDDEN,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); FALSE,
NM_SETTING_PARAM_NONE,
nm_setting_wireless_get_hidden);
/** /**
* NMSettingWireless:powersave: * NMSettingWireless:powersave:
@ -1871,8 +1873,8 @@ nm_setting_wireless_class_init(NMSettingWirelessClass *klass)
_nm_properties_override_dbus( _nm_properties_override_dbus(
properties_override, properties_override,
"security", "security",
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_STRING, NM_SETT_INFO_PROPERT_TYPE_DBUS(G_VARIANT_TYPE_STRING,
.to_dbus_fcn = nm_setting_wireless_get_security, )); .to_dbus_fcn = nm_setting_wireless_get_security, ));
/** /**
* NMSettingWireless:wake-on-wlan: * NMSettingWireless:wake-on-wlan:

View file

@ -156,55 +156,30 @@ _nm_sett_info_property_find_in_array(const NMSettInfoProperty *properties,
return NULL; return NULL;
} }
static GVariant *
_gprop_to_dbus_fcn_bytes(const GValue *val)
{
nm_assert(G_VALUE_HOLDS(val, G_TYPE_BYTES));
return nm_utils_gbytes_to_variant_ay(g_value_get_boxed(val));
}
static GVariant *
_gprop_to_dbus_fcn_enum(const GValue *val)
{
return g_variant_new_int32(g_value_get_enum(val));
}
static GVariant *
_gprop_to_dbus_fcn_flags(const GValue *val)
{
return g_variant_new_uint32(g_value_get_flags(val));
}
gboolean gboolean
_nm_properties_override_assert(const NMSettInfoProperty *prop_info) _nm_properties_override_assert(const NMSettInfoProperty *prop_info)
{ {
#if NM_MORE_ASSERTS
nm_assert(prop_info); nm_assert(prop_info);
nm_assert((!!prop_info->name) != (!!prop_info->param_spec)); nm_assert((!!prop_info->name) != (!!prop_info->param_spec));
nm_assert(!prop_info->param_spec || !prop_info->name nm_assert(!prop_info->param_spec || !prop_info->name
|| nm_streq0(prop_info->name, prop_info->param_spec->name)); || nm_streq0(prop_info->name, prop_info->param_spec->name));
#define _PROPERT_EXTRA(prop_info, member) \ if (prop_info->property_type) {
({ \ const NMSettInfoPropertType *property_type = prop_info->property_type;
const NMSettInfoProperty *_prop_info = (prop_info); \
\
(_prop_info->property_type ? _prop_info->property_type->member : 0); \
})
nm_assert(!_PROPERT_EXTRA(prop_info, gprop_from_dbus_fcn) /* we always require a dbus_type. */
|| _PROPERT_EXTRA(prop_info, dbus_type)); nm_assert(property_type->dbus_type);
nm_assert(!_PROPERT_EXTRA(prop_info, from_dbus_fcn) || _PROPERT_EXTRA(prop_info, dbus_type));
nm_assert(!_PROPERT_EXTRA(prop_info, to_dbus_fcn) || _PROPERT_EXTRA(prop_info, dbus_type));
nm_assert(!_PROPERT_EXTRA(prop_info, to_dbus_fcn) /* from_dbus_fcn and gprop_from_dbus_fcn cannot both be set. */
|| !_PROPERT_EXTRA(prop_info, gprop_to_dbus_fcn)); nm_assert(!property_type->from_dbus_fcn || !property_type->gprop_from_dbus_fcn);
nm_assert(!_PROPERT_EXTRA(prop_info, from_dbus_fcn)
|| !_PROPERT_EXTRA(prop_info, gprop_from_dbus_fcn));
nm_assert(!_PROPERT_EXTRA(prop_info, gprop_to_dbus_fcn) || prop_info->param_spec);
nm_assert(!_PROPERT_EXTRA(prop_info, gprop_from_dbus_fcn) || prop_info->param_spec);
#undef _PROPERT_EXTRA
if (!prop_info->param_spec) {
/* if we don't have a param_spec, we cannot have gprop_from_dbus_fcn. */
nm_assert(property_type->from_dbus_fcn || !property_type->gprop_from_dbus_fcn);
}
}
#endif
return TRUE; return TRUE;
} }
@ -379,35 +354,35 @@ _nm_setting_class_commit_full(NMSettingClass * setting_class,
vtype = p->param_spec->value_type; vtype = p->param_spec->value_type;
if (vtype == G_TYPE_BOOLEAN) if (vtype == G_TYPE_BOOLEAN)
p->property_type = NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_BOOLEAN); p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(G_VARIANT_TYPE_BOOLEAN);
else if (vtype == G_TYPE_UCHAR) else if (vtype == G_TYPE_UCHAR)
p->property_type = NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_BYTE); p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(G_VARIANT_TYPE_BYTE);
else if (vtype == G_TYPE_INT) else if (vtype == G_TYPE_INT)
p->property_type = &nm_sett_info_propert_type_plain_i; p->property_type = &nm_sett_info_propert_type_plain_i;
else if (vtype == G_TYPE_UINT) else if (vtype == G_TYPE_UINT)
p->property_type = &nm_sett_info_propert_type_plain_u; p->property_type = &nm_sett_info_propert_type_plain_u;
else if (vtype == G_TYPE_INT64) else if (vtype == G_TYPE_INT64)
p->property_type = NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_INT64); p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(G_VARIANT_TYPE_INT64);
else if (vtype == G_TYPE_UINT64) else if (vtype == G_TYPE_UINT64)
p->property_type = NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_UINT64); p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(G_VARIANT_TYPE_UINT64);
else if (vtype == G_TYPE_STRING) else if (vtype == G_TYPE_STRING)
p->property_type = NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_STRING); p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(G_VARIANT_TYPE_STRING);
else if (vtype == G_TYPE_DOUBLE) else if (vtype == G_TYPE_DOUBLE)
p->property_type = NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_DOUBLE); p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(G_VARIANT_TYPE_DOUBLE);
else if (vtype == G_TYPE_STRV) else if (vtype == G_TYPE_STRV)
p->property_type = NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_STRING_ARRAY); p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(G_VARIANT_TYPE_STRING_ARRAY);
else if (vtype == G_TYPE_BYTES) { else if (vtype == G_TYPE_BYTES) {
p->property_type = p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_BYTESTRING, G_VARIANT_TYPE_BYTESTRING,
.gprop_to_dbus_fcn = _gprop_to_dbus_fcn_bytes); .typdata_to_dbus.gprop_type = NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_BYTES);
} else if (g_type_is_a(vtype, G_TYPE_ENUM)) { } else if (g_type_is_a(vtype, G_TYPE_ENUM)) {
p->property_type = p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_INT32, G_VARIANT_TYPE_INT32,
.gprop_to_dbus_fcn = _gprop_to_dbus_fcn_enum); .typdata_to_dbus.gprop_type = NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_ENUM);
} else if (g_type_is_a(vtype, G_TYPE_FLAGS)) { } else if (g_type_is_a(vtype, G_TYPE_FLAGS)) {
p->property_type = p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_UINT32, G_VARIANT_TYPE_UINT32,
.gprop_to_dbus_fcn = _gprop_to_dbus_fcn_flags); .typdata_to_dbus.gprop_type = NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_FLAGS);
} else } else
nm_assert_not_reached(); nm_assert_not_reached();
@ -553,6 +528,108 @@ _nm_setting_use_legacy_property(NMSetting * setting,
/*****************************************************************************/ /*****************************************************************************/
GVariant *
_nm_setting_property_to_dbus_fcn_get_boolean(const NMSettInfoSetting * sett_info,
guint property_idx,
NMConnection * connection,
NMSetting * setting,
NMConnectionSerializationFlags flags,
const NMConnectionSerializationOptions *options)
{
const NMSettInfoProperty *property_info = &sett_info->property_infos[property_idx];
gboolean val;
val = !!property_info->to_dbus_data.get_boolean(setting);
if (!property_info->to_dbus_data.including_default
&& val == NM_G_PARAM_SPEC_GET_DEFAULT_BOOLEAN(property_info->param_spec))
return NULL;
return g_variant_ref(nm_g_variant_singleton_b(val));
}
GVariant *
_nm_setting_property_to_dbus_fcn_get_string(const NMSettInfoSetting * sett_info,
guint property_idx,
NMConnection * connection,
NMSetting * setting,
NMConnectionSerializationFlags flags,
const NMConnectionSerializationOptions *options)
{
const NMSettInfoProperty *property_info = &sett_info->property_infos[property_idx];
const char * val;
/* For string properties that are implemented via this function, the default is always NULL.
* In general, having strings default to NULL is most advisable.
*
* Setting "including_default" for a string makes no sense because a
* GVariant of type "s" cannot express NULL. */
nm_assert(!NM_G_PARAM_SPEC_GET_DEFAULT_STRING(property_info->param_spec));
nm_assert(!property_info->to_dbus_data.including_default);
val = property_info->to_dbus_data.get_string(setting);
if (!val)
return NULL;
if (!val[0])
return g_variant_ref(nm_g_variant_singleton_s_empty());
return g_variant_new_string(val);
}
GVariant *
_nm_setting_property_to_dbus_fcn_gprop(const NMSettInfoSetting * sett_info,
guint property_idx,
NMConnection * connection,
NMSetting * setting,
NMConnectionSerializationFlags flags,
const NMConnectionSerializationOptions *options)
{
const NMSettInfoProperty *const property = &sett_info->property_infos[property_idx];
nm_auto_unset_gvalue GValue prop_value = {
0,
};
GArray *tmp_array;
nm_assert(property->param_spec);
nm_assert(property->property_type->to_dbus_fcn == _nm_setting_property_to_dbus_fcn_gprop);
nm_assert(property->property_type->typdata_to_dbus.gprop_type
== NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_DEFAULT
|| !property->to_dbus_data.gprop_to_dbus_fcn);
g_value_init(&prop_value, property->param_spec->value_type);
g_object_get_property(G_OBJECT(setting), property->param_spec->name, &prop_value);
if (!property->to_dbus_data.including_default
&& g_param_value_defaults(property->param_spec, &prop_value))
return NULL;
switch (property->property_type->typdata_to_dbus.gprop_type) {
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_DEFAULT:
if (property->to_dbus_data.gprop_to_dbus_fcn)
return property->to_dbus_data.gprop_to_dbus_fcn(&prop_value);
return g_dbus_gvalue_to_gvariant(&prop_value, property->property_type->dbus_type);
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_BYTES:
nm_assert(G_VALUE_HOLDS(&prop_value, G_TYPE_BYTES));
return nm_utils_gbytes_to_variant_ay(g_value_get_boxed(&prop_value));
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_ENUM:
return g_variant_new_int32(g_value_get_enum(&prop_value));
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_FLAGS:
return g_variant_new_uint32(g_value_get_flags(&prop_value));
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_GARRAY_UINT:
G_STATIC_ASSERT_EXPR(sizeof(guint) == sizeof(guint32));
nm_assert(G_VALUE_HOLDS(&prop_value, G_TYPE_ARRAY));
tmp_array = g_value_get_boxed(&prop_value);
nm_assert(tmp_array);
return nm_g_variant_new_au((const guint32 *) tmp_array->data, tmp_array->len);
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_STRDICT:
nm_assert(G_VALUE_HOLDS(&prop_value, G_TYPE_HASH_TABLE));
return nm_utils_strdict_to_variant_ass(g_value_get_boxed(&prop_value));
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_MAC_ADDRESS:
return nm_utils_hwaddr_to_dbus(g_value_get_string(&prop_value));
}
return nm_assert_unreachable_val(NULL);
}
static GVariant * static GVariant *
property_to_dbus(const NMSettInfoSetting * sett_info, property_to_dbus(const NMSettInfoSetting * sett_info,
guint property_idx, guint property_idx,
@ -560,20 +637,22 @@ property_to_dbus(const NMSettInfoSetting * sett_info,
NMSetting * setting, NMSetting * setting,
NMConnectionSerializationFlags flags, NMConnectionSerializationFlags flags,
const NMConnectionSerializationOptions *options, const NMConnectionSerializationOptions *options,
gboolean ignore_flags, gboolean ignore_flags)
gboolean ignore_default)
{ {
const NMSettInfoProperty *property = &sett_info->property_infos[property_idx]; const NMSettInfoProperty *property = &sett_info->property_infos[property_idx];
GVariant * variant; GVariant * variant;
nm_assert(property->property_type->dbus_type); nm_assert(property->property_type->dbus_type);
if (!property->param_spec) { if (!property->property_type->to_dbus_fcn) {
if (!property->property_type->to_dbus_fcn) nm_assert(!property->param_spec);
return NULL; nm_assert(!property->to_dbus_data.none);
} else if (!ignore_flags return NULL;
&& !NM_FLAGS_HAS(property->param_spec->flags, }
NM_SETTING_PARAM_TO_DBUS_IGNORE_FLAGS)) {
if (property->param_spec
&& (!ignore_flags
&& !NM_FLAGS_HAS(property->param_spec->flags, NM_SETTING_PARAM_TO_DBUS_IGNORE_FLAGS))) {
if (!NM_FLAGS_HAS(property->param_spec->flags, G_PARAM_WRITABLE)) if (!NM_FLAGS_HAS(property->param_spec->flags, G_PARAM_WRITABLE))
return NULL; return NULL;
@ -600,32 +679,10 @@ property_to_dbus(const NMSettInfoSetting * sett_info,
} }
} }
if (property->property_type->to_dbus_fcn) { variant = property->property_type
variant = property->property_type ->to_dbus_fcn(sett_info, property_idx, connection, setting, flags, options);
->to_dbus_fcn(sett_info, property_idx, connection, setting, flags, options); nm_g_variant_take_ref(variant);
nm_g_variant_take_ref(variant);
} else {
nm_auto_unset_gvalue GValue prop_value = {
0,
};
nm_assert(property->param_spec);
g_value_init(&prop_value, property->param_spec->value_type);
g_object_get_property(G_OBJECT(setting), property->param_spec->name, &prop_value);
if (ignore_default && g_param_value_defaults(property->param_spec, &prop_value))
return NULL;
if (property->property_type->gprop_to_dbus_fcn) {
variant = property->property_type->gprop_to_dbus_fcn(&prop_value);
nm_g_variant_take_ref(variant);
} else
variant = g_dbus_gvalue_to_gvariant(&prop_value, property->property_type->dbus_type);
}
nm_assert(!variant || !g_variant_is_floating(variant));
nm_assert(!variant || g_variant_is_of_type(variant, property->property_type->dbus_type)); nm_assert(!variant || g_variant_is_of_type(variant, property->property_type->dbus_type));
return variant; return variant;
@ -711,8 +768,7 @@ _nm_setting_to_dbus(NMSetting * setting,
for (i = 0; i < sett_info->property_infos_len; i++) { for (i = 0; i < sett_info->property_infos_len; i++) {
gs_unref_variant GVariant *dbus_value = NULL; gs_unref_variant GVariant *dbus_value = NULL;
dbus_value = dbus_value = property_to_dbus(sett_info, i, connection, setting, flags, options, FALSE);
property_to_dbus(sett_info, i, connection, setting, flags, options, FALSE, TRUE);
if (dbus_value) { if (dbus_value) {
g_variant_builder_add(&builder, "{sv}", sett_info->property_infos[i].name, dbus_value); g_variant_builder_add(&builder, "{sv}", sett_info->property_infos[i].name, dbus_value);
} }
@ -1348,7 +1404,6 @@ compare_property(const NMSettInfoSetting *sett_info,
set_a, set_a,
NM_CONNECTION_SERIALIZE_ALL, NM_CONNECTION_SERIALIZE_ALL,
NULL, NULL,
TRUE,
TRUE); TRUE);
value2 = property_to_dbus(sett_info, value2 = property_to_dbus(sett_info,
property_idx, property_idx,
@ -1356,7 +1411,6 @@ compare_property(const NMSettInfoSetting *sett_info,
set_b, set_b,
NM_CONNECTION_SERIALIZE_ALL, NM_CONNECTION_SERIALIZE_ALL,
NULL, NULL,
TRUE,
TRUE); TRUE);
if (nm_property_compare(value1, value2) != 0) if (nm_property_compare(value1, value2) != 0)
return NM_TERNARY_FALSE; return NM_TERNARY_FALSE;
@ -2322,28 +2376,36 @@ _nm_setting_get_deprecated_virtual_interface_name(const NMSettInfoSetting *
return NULL; return NULL;
} }
const NMSettInfoPropertType nm_sett_info_propert_type_deprecated_interface_name = { const NMSettInfoPropertType nm_sett_info_propert_type_deprecated_interface_name =
.dbus_type = G_VARIANT_TYPE_STRING, NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(G_VARIANT_TYPE_STRING,
.to_dbus_fcn = _nm_setting_get_deprecated_virtual_interface_name, .to_dbus_fcn =
}; _nm_setting_get_deprecated_virtual_interface_name, );
const NMSettInfoPropertType nm_sett_info_propert_type_deprecated_ignore_i = { const NMSettInfoPropertType nm_sett_info_propert_type_deprecated_ignore_i =
.dbus_type = G_VARIANT_TYPE_INT32, NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(
/* No functions set. This property type is to silently ignore the value on D-Bus. */ G_VARIANT_TYPE_INT32,
}; /* No functions set. This property type is to silently ignore the value on D-Bus. */
);
const NMSettInfoPropertType nm_sett_info_propert_type_deprecated_ignore_u = { const NMSettInfoPropertType nm_sett_info_propert_type_deprecated_ignore_u =
.dbus_type = G_VARIANT_TYPE_UINT32, NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(
/* No functions set. This property type is to silently ignore the value on D-Bus. */ G_VARIANT_TYPE_UINT32,
}; /* No functions set. This property type is to silently ignore the value on D-Bus. */
);
const NMSettInfoPropertType nm_sett_info_propert_type_plain_i = { const NMSettInfoPropertType nm_sett_info_propert_type_plain_i =
.dbus_type = G_VARIANT_TYPE_INT32, NM_SETT_INFO_PROPERT_TYPE_GPROP_INIT(G_VARIANT_TYPE_INT32);
};
const NMSettInfoPropertType nm_sett_info_propert_type_plain_u = { const NMSettInfoPropertType nm_sett_info_propert_type_plain_u =
.dbus_type = G_VARIANT_TYPE_UINT32, NM_SETT_INFO_PROPERT_TYPE_GPROP_INIT(G_VARIANT_TYPE_UINT32);
};
const NMSettInfoPropertType nm_sett_info_propert_type_boolean = NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(
G_VARIANT_TYPE_BOOLEAN,
.to_dbus_fcn = _nm_setting_property_to_dbus_fcn_get_boolean);
const NMSettInfoPropertType nm_sett_info_propert_type_string =
NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(G_VARIANT_TYPE_STRING,
.to_dbus_fcn = _nm_setting_property_to_dbus_fcn_get_string);
/*****************************************************************************/ /*****************************************************************************/

View file

@ -2786,31 +2786,27 @@ _nm_team_settings_property_from_dbus_link_watchers(GVariant *dbus_value, GValue
_nm_utils_team_link_watchers_from_variant(dbus_value, FALSE, NULL)); _nm_utils_team_link_watchers_from_variant(dbus_value, FALSE, NULL));
} }
const NMSettInfoPropertType nm_sett_info_propert_type_team_b = { const NMSettInfoPropertType nm_sett_info_propert_type_team_b =
.dbus_type = G_VARIANT_TYPE_BOOLEAN, NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(G_VARIANT_TYPE_BOOLEAN,
.to_dbus_fcn = _nm_team_settings_property_to_dbus, .to_dbus_fcn = _nm_team_settings_property_to_dbus, );
};
const NMSettInfoPropertType nm_sett_info_propert_type_team_i = { const NMSettInfoPropertType nm_sett_info_propert_type_team_i =
.dbus_type = G_VARIANT_TYPE_INT32, NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(G_VARIANT_TYPE_INT32,
.to_dbus_fcn = _nm_team_settings_property_to_dbus, .to_dbus_fcn = _nm_team_settings_property_to_dbus, );
};
const NMSettInfoPropertType nm_sett_info_propert_type_team_s = { const NMSettInfoPropertType nm_sett_info_propert_type_team_s =
.dbus_type = G_VARIANT_TYPE_STRING, NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(G_VARIANT_TYPE_STRING,
.to_dbus_fcn = _nm_team_settings_property_to_dbus, .to_dbus_fcn = _nm_team_settings_property_to_dbus, );
};
const NMSettInfoPropertType nm_sett_info_propert_type_team_as = { const NMSettInfoPropertType nm_sett_info_propert_type_team_as =
.dbus_type = NM_G_VARIANT_TYPE("as"), NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(NM_G_VARIANT_TYPE("as"),
.to_dbus_fcn = _nm_team_settings_property_to_dbus, .to_dbus_fcn = _nm_team_settings_property_to_dbus, );
};
const NMSettInfoPropertType nm_sett_info_propert_type_team_link_watchers = { const NMSettInfoPropertType nm_sett_info_propert_type_team_link_watchers =
.dbus_type = NM_G_VARIANT_TYPE("aa{sv}"), NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(NM_G_VARIANT_TYPE("aa{sv}"),
.to_dbus_fcn = _nm_team_settings_property_to_dbus, .to_dbus_fcn = _nm_team_settings_property_to_dbus,
.gprop_from_dbus_fcn = _nm_team_settings_property_from_dbus_link_watchers, .gprop_from_dbus_fcn =
}; _nm_team_settings_property_from_dbus_link_watchers, );
/*****************************************************************************/ /*****************************************************************************/

View file

@ -758,12 +758,6 @@ _nm_utils_hash_values_to_slist(GHashTable *hash)
return list; return list;
} }
static GVariant *
_nm_utils_strdict_to_dbus(const GValue *prop_value)
{
return nm_utils_strdict_to_variant_ass(g_value_get_boxed(prop_value));
}
void void
_nm_utils_strdict_from_dbus(GVariant *dbus_value, GValue *prop_value) _nm_utils_strdict_from_dbus(GVariant *dbus_value, GValue *prop_value)
{ {
@ -779,11 +773,11 @@ _nm_utils_strdict_from_dbus(GVariant *dbus_value, GValue *prop_value)
g_value_take_boxed(prop_value, hash); g_value_take_boxed(prop_value, hash);
} }
const NMSettInfoPropertType nm_sett_info_propert_type_strdict = { const NMSettInfoPropertType nm_sett_info_propert_type_strdict =
.dbus_type = NM_G_VARIANT_TYPE("a{ss}"), NM_SETT_INFO_PROPERT_TYPE_GPROP_INIT(NM_G_VARIANT_TYPE("a{ss}"),
.gprop_to_dbus_fcn = _nm_utils_strdict_to_dbus, .gprop_from_dbus_fcn = _nm_utils_strdict_from_dbus,
.gprop_from_dbus_fcn = _nm_utils_strdict_from_dbus, .typdata_to_dbus.gprop_type =
}; NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_STRDICT);
GHashTable * GHashTable *
_nm_utils_copy_strdict(GHashTable *strdict) _nm_utils_copy_strdict(GHashTable *strdict)
@ -3994,8 +3988,8 @@ nm_utils_hwaddr_matches(gconstpointer hwaddr1,
/*****************************************************************************/ /*****************************************************************************/
static GVariant * GVariant *
_nm_utils_hwaddr_to_dbus_impl(const char *str) nm_utils_hwaddr_to_dbus(const char *str)
{ {
guint8 buf[NM_UTILS_HWADDR_LEN_MAX]; guint8 buf[NM_UTILS_HWADDR_LEN_MAX];
gsize len; gsize len;
@ -4021,7 +4015,7 @@ _nm_utils_hwaddr_cloned_get(const NMSettInfoSetting * sett_info,
nm_assert(nm_streq(sett_info->property_infos[property_idx].name, "cloned-mac-address")); nm_assert(nm_streq(sett_info->property_infos[property_idx].name, "cloned-mac-address"));
g_object_get(setting, "cloned-mac-address", &addr, NULL); g_object_get(setting, "cloned-mac-address", &addr, NULL);
return _nm_utils_hwaddr_to_dbus_impl(addr); return nm_utils_hwaddr_to_dbus(addr);
} }
static gboolean static gboolean
@ -4067,12 +4061,11 @@ _nm_utils_hwaddr_cloned_not_set(NMSetting * setting,
return TRUE; return TRUE;
} }
const NMSettInfoPropertType nm_sett_info_propert_type_cloned_mac_address = { const NMSettInfoPropertType nm_sett_info_propert_type_cloned_mac_address =
.dbus_type = G_VARIANT_TYPE_BYTESTRING, NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(G_VARIANT_TYPE_BYTESTRING,
.to_dbus_fcn = _nm_utils_hwaddr_cloned_get, .to_dbus_fcn = _nm_utils_hwaddr_cloned_get,
.from_dbus_fcn = _nm_utils_hwaddr_cloned_set, .from_dbus_fcn = _nm_utils_hwaddr_cloned_set,
.missing_from_dbus_fcn = _nm_utils_hwaddr_cloned_not_set, .missing_from_dbus_fcn = _nm_utils_hwaddr_cloned_not_set, );
};
static GVariant * static GVariant *
_nm_utils_hwaddr_cloned_data_synth(const NMSettInfoSetting * sett_info, _nm_utils_hwaddr_cloned_data_synth(const NMSettInfoSetting * sett_info,
@ -4092,7 +4085,7 @@ _nm_utils_hwaddr_cloned_data_synth(const NMSettInfoSetting * sett_
g_object_get(setting, "cloned-mac-address", &addr, NULL); g_object_get(setting, "cloned-mac-address", &addr, NULL);
/* Before introducing the extended "cloned-mac-address" (and its D-Bus /* Before introducing the extended "cloned-mac-address" (and its D-Bus
* field "assigned-mac-address"), libnm's _nm_utils_hwaddr_to_dbus() * field "assigned-mac-address"), libnm's nm_utils_hwaddr_to_dbus()
* would drop invalid values as it was unable to serialize them. * would drop invalid values as it was unable to serialize them.
* *
* Now, we would like to send invalid values as "assigned-mac-address" * Now, we would like to send invalid values as "assigned-mac-address"
@ -4131,17 +4124,10 @@ _nm_utils_hwaddr_cloned_data_set(NMSetting * setting,
return TRUE; return TRUE;
} }
const NMSettInfoPropertType nm_sett_info_propert_type_assigned_mac_address = { const NMSettInfoPropertType nm_sett_info_propert_type_assigned_mac_address =
.dbus_type = G_VARIANT_TYPE_STRING, NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(G_VARIANT_TYPE_STRING,
.to_dbus_fcn = _nm_utils_hwaddr_cloned_data_synth, .to_dbus_fcn = _nm_utils_hwaddr_cloned_data_synth,
.from_dbus_fcn = _nm_utils_hwaddr_cloned_data_set, .from_dbus_fcn = _nm_utils_hwaddr_cloned_data_set, );
};
static GVariant *
_nm_utils_hwaddr_to_dbus(const GValue *prop_value)
{
return _nm_utils_hwaddr_to_dbus_impl(g_value_get_string(prop_value));
}
static void static void
_nm_utils_hwaddr_from_dbus(GVariant *dbus_value, GValue *prop_value) _nm_utils_hwaddr_from_dbus(GVariant *dbus_value, GValue *prop_value)
@ -4154,11 +4140,11 @@ _nm_utils_hwaddr_from_dbus(GVariant *dbus_value, GValue *prop_value)
g_value_take_string(prop_value, str); g_value_take_string(prop_value, str);
} }
const NMSettInfoPropertType nm_sett_info_propert_type_mac_address = { const NMSettInfoPropertType nm_sett_info_propert_type_mac_address =
.dbus_type = G_VARIANT_TYPE_BYTESTRING, NM_SETT_INFO_PROPERT_TYPE_GPROP_INIT(
.gprop_to_dbus_fcn = _nm_utils_hwaddr_to_dbus, G_VARIANT_TYPE_BYTESTRING,
.gprop_from_dbus_fcn = _nm_utils_hwaddr_from_dbus, .gprop_from_dbus_fcn = _nm_utils_hwaddr_from_dbus,
}; .typdata_to_dbus.gprop_type = NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_MAC_ADDRESS);
/*****************************************************************************/ /*****************************************************************************/
@ -5558,11 +5544,10 @@ _nm_utils_bridge_vlans_from_dbus(NMSetting * setting,
return TRUE; return TRUE;
} }
const NMSettInfoPropertType nm_sett_info_propert_type_bridge_vlans = { const NMSettInfoPropertType nm_sett_info_propert_type_bridge_vlans =
.dbus_type = NM_G_VARIANT_TYPE("aa{sv}"), NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(NM_G_VARIANT_TYPE("aa{sv}"),
.to_dbus_fcn = _nm_utils_bridge_vlans_to_dbus, .to_dbus_fcn = _nm_utils_bridge_vlans_to_dbus,
.from_dbus_fcn = _nm_utils_bridge_vlans_from_dbus, .from_dbus_fcn = _nm_utils_bridge_vlans_from_dbus, );
};
gboolean gboolean
_nm_utils_bridge_vlan_verify_list(GPtrArray * vlans, _nm_utils_bridge_vlan_verify_list(GPtrArray * vlans,

View file

@ -4358,6 +4358,7 @@ test_setting_metadata(void)
const NMSettInfoProperty *sip = &sis->property_infos[prop_idx]; const NMSettInfoProperty *sip = &sis->property_infos[prop_idx];
GArray * property_types_data; GArray * property_types_data;
guint prop_idx_val; guint prop_idx_val;
gboolean can_set_including_default = FALSE;
g_assert(sip->name); g_assert(sip->name);
@ -4368,7 +4369,57 @@ test_setting_metadata(void)
g_assert(sip->property_type->dbus_type); g_assert(sip->property_type->dbus_type);
g_assert(g_variant_type_string_is_valid((const char *) sip->property_type->dbus_type)); g_assert(g_variant_type_string_is_valid((const char *) sip->property_type->dbus_type));
g_assert(!sip->property_type->to_dbus_fcn || !sip->property_type->gprop_to_dbus_fcn); if (!sip->property_type->to_dbus_fcn) {
/* it's allowed to have no to_dbus_fcn(), to ignore a property. But such
* properties must not have a param_spec and no gprop_to_dbus_fcn. */
g_assert(!sip->param_spec);
g_assert(!sip->to_dbus_data.none);
} else if (sip->property_type->to_dbus_fcn == _nm_setting_property_to_dbus_fcn_gprop) {
g_assert(sip->param_spec);
switch (sip->property_type->typdata_to_dbus.gprop_type) {
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_BYTES:
g_assert(sip->param_spec->value_type == G_TYPE_BYTES);
goto check_done;
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_ENUM:
g_assert(g_type_is_a (sip->param_spec->value_type, G_TYPE_ENUM));
goto check_done;
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_FLAGS:
g_assert(g_type_is_a (sip->param_spec->value_type, G_TYPE_FLAGS));
goto check_done;
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_GARRAY_UINT:
g_assert(sip->param_spec->value_type == G_TYPE_ARRAY);
goto check_done;
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_STRDICT:
g_assert(sip->param_spec->value_type == G_TYPE_HASH_TABLE);
goto check_done;
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_MAC_ADDRESS:
g_assert(sip->param_spec->value_type == G_TYPE_STRING);
goto check_done;
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_DEFAULT:
goto check_done;
}
g_assert_not_reached();
check_done:;
if (sip->property_type->typdata_to_dbus.gprop_type
!= NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_DEFAULT)
g_assert(!sip->to_dbus_data.gprop_to_dbus_fcn);
can_set_including_default = TRUE;
} else if (sip->property_type->to_dbus_fcn
== _nm_setting_property_to_dbus_fcn_get_boolean) {
g_assert(sip->param_spec);
g_assert(sip->param_spec->value_type == G_TYPE_BOOLEAN);
g_assert(sip->to_dbus_data.get_boolean);
can_set_including_default = TRUE;
} else if (sip->property_type->to_dbus_fcn
== _nm_setting_property_to_dbus_fcn_get_string) {
g_assert(sip->param_spec);
g_assert(sip->param_spec->value_type == G_TYPE_STRING);
g_assert(sip->to_dbus_data.get_string);
}
if (!can_set_including_default)
g_assert(!sip->to_dbus_data.including_default);
g_assert(!sip->property_type->from_dbus_fcn g_assert(!sip->property_type->from_dbus_fcn
|| !sip->property_type->gprop_from_dbus_fcn); || !sip->property_type->gprop_from_dbus_fcn);
@ -4486,8 +4537,11 @@ test_setting_metadata(void)
|| pt->to_dbus_fcn != pt_2->to_dbus_fcn || pt->to_dbus_fcn != pt_2->to_dbus_fcn
|| pt->from_dbus_fcn != pt_2->from_dbus_fcn || pt->from_dbus_fcn != pt_2->from_dbus_fcn
|| pt->missing_from_dbus_fcn != pt_2->missing_from_dbus_fcn || pt->missing_from_dbus_fcn != pt_2->missing_from_dbus_fcn
|| pt->gprop_to_dbus_fcn != pt_2->gprop_to_dbus_fcn || pt->gprop_from_dbus_fcn != pt_2->gprop_from_dbus_fcn
|| pt->gprop_from_dbus_fcn != pt_2->gprop_from_dbus_fcn) || memcmp(&pt->typdata_to_dbus,
&pt_2->typdata_to_dbus,
sizeof(pt->typdata_to_dbus))
!= 0)
continue; continue;
if ((pt == &nm_sett_info_propert_type_plain_i if ((pt == &nm_sett_info_propert_type_plain_i
@ -4509,7 +4563,9 @@ test_setting_metadata(void)
/* the property-types with same content should all be shared. Here we have two that /* the property-types with same content should all be shared. Here we have two that
* are the same content, but different instances. Bug. */ * are the same content, but different instances. Bug. */
g_error("The identical property type for D-Bus type \"%s\" is used by: %s and %s", g_error("The identical property type for D-Bus type \"%s\" is used by: %s and %s. "
"If a NMSettInfoPropertType is identical, it should be shared by creating "
"a common instance of the property type",
(const char *) pt->dbus_type, (const char *) pt->dbus_type,
_PROP_IDX_OWNER(h_property_types, pt), _PROP_IDX_OWNER(h_property_types, pt),
_PROP_IDX_OWNER(h_property_types, pt_2)); _PROP_IDX_OWNER(h_property_types, pt_2));

View file

@ -642,6 +642,10 @@ GVariant * nm_ip_routing_rule_to_dbus(const NMIPRoutingRule *self);
/*****************************************************************************/ /*****************************************************************************/
GVariant *nm_utils_hwaddr_to_dbus(const char *str);
/*****************************************************************************/
typedef struct _NMSettInfoSetting NMSettInfoSetting; typedef struct _NMSettInfoSetting NMSettInfoSetting;
typedef struct _NMSettInfoProperty NMSettInfoProperty; typedef struct _NMSettInfoProperty NMSettInfoProperty;
@ -667,6 +671,16 @@ typedef void (*NMSettInfoPropGPropFromDBusFcn)(GVariant *from, GValue *to);
const NMSettInfoSetting *nmtst_sett_info_settings(void); const NMSettInfoSetting *nmtst_sett_info_settings(void);
typedef enum _nm_packed {
NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_DEFAULT = 0,
NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_BYTES,
NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_ENUM,
NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_FLAGS,
NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_GARRAY_UINT,
NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_STRDICT,
NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_MAC_ADDRESS,
} NMSettingPropertyToDBusFcnGPropType;
typedef struct { typedef struct {
const GVariantType *dbus_type; const GVariantType *dbus_type;
@ -674,10 +688,16 @@ typedef struct {
NMSettInfoPropFromDBusFcn from_dbus_fcn; NMSettInfoPropFromDBusFcn from_dbus_fcn;
NMSettInfoPropMissingFromDBusFcn missing_from_dbus_fcn; NMSettInfoPropMissingFromDBusFcn missing_from_dbus_fcn;
/* Simpler variants of @to_dbus_fcn/@from_dbus_fcn that operate solely /* Simpler variants of @from_dbus_fcn that operate solely
* on the GValue value of the GObject property. */ * on the GValue value of the GObject property. */
NMSettInfoPropGPropToDBusFcn gprop_to_dbus_fcn;
NMSettInfoPropGPropFromDBusFcn gprop_from_dbus_fcn; NMSettInfoPropGPropFromDBusFcn gprop_from_dbus_fcn;
struct {
union {
NMSettingPropertyToDBusFcnGPropType gprop_type;
};
} typdata_to_dbus;
} NMSettInfoPropertType; } NMSettInfoPropertType;
struct _NMSettInfoProperty { struct _NMSettInfoProperty {
@ -686,6 +706,21 @@ struct _NMSettInfoProperty {
GParamSpec *param_spec; GParamSpec *param_spec;
const NMSettInfoPropertType *property_type; const NMSettInfoPropertType *property_type;
struct {
union {
gpointer none;
NMSettInfoPropGPropToDBusFcn gprop_to_dbus_fcn;
gboolean (*get_boolean)(NMSetting *);
const char *(*get_string)(NMSetting *);
};
/* Usually, properties that are set to the default value for the GParamSpec
* are not serialized to GVariant (and NULL is returned by to_dbus_data().
* Set this flag to force always converting the property even if the value
* is the default. */
bool including_default : 1;
} to_dbus_data;
}; };
typedef struct { typedef struct {

View file

@ -529,24 +529,26 @@ nm_utils_gbytes_to_variant_ay(GBytes *bytes)
/*****************************************************************************/ /*****************************************************************************/
#define _variant_singleton_get(create_variant) \ #define _variant_singleton_get(create_variant) \
({ \ ({ \
static GVariant *_singleton = NULL; \ static GVariant *_singleton = NULL; \
GVariant * _v; \ GVariant * _v; \
\ \
again: \ while (TRUE) { \
_v = g_atomic_pointer_get(&_singleton); \ _v = g_atomic_pointer_get(&_singleton); \
if (G_UNLIKELY(!_v)) { \ if (G_UNLIKELY(!_v)) { \
_v = (create_variant); \ _v = (create_variant); \
nm_assert(_v); \ nm_assert(_v); \
nm_assert(g_variant_is_floating(_v)); \ nm_assert(g_variant_is_floating(_v)); \
g_variant_ref_sink(_v); \ g_variant_ref_sink(_v); \
if (!g_atomic_pointer_compare_and_exchange(&_singleton, NULL, _v)) { \ if (!g_atomic_pointer_compare_and_exchange(&_singleton, NULL, _v)) { \
g_variant_unref(_v); \ g_variant_unref(_v); \
goto again; \ continue; \
} \ } \
} \ } \
_v; \ break; \
} \
_v; \
}) })
GVariant * GVariant *
@ -555,6 +557,19 @@ nm_g_variant_singleton_u_0(void)
return _variant_singleton_get(g_variant_new_uint32(0)); return _variant_singleton_get(g_variant_new_uint32(0));
} }
GVariant *
nm_g_variant_singleton_b(gboolean value)
{
return value ? _variant_singleton_get(g_variant_new_boolean(TRUE))
: _variant_singleton_get(g_variant_new_boolean(FALSE));
}
GVariant *
nm_g_variant_singleton_s_empty(void)
{
return _variant_singleton_get(g_variant_new_string(""));
}
static GVariant * static GVariant *
_variant_singleton_get_array_init(GVariant **p_singleton, const char *variant_type) _variant_singleton_get_array_init(GVariant **p_singleton, const char *variant_type)
{ {

View file

@ -1425,6 +1425,8 @@ GParamSpec *nm_g_object_class_find_property_from_gtype(GType gtype, const char *
_NM_G_PARAM_SPEC_CAST(param_spec, G_TYPE_UINT, GParamSpecUInt) _NM_G_PARAM_SPEC_CAST(param_spec, G_TYPE_UINT, GParamSpecUInt)
#define NM_G_PARAM_SPEC_CAST_UINT64(param_spec) \ #define NM_G_PARAM_SPEC_CAST_UINT64(param_spec) \
_NM_G_PARAM_SPEC_CAST(param_spec, G_TYPE_UINT64, GParamSpecUInt64) _NM_G_PARAM_SPEC_CAST(param_spec, G_TYPE_UINT64, GParamSpecUInt64)
#define NM_G_PARAM_SPEC_CAST_STRING(param_spec) \
_NM_G_PARAM_SPEC_CAST(param_spec, G_TYPE_STRING, GParamSpecString)
#define NM_G_PARAM_SPEC_GET_DEFAULT_BOOLEAN(param_spec) \ #define NM_G_PARAM_SPEC_GET_DEFAULT_BOOLEAN(param_spec) \
(NM_G_PARAM_SPEC_CAST_BOOLEAN(NM_ENSURE_NOT_NULL(param_spec))->default_value) (NM_G_PARAM_SPEC_CAST_BOOLEAN(NM_ENSURE_NOT_NULL(param_spec))->default_value)
@ -1432,6 +1434,8 @@ GParamSpec *nm_g_object_class_find_property_from_gtype(GType gtype, const char *
(NM_G_PARAM_SPEC_CAST_UINT(NM_ENSURE_NOT_NULL(param_spec))->default_value) (NM_G_PARAM_SPEC_CAST_UINT(NM_ENSURE_NOT_NULL(param_spec))->default_value)
#define NM_G_PARAM_SPEC_GET_DEFAULT_UINT64(param_spec) \ #define NM_G_PARAM_SPEC_GET_DEFAULT_UINT64(param_spec) \
(NM_G_PARAM_SPEC_CAST_UINT64(NM_ENSURE_NOT_NULL(param_spec))->default_value) (NM_G_PARAM_SPEC_CAST_UINT64(NM_ENSURE_NOT_NULL(param_spec))->default_value)
#define NM_G_PARAM_SPEC_GET_DEFAULT_STRING(param_spec) \
(NM_G_PARAM_SPEC_CAST_STRING(NM_ENSURE_NOT_NULL(param_spec))->default_value)
/*****************************************************************************/ /*****************************************************************************/
@ -1487,7 +1491,9 @@ char *nm_utils_str_utf8safe_unescape_cp(const char *str, NMUtilsStrUtf8SafeFlags
char *nm_utils_str_utf8safe_escape_take(char *str, NMUtilsStrUtf8SafeFlags flags); char *nm_utils_str_utf8safe_escape_take(char *str, NMUtilsStrUtf8SafeFlags flags);
GVariant *nm_g_variant_singleton_b(gboolean value);
GVariant *nm_g_variant_singleton_u_0(void); GVariant *nm_g_variant_singleton_u_0(void);
GVariant *nm_g_variant_singleton_s_empty(void);
GVariant *nm_g_variant_singleton_aLsvI(void); GVariant *nm_g_variant_singleton_aLsvI(void);
GVariant *nm_g_variant_singleton_aLsaLsvII(void); GVariant *nm_g_variant_singleton_aLsaLsvII(void);
GVariant *nm_g_variant_singleton_aaLsvI(void); GVariant *nm_g_variant_singleton_aaLsvI(void);