diff --git a/contrib/scripts/checkpatch.pl b/contrib/scripts/checkpatch.pl
index 330f452c13..57460522b8 100755
--- a/contrib/scripts/checkpatch.pl
+++ b/contrib/scripts/checkpatch.pl
@@ -197,6 +197,7 @@ complain ("Don't use strcmp/g_strcmp0 unless you need to sort. Consider nm_streq
complain ("Don't use API that uses the numeric source id. Instead, use GSource and API like nm_g_idle_add(), nm_g_idle_add_source(), nm_clear_g_source_inst(), etc.") if $line =~ /\b(g_idle_add|g_idle_add_full|g_timeout_add|g_timeout_add_seconds|g_source_remove|nm_clear_g_source)\b/;
complain ("Prefer g_snprintf() over snprintf() (for consistency)") if $line =~ /\b(snprintf)\b/;
complain ("Avoid g_clear_pointer() and use nm_clear_pointer() (or nm_clear_g_free(), g_clear_object(), etc.)") if $line =~ /\b(g_clear_pointer)\b/;
+complain ("Define setting properties with _nm_setting_property_define_direct_*() API") if $line =~ /g_param_spec_/ and $filename =~ /\/libnm-core-impl\/nm-setting/;
#complain ("Use spaces instead of tabs") if $line =~ /\t/;
# Further on we process stuff without comments.
diff --git a/src/core/devices/wifi/nm-device-wifi.c b/src/core/devices/wifi/nm-device-wifi.c
index 6052187488..82896c778e 100644
--- a/src/core/devices/wifi/nm-device-wifi.c
+++ b/src/core/devices/wifi/nm-device-wifi.c
@@ -322,7 +322,7 @@ _scan_request_ssids_track(NMDeviceWifiPrivate *priv, const GPtrArray *ssids)
now_msec = nm_utils_get_monotonic_timestamp_msec();
if (!priv->scan_request_ssids_hash)
- priv->scan_request_ssids_hash = g_hash_table_new(nm_pgbytes_hash, nm_pgbytes_equal);
+ priv->scan_request_ssids_hash = g_hash_table_new(nm_pg_bytes_hash, nm_pg_bytes_equal);
/* Do a little dance. New elements shall keep their order as in @ssids, but all
* new elements should be sorted in the list preexisting elements of the list.
@@ -1569,7 +1569,7 @@ _scan_request_ssids_build_hidden(NMDeviceWifi *self,
if (ssids) {
if (ssids->len < max_scan_ssids) {
/* Add wildcard SSID using a static wildcard SSID used for every scan */
- g_ptr_array_insert(ssids, 0, g_bytes_ref(nm_gbytes_get_empty()));
+ g_ptr_array_insert(ssids, 0, g_bytes_ref(nm_g_bytes_get_empty()));
}
if (ssids->len >= max_scan_ssids) {
/* there is no more space. Use what we have. */
@@ -1590,10 +1590,10 @@ _scan_request_ssids_build_hidden(NMDeviceWifi *self,
if (!ssids) {
ssids = g_ptr_array_new_full(max_scan_ssids, (GDestroyNotify) g_bytes_unref);
/* Add wildcard SSID using a static wildcard SSID used for every scan */
- g_ptr_array_insert(ssids, 0, g_bytes_ref(nm_gbytes_get_empty()));
+ g_ptr_array_insert(ssids, 0, g_bytes_ref(nm_g_bytes_get_empty()));
}
- unique_ssids = g_hash_table_new(nm_gbytes_hash, nm_gbytes_equal);
+ unique_ssids = g_hash_table_new(nm_g_bytes_hash, nm_g_bytes_equal);
for (i = 1; i < ssids->len; i++) {
if (!g_hash_table_add(unique_ssids, ssids->pdata[i]))
nm_assert_not_reached();
diff --git a/src/core/devices/wifi/nm-wifi-ap.c b/src/core/devices/wifi/nm-wifi-ap.c
index 20ed6833ab..72a6088504 100644
--- a/src/core/devices/wifi/nm-wifi-ap.c
+++ b/src/core/devices/wifi/nm-wifi-ap.c
@@ -669,7 +669,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
g_value_set_uint(value, priv->rsn_flags);
break;
case PROP_SSID:
- g_value_take_variant(value, nm_utils_gbytes_to_variant_ay(priv->ssid));
+ g_value_take_variant(value, nm_g_bytes_to_variant_ay(priv->ssid));
break;
case PROP_FREQUENCY:
g_value_set_uint(value, priv->freq);
diff --git a/src/core/devices/wifi/nm-wifi-p2p-peer.c b/src/core/devices/wifi/nm-wifi-p2p-peer.c
index 5afa172f0d..ac13952db2 100644
--- a/src/core/devices/wifi/nm-wifi-p2p-peer.c
+++ b/src/core/devices/wifi/nm-wifi-p2p-peer.c
@@ -268,7 +268,7 @@ nm_wifi_p2p_peer_set_wfd_ies(NMWifiP2PPeer *peer, GBytes *wfd_ies)
priv = NM_WIFI_P2P_PEER_GET_PRIVATE(peer);
- if (nm_gbytes_equal0(priv->wfd_ies, wfd_ies))
+ if (nm_g_bytes_equal0(priv->wfd_ies, wfd_ies))
return FALSE;
wfd_ies_old = g_steal_pointer(&priv->wfd_ies);
@@ -509,7 +509,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
g_value_set_string(value, priv->serial);
break;
case PROP_WFD_IES:
- g_value_take_variant(value, nm_utils_gbytes_to_variant_ay(priv->wfd_ies));
+ g_value_take_variant(value, nm_g_bytes_to_variant_ay(priv->wfd_ies));
break;
case PROP_HW_ADDRESS:
g_value_set_string(value, priv->address);
diff --git a/src/core/devices/wifi/tests/test-devices-wifi.c b/src/core/devices/wifi/tests/test-devices-wifi.c
index dc278c947b..5d1167cff9 100644
--- a/src/core/devices/wifi/tests/test-devices-wifi.c
+++ b/src/core/devices/wifi/tests/test-devices-wifi.c
@@ -1445,7 +1445,7 @@ do_test_ssids_options_to_ptrarray(const char *const *ssids)
const char *ssid = ssids[i];
GBytes * bytes = ssids_arr->pdata[i];
- g_assert(nm_utils_gbytes_equal_mem(bytes, ssid, strlen(ssid)));
+ g_assert(nm_g_bytes_equal_mem(bytes, ssid, strlen(ssid)));
}
}
diff --git a/src/core/dhcp/tests/test-dhcp-dhclient.c b/src/core/dhcp/tests/test-dhcp-dhclient.c
index e9a6209644..9c6865cc8c 100644
--- a/src/core/dhcp/tests/test-dhcp-dhclient.c
+++ b/src/core/dhcp/tests/test-dhcp-dhclient.c
@@ -830,7 +830,7 @@ test_one_duid(const char *escaped, const guint8 *unescaped, guint len)
t1 = nm_dhcp_dhclient_unescape_duid(escaped);
g_assert(t1);
- g_assert(nm_utils_gbytes_equal_mem(t1, unescaped, len));
+ g_assert(nm_g_bytes_equal_mem(t1, unescaped, len));
t2 = g_bytes_new(unescaped, len);
w = nm_dhcp_dhclient_escape_duid(t2);
@@ -879,7 +879,7 @@ test_read_duid_from_leasefile(void)
duid = nm_dhcp_dhclient_read_duid(TEST_DIR "/test-dhclient-duid.leases", &error);
nmtst_assert_success(duid, error);
- g_assert(nm_utils_gbytes_equal_mem(duid, expected, G_N_ELEMENTS(expected)));
+ g_assert(nm_g_bytes_equal_mem(duid, expected, G_N_ELEMENTS(expected)));
}
static void
diff --git a/src/core/nm-dcb.c b/src/core/nm-dcb.c
index 0b995ebf78..f048d99944 100644
--- a/src/core/nm-dcb.c
+++ b/src/core/nm-dcb.c
@@ -258,7 +258,8 @@ _fcoe_setup(const char * iface,
flags = nm_setting_dcb_get_app_fcoe_flags(s_dcb);
if (flags & NM_SETTING_DCB_FLAG_ENABLE) {
- const char *mode = nm_setting_dcb_get_app_fcoe_mode(s_dcb);
+ const char *mode =
+ nm_setting_dcb_get_app_fcoe_mode(s_dcb) ?: NM_SETTING_DCB_FCOE_MODE_FABRIC;
if (!do_helper(NULL, FCOEADM, run_func, user_data, error, "-m %s -c %s", mode, iface))
return FALSE;
diff --git a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
index 93491cf1a4..6dd5ef0502 100644
--- a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
+++ b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
@@ -3030,6 +3030,7 @@ make_dcb_setting(shvarFile *ifcfg, NMSetting **out_setting, GError **error)
gs_unref_object NMSettingDcb *s_dcb = NULL;
gboolean dcb_on;
NMSettingDcbFlags flags = NM_SETTING_DCB_FLAG_NONE;
+ gs_free char * val = NULL;
g_return_val_if_fail(out_setting, FALSE);
*out_setting = NULL;
@@ -3049,21 +3050,18 @@ make_dcb_setting(shvarFile *ifcfg, NMSetting **out_setting, GError **error)
error)) {
return FALSE;
}
- if (nm_setting_dcb_get_app_fcoe_flags(s_dcb) & NM_SETTING_DCB_FLAG_ENABLE) {
- gs_free char *val = NULL;
- val = svGetValueStr_cp(ifcfg, KEY_DCB_APP_FCOE_MODE);
- if (val) {
- if (NM_IN_STRSET(val, NM_SETTING_DCB_FCOE_MODE_FABRIC, NM_SETTING_DCB_FCOE_MODE_VN2VN))
- g_object_set(G_OBJECT(s_dcb), NM_SETTING_DCB_APP_FCOE_MODE, val, NULL);
- else {
- PARSE_WARNING("invalid FCoE mode '%s'", val);
- g_set_error_literal(error,
- NM_SETTINGS_ERROR,
- NM_SETTINGS_ERROR_INVALID_CONNECTION,
- "invalid FCoE mode");
- return FALSE;
- }
+ val = svGetValueStr_cp(ifcfg, KEY_DCB_APP_FCOE_MODE);
+ if (val) {
+ if (NM_IN_STRSET(val, NM_SETTING_DCB_FCOE_MODE_FABRIC, NM_SETTING_DCB_FCOE_MODE_VN2VN))
+ g_object_set(G_OBJECT(s_dcb), NM_SETTING_DCB_APP_FCOE_MODE, val, NULL);
+ else {
+ PARSE_WARNING("invalid FCoE mode '%s'", val);
+ g_set_error_literal(error,
+ NM_SETTINGS_ERROR,
+ NM_SETTINGS_ERROR_INVALID_CONNECTION,
+ "invalid FCoE mode");
+ return FALSE;
}
}
diff --git a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
index 473f52929b..263c9253d8 100644
--- a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
+++ b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
@@ -2031,8 +2031,7 @@ write_dcb_setting(NMConnection *connection, shvarFile *ifcfg, GError **error)
"APP_FCOE",
nm_setting_dcb_get_app_fcoe_flags(s_dcb),
nm_setting_dcb_get_app_fcoe_priority(s_dcb));
- if (nm_setting_dcb_get_app_fcoe_flags(s_dcb) & NM_SETTING_DCB_FLAG_ENABLE)
- svSetValueStr(ifcfg, KEY_DCB_APP_FCOE_MODE, nm_setting_dcb_get_app_fcoe_mode(s_dcb));
+ svSetValueStr(ifcfg, KEY_DCB_APP_FCOE_MODE, nm_setting_dcb_get_app_fcoe_mode(s_dcb));
write_dcb_app(ifcfg,
"APP_ISCSI",
diff --git a/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-dcb-test.cexpected b/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-dcb-test.cexpected
index 56e233cc60..fef36f2fa8 100644
--- a/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-dcb-test.cexpected
+++ b/src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-dcb-test.cexpected
@@ -4,7 +4,6 @@ DCB_APP_FCOE_ENABLE=yes
DCB_APP_FCOE_ADVERTISE=yes
DCB_APP_FCOE_WILLING=yes
DCB_APP_FCOE_PRIORITY=5
-DCB_APP_FCOE_MODE=fabric
DCB_APP_ISCSI_ENABLE=yes
DCB_APP_ISCSI_ADVERTISE=yes
DCB_APP_ISCSI_WILLING=yes
diff --git a/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
index 8bf0ac39a4..b1cfdfec99 100644
--- a/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
+++ b/src/core/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
@@ -3085,7 +3085,7 @@ test_read_wifi_wpa_psk_hex(void)
ssid = nm_setting_wireless_get_ssid(s_wifi);
g_assert(ssid);
- g_assert(nm_utils_gbytes_equal_mem(ssid, expected_ssid, strlen(expected_ssid)));
+ g_assert(nm_g_bytes_equal_mem(ssid, expected_ssid, strlen(expected_ssid)));
s_wsec = nmtst_connection_assert_setting(connection, NM_TYPE_SETTING_WIRELESS_SECURITY);
g_assert_cmpstr(nm_setting_wireless_security_get_key_mgmt(s_wsec), ==, "wpa-psk");
diff --git a/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c b/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c
index a13c25864f..4ceed49da9 100644
--- a/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c
+++ b/src/core/settings/plugins/keyfile/tests/test-keyfile-settings.c
@@ -992,7 +992,7 @@ test_read_intlike_ssid(void)
ssid = nm_setting_wireless_get_ssid(s_wifi);
g_assert(ssid);
- g_assert(nm_utils_gbytes_equal_mem(ssid, expected_ssid, strlen(expected_ssid)));
+ g_assert(nm_g_bytes_equal_mem(ssid, expected_ssid, strlen(expected_ssid)));
}
static void
@@ -1010,7 +1010,7 @@ test_read_intlike_ssid_2(void)
ssid = nm_setting_wireless_get_ssid(s_wifi);
g_assert(ssid);
- g_assert(nm_utils_gbytes_equal_mem(ssid, expected_ssid, strlen(expected_ssid)));
+ g_assert(nm_g_bytes_equal_mem(ssid, expected_ssid, strlen(expected_ssid)));
}
static void
@@ -1774,7 +1774,7 @@ test_write_wired_8021x_tls_connection_blob(void)
password_raw = nm_setting_802_1x_get_password_raw(s_8021x);
g_assert(password_raw);
- g_assert(nm_utils_gbytes_equal_mem(password_raw, PASSWORD_RAW, NM_STRLEN(PASSWORD_RAW)));
+ g_assert(nm_g_bytes_equal_mem(password_raw, PASSWORD_RAW, NM_STRLEN(PASSWORD_RAW)));
unlink(testfile);
@@ -2160,7 +2160,7 @@ test_read_new_wireless_group_names(void)
ssid = nm_setting_wireless_get_ssid(s_wifi);
g_assert(ssid);
- g_assert(nm_utils_gbytes_equal_mem(ssid, expected_ssid, strlen(expected_ssid)));
+ g_assert(nm_g_bytes_equal_mem(ssid, expected_ssid, strlen(expected_ssid)));
g_assert_cmpstr(nm_setting_wireless_get_mode(s_wifi), ==, NM_SETTING_WIRELESS_MODE_INFRA);
diff --git a/src/core/supplicant/nm-supplicant-interface.c b/src/core/supplicant/nm-supplicant-interface.c
index 5ddd3a2dd6..2d56b8368f 100644
--- a/src/core/supplicant/nm-supplicant-interface.c
+++ b/src/core/supplicant/nm-supplicant-interface.c
@@ -696,7 +696,7 @@ _bss_info_properties_changed(NMSupplicantInterface *self,
} else
arr_len = 0;
- if (!nm_utils_gbytes_equal_mem(bss_info->ssid, arr_data, arr_len)) {
+ if (!nm_g_bytes_equal_mem(bss_info->ssid, arr_data, arr_len)) {
_nm_unused gs_unref_bytes GBytes *old_free = g_steal_pointer(&bss_info->ssid);
bss_info->ssid = (arr_len == 0) ? NULL : g_bytes_new(arr_data, arr_len);
@@ -970,7 +970,7 @@ _peer_info_properties_changed(NMSupplicantInterface *self,
v_v = nm_g_variant_lookup_value(properties, "IEs", G_VARIANT_TYPE_BYTESTRING);
if (v_v) {
arr_data = g_variant_get_fixed_array(v_v, &arr_len, 1);
- if (!nm_utils_gbytes_equal_mem(peer_info->ies, arr_data, arr_len)) {
+ if (!nm_g_bytes_equal_mem(peer_info->ies, arr_data, arr_len)) {
_nm_unused gs_unref_bytes GBytes *old_free = g_steal_pointer(&peer_info->ies);
peer_info->ies = g_bytes_new(arr_data, arr_len);
@@ -2308,7 +2308,7 @@ assoc_add_network_cb(GObject *source, GAsyncResult *result, gpointer user_data)
self,
NM_WPAS_DBUS_IFACE_INTERFACE,
"AddBlob",
- g_variant_new("(s@ay)", blob_name, nm_utils_gbytes_to_variant_ay(blob_data)),
+ g_variant_new("(s@ay)", blob_name, nm_g_bytes_to_variant_ay(blob_data)),
G_VARIANT_TYPE("()"),
G_DBUS_CALL_FLAGS_NONE,
DBUS_TIMEOUT_MSEC,
@@ -2612,7 +2612,7 @@ nm_supplicant_interface_request_scan(NMSupplicantInterface * se
g_variant_builder_init(&ssids_builder, G_VARIANT_TYPE_BYTESTRING_ARRAY);
for (i = 0; i < ssids_len; i++) {
nm_assert(ssids[i]);
- g_variant_builder_add(&ssids_builder, "@ay", nm_utils_gbytes_to_variant_ay(ssids[i]));
+ g_variant_builder_add(&ssids_builder, "@ay", nm_g_bytes_to_variant_ay(ssids[i]));
}
g_variant_builder_add(&builder, "{sv}", "SSIDs", g_variant_builder_end(&ssids_builder));
}
diff --git a/src/core/supplicant/nm-supplicant-manager.c b/src/core/supplicant/nm-supplicant-manager.c
index e432889b7d..52beae7830 100644
--- a/src/core/supplicant/nm-supplicant-manager.c
+++ b/src/core/supplicant/nm-supplicant-manager.c
@@ -244,8 +244,7 @@ nm_supplicant_manager_set_wfd_ies(NMSupplicantManager *self, GBytes *wfd_ies)
g_variant_builder_add(¶ms, "s", NM_WPAS_DBUS_INTERFACE);
g_variant_builder_add(¶ms, "s", "WFDIEs");
- g_variant_builder_add_value(¶ms,
- g_variant_new_variant(nm_utils_gbytes_to_variant_ay(wfd_ies)));
+ g_variant_builder_add_value(¶ms, g_variant_new_variant(nm_g_bytes_to_variant_ay(wfd_ies)));
g_dbus_connection_call(priv->dbus_connection,
priv->name_owner->str,
diff --git a/src/libnm-core-impl/nm-setting-6lowpan.c b/src/libnm-core-impl/nm-setting-6lowpan.c
index fe7bf1c566..606fa8243c 100644
--- a/src/libnm-core-impl/nm-setting-6lowpan.c
+++ b/src/libnm-core-impl/nm-setting-6lowpan.c
@@ -159,8 +159,7 @@ nm_setting_6lowpan_class_init(NMSetting6LowpanClass *klass)
object_class->get_property = _nm_setting_property_get_property_direct;
object_class->set_property = _nm_setting_property_set_property_direct;
- setting_class->verify = verify;
- setting_class->finalize_direct = TRUE;
+ setting_class->verify = verify;
/**
* NMSetting6Lowpan:parent:
diff --git a/src/libnm-core-impl/nm-setting-8021x.c b/src/libnm-core-impl/nm-setting-8021x.c
index 215e044f43..103443ba49 100644
--- a/src/libnm-core-impl/nm-setting-8021x.c
+++ b/src/libnm-core-impl/nm-setting-8021x.c
@@ -131,53 +131,53 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMSetting8021x,
PROP_AUTH_TIMEOUT, );
typedef struct {
- GSList * eap; /* GSList of strings */
- char * identity;
- char * anonymous_identity;
- char * pac_file;
- GBytes * ca_cert;
- char * ca_cert_password;
- char * ca_path;
- char * subject_match;
- GSList * altsubject_matches;
- char * domain_suffix_match;
- char * domain_match;
- GBytes * client_cert;
- char * client_cert_password;
- char * phase1_peapver;
- char * phase1_peaplabel;
- char * phase1_fast_provisioning;
- char * phase2_auth;
- char * phase2_autheap;
- GBytes * phase2_ca_cert;
- char * phase2_ca_cert_password;
- char * phase2_ca_path;
- char * phase2_subject_match;
- GSList * phase2_altsubject_matches;
- char * phase2_domain_suffix_match;
- char * phase2_domain_match;
- GBytes * phase2_client_cert;
- char * phase2_client_cert_password;
- char * password;
- GBytes * password_raw;
- char * pin;
- GBytes * private_key;
- char * private_key_password;
- GBytes * phase2_private_key;
- char * phase2_private_key_password;
- int auth_timeout;
- NMSetting8021xAuthFlags phase1_auth_flags;
- NMSettingSecretFlags ca_cert_password_flags;
- NMSettingSecretFlags client_cert_password_flags;
- NMSettingSecretFlags phase2_ca_cert_password_flags;
- NMSettingSecretFlags phase2_client_cert_password_flags;
- NMSettingSecretFlags password_flags;
- NMSettingSecretFlags password_raw_flags;
- NMSettingSecretFlags pin_flags;
- NMSettingSecretFlags private_key_password_flags;
- NMSettingSecretFlags phase2_private_key_password_flags;
- bool optional;
- bool system_ca_certs;
+ GSList *eap; /* GSList of strings */
+ char * identity;
+ char * anonymous_identity;
+ char * pac_file;
+ GBytes *ca_cert;
+ char * ca_cert_password;
+ char * ca_path;
+ char * subject_match;
+ GSList *altsubject_matches;
+ char * domain_suffix_match;
+ char * domain_match;
+ GBytes *client_cert;
+ char * client_cert_password;
+ char * phase1_peapver;
+ char * phase1_peaplabel;
+ char * phase1_fast_provisioning;
+ char * phase2_auth;
+ char * phase2_autheap;
+ GBytes *phase2_ca_cert;
+ char * phase2_ca_cert_password;
+ char * phase2_ca_path;
+ char * phase2_subject_match;
+ GSList *phase2_altsubject_matches;
+ char * phase2_domain_suffix_match;
+ char * phase2_domain_match;
+ GBytes *phase2_client_cert;
+ char * phase2_client_cert_password;
+ char * password;
+ GBytes *password_raw;
+ char * pin;
+ GBytes *private_key;
+ char * private_key_password;
+ GBytes *phase2_private_key;
+ char * phase2_private_key_password;
+ guint ca_cert_password_flags;
+ guint client_cert_password_flags;
+ guint phase2_ca_cert_password_flags;
+ guint phase2_client_cert_password_flags;
+ guint password_flags;
+ guint password_raw_flags;
+ guint pin_flags;
+ guint private_key_password_flags;
+ guint phase2_private_key_password_flags;
+ guint32 phase1_auth_flags;
+ gint32 auth_timeout;
+ bool optional;
+ bool system_ca_certs;
} NMSetting8021xPrivate;
/**
@@ -594,13 +594,13 @@ _cert_impl_set(NMSetting8021x * setting,
* property to the same PKCS#12 data.
*/
if (cert && p_client_cert && format == NM_CRYPTO_FILE_FORMAT_PKCS12
- && !nm_gbytes_equal0(cert, *p_client_cert)) {
+ && !nm_g_bytes_equal0(cert, *p_client_cert)) {
g_bytes_unref(*p_client_cert);
*p_client_cert = g_bytes_ref(cert);
} else
notify_client_cert = PROP_0;
- if (p_cert && !nm_gbytes_equal0(cert, *p_cert)) {
+ if (p_cert && !nm_g_bytes_equal0(cert, *p_cert)) {
g_bytes_unref(*p_cert);
*p_cert = g_steal_pointer(&cert);
} else
@@ -2516,7 +2516,7 @@ need_secrets_sim(NMSetting8021x *self, GPtrArray *secrets, gboolean phase2)
{
NMSetting8021xPrivate *priv = NM_SETTING_802_1X_GET_PRIVATE(self);
- if (!priv->pin || !strlen(priv->pin))
+ if (nm_str_is_empty(priv->pin))
g_ptr_array_add(secrets, NM_SETTING_802_1X_PIN);
}
@@ -2755,7 +2755,7 @@ verify_ttls(NMSetting8021x *self, gboolean phase2, GError **error)
{
NMSetting8021xPrivate *priv = NM_SETTING_802_1X_GET_PRIVATE(self);
- if (!priv->identity || !strlen(priv->identity)) {
+ if (nm_str_is_empty(priv->identity)) {
if (!priv->identity) {
g_set_error_literal(error,
NM_CONNECTION_ERROR,
@@ -2797,21 +2797,18 @@ verify_identity(NMSetting8021x *self, gboolean phase2, GError **error)
{
NMSetting8021xPrivate *priv = NM_SETTING_802_1X_GET_PRIVATE(self);
- if (!priv->identity) {
- g_set_error_literal(error,
- NM_CONNECTION_ERROR,
- NM_CONNECTION_ERROR_MISSING_PROPERTY,
- _("property is missing"));
- g_prefix_error(error,
- "%s.%s: ",
- NM_SETTING_802_1X_SETTING_NAME,
- NM_SETTING_802_1X_IDENTITY);
- return FALSE;
- } else if (!strlen(priv->identity)) {
- g_set_error_literal(error,
- NM_CONNECTION_ERROR,
- NM_CONNECTION_ERROR_INVALID_PROPERTY,
- _("property is empty"));
+ if (nm_str_is_empty(priv->identity)) {
+ if (!priv->identity) {
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_MISSING_PROPERTY,
+ _("property is missing"));
+ } else {
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("property is empty"));
+ }
g_prefix_error(error,
"%s.%s: ",
NM_SETTING_802_1X_SETTING_NAME,
@@ -2833,7 +2830,7 @@ need_secrets_phase2(NMSetting8021x *self, GPtrArray *secrets, gboolean phase2)
/* Check phase2_auth and phase2_autheap */
method = priv->phase2_auth;
- if (!method && priv->phase2_autheap)
+ if (!method)
method = priv->phase2_autheap;
if (!method) {
@@ -2970,7 +2967,7 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
return FALSE;
}
- if (NM_FLAGS_ANY(priv->phase1_auth_flags, ~NM_SETTING_802_1X_AUTH_FLAGS_ALL)) {
+ if (NM_FLAGS_ANY(priv->phase1_auth_flags, ~((guint32) NM_SETTING_802_1X_AUTH_FLAGS_ALL))) {
g_set_error_literal(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -3109,146 +3106,14 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
case PROP_EAP:
g_value_take_boxed(value, _nm_utils_slist_to_strv(priv->eap, TRUE));
break;
- case PROP_IDENTITY:
- g_value_set_string(value, priv->identity);
- break;
- case PROP_ANONYMOUS_IDENTITY:
- g_value_set_string(value, priv->anonymous_identity);
- break;
- case PROP_PAC_FILE:
- g_value_set_string(value, priv->pac_file);
- break;
- case PROP_CA_CERT:
- g_value_set_boxed(value, priv->ca_cert);
- break;
- case PROP_CA_CERT_PASSWORD:
- g_value_set_string(value, priv->ca_cert_password);
- break;
- case PROP_CA_CERT_PASSWORD_FLAGS:
- g_value_set_flags(value, priv->ca_cert_password_flags);
- break;
- case PROP_CA_PATH:
- g_value_set_string(value, priv->ca_path);
- break;
- case PROP_SUBJECT_MATCH:
- g_value_set_string(value, priv->subject_match);
- break;
case PROP_ALTSUBJECT_MATCHES:
g_value_take_boxed(value, _nm_utils_slist_to_strv(priv->altsubject_matches, TRUE));
break;
- case PROP_DOMAIN_SUFFIX_MATCH:
- g_value_set_string(value, priv->domain_suffix_match);
- break;
- case PROP_DOMAIN_MATCH:
- g_value_set_string(value, priv->domain_match);
- break;
- case PROP_CLIENT_CERT:
- g_value_set_boxed(value, priv->client_cert);
- break;
- case PROP_CLIENT_CERT_PASSWORD:
- g_value_set_string(value, priv->client_cert_password);
- break;
- case PROP_CLIENT_CERT_PASSWORD_FLAGS:
- g_value_set_flags(value, priv->client_cert_password_flags);
- break;
- case PROP_PHASE1_PEAPVER:
- g_value_set_string(value, priv->phase1_peapver);
- break;
- case PROP_PHASE1_PEAPLABEL:
- g_value_set_string(value, priv->phase1_peaplabel);
- break;
- case PROP_PHASE1_FAST_PROVISIONING:
- g_value_set_string(value, priv->phase1_fast_provisioning);
- break;
- case PROP_PHASE1_AUTH_FLAGS:
- g_value_set_uint(value, priv->phase1_auth_flags);
- break;
- case PROP_PHASE2_AUTH:
- g_value_set_string(value, priv->phase2_auth);
- break;
- case PROP_PHASE2_AUTHEAP:
- g_value_set_string(value, priv->phase2_autheap);
- break;
- case PROP_PHASE2_CA_CERT:
- g_value_set_boxed(value, priv->phase2_ca_cert);
- break;
- case PROP_PHASE2_CA_CERT_PASSWORD:
- g_value_set_string(value, priv->phase2_ca_cert_password);
- break;
- case PROP_PHASE2_CA_CERT_PASSWORD_FLAGS:
- g_value_set_flags(value, priv->phase2_ca_cert_password_flags);
- break;
- case PROP_PHASE2_CA_PATH:
- g_value_set_string(value, priv->phase2_ca_path);
- break;
- case PROP_PHASE2_SUBJECT_MATCH:
- g_value_set_string(value, priv->phase2_subject_match);
- break;
case PROP_PHASE2_ALTSUBJECT_MATCHES:
g_value_take_boxed(value, _nm_utils_slist_to_strv(priv->phase2_altsubject_matches, TRUE));
break;
- case PROP_PHASE2_DOMAIN_SUFFIX_MATCH:
- g_value_set_string(value, priv->phase2_domain_suffix_match);
- break;
- case PROP_PHASE2_DOMAIN_MATCH:
- g_value_set_string(value, priv->phase2_domain_match);
- break;
- case PROP_PHASE2_CLIENT_CERT:
- g_value_set_boxed(value, priv->phase2_client_cert);
- break;
- case PROP_PHASE2_CLIENT_CERT_PASSWORD:
- g_value_set_string(value, priv->phase2_client_cert_password);
- break;
- case PROP_PHASE2_CLIENT_CERT_PASSWORD_FLAGS:
- g_value_set_flags(value, priv->phase2_client_cert_password_flags);
- break;
- case PROP_PASSWORD:
- g_value_set_string(value, priv->password);
- break;
- case PROP_PASSWORD_FLAGS:
- g_value_set_flags(value, priv->password_flags);
- break;
- case PROP_PASSWORD_RAW:
- g_value_set_boxed(value, priv->password_raw);
- break;
- case PROP_PASSWORD_RAW_FLAGS:
- g_value_set_flags(value, priv->password_raw_flags);
- break;
- case PROP_PRIVATE_KEY:
- g_value_set_boxed(value, priv->private_key);
- break;
- case PROP_PRIVATE_KEY_PASSWORD:
- g_value_set_string(value, priv->private_key_password);
- break;
- case PROP_PRIVATE_KEY_PASSWORD_FLAGS:
- g_value_set_flags(value, priv->private_key_password_flags);
- break;
- case PROP_PHASE2_PRIVATE_KEY:
- g_value_set_boxed(value, priv->phase2_private_key);
- break;
- case PROP_PHASE2_PRIVATE_KEY_PASSWORD:
- g_value_set_string(value, priv->phase2_private_key_password);
- break;
- case PROP_PHASE2_PRIVATE_KEY_PASSWORD_FLAGS:
- g_value_set_flags(value, priv->phase2_private_key_password_flags);
- break;
- case PROP_PIN:
- g_value_set_string(value, priv->pin);
- break;
- case PROP_PIN_FLAGS:
- g_value_set_flags(value, priv->pin_flags);
- break;
- case PROP_SYSTEM_CA_CERTS:
- g_value_set_boolean(value, priv->system_ca_certs);
- break;
- case PROP_AUTH_TIMEOUT:
- g_value_set_int(value, priv->auth_timeout);
- break;
- case PROP_OPTIONAL:
- g_value_set_boolean(value, priv->optional);
- break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_get_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -3264,179 +3129,16 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
g_slist_free_full(priv->eap, g_free);
priv->eap = nm_strv_to_gslist(g_value_get_boxed(value), TRUE);
break;
- case PROP_IDENTITY:
- g_free(priv->identity);
- priv->identity = g_value_dup_string(value);
- break;
- case PROP_ANONYMOUS_IDENTITY:
- g_free(priv->anonymous_identity);
- priv->anonymous_identity = g_value_dup_string(value);
- break;
- case PROP_PAC_FILE:
- g_free(priv->pac_file);
- priv->pac_file = g_value_dup_string(value);
- break;
- case PROP_CA_CERT:
- g_bytes_unref(priv->ca_cert);
- priv->ca_cert = g_value_dup_boxed(value);
- break;
- case PROP_CA_CERT_PASSWORD:
- g_free(priv->ca_cert_password);
- priv->ca_cert_password = g_value_dup_string(value);
- break;
- case PROP_CA_CERT_PASSWORD_FLAGS:
- priv->ca_cert_password_flags = g_value_get_flags(value);
- break;
- case PROP_CA_PATH:
- g_free(priv->ca_path);
- priv->ca_path = g_value_dup_string(value);
- break;
- case PROP_SUBJECT_MATCH:
- g_free(priv->subject_match);
- priv->subject_match = nm_strdup_not_empty(g_value_get_string(value));
- break;
case PROP_ALTSUBJECT_MATCHES:
g_slist_free_full(priv->altsubject_matches, g_free);
priv->altsubject_matches = nm_strv_to_gslist(g_value_get_boxed(value), TRUE);
break;
- case PROP_DOMAIN_SUFFIX_MATCH:
- g_free(priv->domain_suffix_match);
- priv->domain_suffix_match = nm_strdup_not_empty(g_value_get_string(value));
- break;
- case PROP_DOMAIN_MATCH:
- g_free(priv->domain_match);
- priv->domain_match = nm_strdup_not_empty(g_value_get_string(value));
- break;
- case PROP_CLIENT_CERT:
- g_bytes_unref(priv->client_cert);
- priv->client_cert = g_value_dup_boxed(value);
- break;
- case PROP_CLIENT_CERT_PASSWORD:
- g_free(priv->client_cert_password);
- priv->client_cert_password = g_value_dup_string(value);
- break;
- case PROP_CLIENT_CERT_PASSWORD_FLAGS:
- priv->client_cert_password_flags = g_value_get_flags(value);
- break;
- case PROP_PHASE1_PEAPVER:
- g_free(priv->phase1_peapver);
- priv->phase1_peapver = g_value_dup_string(value);
- break;
- case PROP_PHASE1_PEAPLABEL:
- g_free(priv->phase1_peaplabel);
- priv->phase1_peaplabel = g_value_dup_string(value);
- break;
- case PROP_PHASE1_FAST_PROVISIONING:
- g_free(priv->phase1_fast_provisioning);
- priv->phase1_fast_provisioning = g_value_dup_string(value);
- break;
- case PROP_PHASE1_AUTH_FLAGS:
- priv->phase1_auth_flags = g_value_get_uint(value);
- break;
- case PROP_PHASE2_AUTH:
- g_free(priv->phase2_auth);
- priv->phase2_auth = g_value_dup_string(value);
- break;
- case PROP_PHASE2_AUTHEAP:
- g_free(priv->phase2_autheap);
- priv->phase2_autheap = g_value_dup_string(value);
- break;
- case PROP_PHASE2_CA_CERT:
- g_bytes_unref(priv->phase2_ca_cert);
- priv->phase2_ca_cert = g_value_dup_boxed(value);
- break;
- case PROP_PHASE2_CA_CERT_PASSWORD:
- g_free(priv->phase2_ca_cert_password);
- priv->phase2_ca_cert_password = g_value_dup_string(value);
- break;
- case PROP_PHASE2_CA_CERT_PASSWORD_FLAGS:
- priv->phase2_ca_cert_password_flags = g_value_get_flags(value);
- break;
- case PROP_PHASE2_CA_PATH:
- g_free(priv->phase2_ca_path);
- priv->phase2_ca_path = g_value_dup_string(value);
- break;
- case PROP_PHASE2_SUBJECT_MATCH:
- g_free(priv->phase2_subject_match);
- priv->phase2_subject_match = nm_strdup_not_empty(g_value_get_string(value));
- break;
case PROP_PHASE2_ALTSUBJECT_MATCHES:
g_slist_free_full(priv->phase2_altsubject_matches, g_free);
priv->phase2_altsubject_matches = nm_strv_to_gslist(g_value_get_boxed(value), TRUE);
break;
- case PROP_PHASE2_DOMAIN_SUFFIX_MATCH:
- g_free(priv->phase2_domain_suffix_match);
- priv->phase2_domain_suffix_match = nm_strdup_not_empty(g_value_get_string(value));
- break;
- case PROP_PHASE2_DOMAIN_MATCH:
- g_free(priv->phase2_domain_match);
- priv->phase2_domain_match = nm_strdup_not_empty(g_value_get_string(value));
- break;
- case PROP_PHASE2_CLIENT_CERT:
- g_bytes_unref(priv->phase2_client_cert);
- priv->phase2_client_cert = g_value_dup_boxed(value);
- break;
- case PROP_PHASE2_CLIENT_CERT_PASSWORD:
- g_free(priv->phase2_client_cert_password);
- priv->phase2_client_cert_password = g_value_dup_string(value);
- break;
- case PROP_PHASE2_CLIENT_CERT_PASSWORD_FLAGS:
- priv->phase2_client_cert_password_flags = g_value_get_flags(value);
- break;
- case PROP_PASSWORD:
- g_free(priv->password);
- priv->password = g_value_dup_string(value);
- break;
- case PROP_PASSWORD_FLAGS:
- priv->password_flags = g_value_get_flags(value);
- break;
- case PROP_PASSWORD_RAW:
- g_bytes_unref(priv->password_raw);
- priv->password_raw = g_value_dup_boxed(value);
- break;
- case PROP_PASSWORD_RAW_FLAGS:
- priv->password_raw_flags = g_value_get_flags(value);
- break;
- case PROP_PRIVATE_KEY:
- g_bytes_unref(priv->private_key);
- priv->private_key = g_value_dup_boxed(value);
- break;
- case PROP_PRIVATE_KEY_PASSWORD:
- nm_free_secret(priv->private_key_password);
- priv->private_key_password = g_value_dup_string(value);
- break;
- case PROP_PRIVATE_KEY_PASSWORD_FLAGS:
- priv->private_key_password_flags = g_value_get_flags(value);
- break;
- case PROP_PHASE2_PRIVATE_KEY:
- g_bytes_unref(priv->phase2_private_key);
- priv->phase2_private_key = g_value_dup_boxed(value);
- break;
- case PROP_PHASE2_PRIVATE_KEY_PASSWORD:
- nm_free_secret(priv->phase2_private_key_password);
- priv->phase2_private_key_password = g_value_dup_string(value);
- break;
- case PROP_PHASE2_PRIVATE_KEY_PASSWORD_FLAGS:
- priv->phase2_private_key_password_flags = g_value_get_flags(value);
- break;
- case PROP_PIN:
- g_free(priv->pin);
- priv->pin = g_value_dup_string(value);
- break;
- case PROP_PIN_FLAGS:
- priv->pin_flags = g_value_get_flags(value);
- break;
- case PROP_SYSTEM_CA_CERTS:
- priv->system_ca_certs = g_value_get_boolean(value);
- break;
- case PROP_AUTH_TIMEOUT:
- priv->auth_timeout = g_value_get_int(value);
- break;
- case PROP_OPTIONAL:
- priv->optional = g_value_get_boolean(value);
- break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_set_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -3466,40 +3168,10 @@ finalize(GObject *object)
NMSetting8021x * self = NM_SETTING_802_1X(object);
NMSetting8021xPrivate *priv = NM_SETTING_802_1X_GET_PRIVATE(self);
- g_free(priv->identity);
- g_free(priv->anonymous_identity);
- g_free(priv->ca_path);
- g_free(priv->subject_match);
- g_free(priv->domain_suffix_match);
- g_free(priv->phase1_peapver);
- g_free(priv->phase1_peaplabel);
- g_free(priv->phase1_fast_provisioning);
- g_free(priv->phase2_auth);
- g_free(priv->phase2_autheap);
- g_free(priv->phase2_ca_path);
- g_free(priv->phase2_subject_match);
- g_free(priv->phase2_domain_suffix_match);
- g_free(priv->password);
- g_bytes_unref(priv->password_raw);
- g_free(priv->pin);
-
g_slist_free_full(priv->eap, g_free);
g_slist_free_full(priv->altsubject_matches, g_free);
g_slist_free_full(priv->phase2_altsubject_matches, g_free);
- g_bytes_unref(priv->ca_cert);
- g_free(priv->ca_cert_password);
- g_bytes_unref(priv->client_cert);
- g_free(priv->client_cert_password);
- g_bytes_unref(priv->private_key);
- nm_free_secret(priv->private_key_password);
- g_bytes_unref(priv->phase2_ca_cert);
- g_free(priv->phase2_ca_cert_password);
- g_bytes_unref(priv->phase2_client_cert);
- g_free(priv->phase2_client_cert_password);
- g_bytes_unref(priv->phase2_private_key);
- nm_free_secret(priv->phase2_private_key_password);
-
G_OBJECT_CLASS(nm_setting_802_1x_parent_class)->finalize(object);
}
@@ -3555,11 +3227,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* example: IEEE_8021X_IDENTITY=itsme
* ---end---
*/
- obj_properties[PROP_IDENTITY] = g_param_spec_string(NM_SETTING_802_1X_IDENTITY,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_IDENTITY,
+ PROP_IDENTITY,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ identity);
/**
* NMSetting8021x:anonymous-identity:
@@ -3574,12 +3248,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: Anonymous identity for EAP authentication methods.
* ---end---
*/
- obj_properties[PROP_ANONYMOUS_IDENTITY] =
- g_param_spec_string(NM_SETTING_802_1X_ANONYMOUS_IDENTITY,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_ANONYMOUS_IDENTITY,
+ PROP_ANONYMOUS_IDENTITY,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ anonymous_identity);
/**
* NMSetting8021x:pac-file:
@@ -3593,11 +3268,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* example: IEEE_8021X_PAC_FILE=/home/joe/my-fast.pac
* ---end---
*/
- obj_properties[PROP_PAC_FILE] = g_param_spec_string(NM_SETTING_802_1X_PAC_FILE,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PAC_FILE,
+ PROP_PAC_FILE,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ pac_file);
/**
* NMSetting8021x:ca-cert:
@@ -3627,11 +3304,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* example: IEEE_8021X_CA_CERT=/home/joe/cacert.crt
* ---end---
*/
- obj_properties[PROP_CA_CERT] = g_param_spec_boxed(NM_SETTING_802_1X_CA_CERT,
- "",
- "",
- G_TYPE_BYTES,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_bytes(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_CA_CERT,
+ PROP_CA_CERT,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ ca_cert);
/**
* NMSetting8021x:ca-cert-password:
@@ -3645,12 +3324,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
/* ---ifcfg-rh---
* ---end---
*/
- obj_properties[PROP_CA_CERT_PASSWORD] =
- g_param_spec_string(NM_SETTING_802_1X_CA_CERT_PASSWORD,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | NM_SETTING_PARAM_SECRET | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_CA_CERT_PASSWORD,
+ PROP_CA_CERT_PASSWORD,
+ NM_SETTING_PARAM_SECRET,
+ NMSetting8021xPrivate,
+ ca_cert_password);
/**
* NMSetting8021x:ca-cert-password-flags:
@@ -3662,13 +3342,12 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
/* ---ifcfg-rh---
* ---end---
*/
- obj_properties[PROP_CA_CERT_PASSWORD_FLAGS] =
- g_param_spec_flags(NM_SETTING_802_1X_CA_CERT_PASSWORD_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_SECRET_FLAGS,
- NM_SETTING_SECRET_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_secret_flags(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_CA_CERT_PASSWORD_FLAGS,
+ PROP_CA_CERT_PASSWORD_FLAGS,
+ NMSetting8021xPrivate,
+ ca_cert_password_flags);
/**
* NMSetting8021x:ca-path:
@@ -3686,11 +3365,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: The search path for the certificate.
* ---end---
*/
- obj_properties[PROP_CA_PATH] = g_param_spec_string(NM_SETTING_802_1X_CA_PATH,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_CA_PATH,
+ PROP_CA_PATH,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ ca_path);
/**
* NMSetting8021x:subject-match:
@@ -3708,12 +3389,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* example: IEEE_8021X_SUBJECT_MATCH="Red Hat"
* ---end---
*/
- obj_properties[PROP_SUBJECT_MATCH] =
- g_param_spec_string(NM_SETTING_802_1X_SUBJECT_MATCH,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_SUBJECT_MATCH,
+ PROP_SUBJECT_MATCH,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ subject_match);
/**
* NMSetting8021x:altsubject-matches:
@@ -3755,12 +3437,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* variable: IEEE_8021X_DOMAIN_SUFFIX_MATCH(+)
* ---end---
*/
- obj_properties[PROP_DOMAIN_SUFFIX_MATCH] =
- g_param_spec_string(NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH,
+ PROP_DOMAIN_SUFFIX_MATCH,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ domain_suffix_match);
/**
* NMSetting8021x:domain-match:
@@ -3780,12 +3463,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* variable: IEEE_8021X_DOMAIN_MATCH(+)
* ---end---
*/
- obj_properties[PROP_DOMAIN_MATCH] =
- g_param_spec_string(NM_SETTING_802_1X_DOMAIN_MATCH,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_DOMAIN_MATCH,
+ PROP_DOMAIN_MATCH,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ domain_match);
/**
* NMSetting8021x:client-cert:
@@ -3810,12 +3494,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* example: IEEE_8021X_CLIENT_CERT=/home/joe/mycert.crt
* ---end---
*/
- obj_properties[PROP_CLIENT_CERT] =
- g_param_spec_boxed(NM_SETTING_802_1X_CLIENT_CERT,
- "",
- "",
- G_TYPE_BYTES,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_bytes(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_CLIENT_CERT,
+ PROP_CLIENT_CERT,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ client_cert);
/**
* NMSetting8021x:client-cert-password:
@@ -3829,12 +3514,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
/* ---ifcfg-rh---
* ---end---
*/
- obj_properties[PROP_CLIENT_CERT_PASSWORD] =
- g_param_spec_string(NM_SETTING_802_1X_CLIENT_CERT_PASSWORD,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | NM_SETTING_PARAM_SECRET | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_CLIENT_CERT_PASSWORD,
+ PROP_CLIENT_CERT_PASSWORD,
+ NM_SETTING_PARAM_SECRET,
+ NMSetting8021xPrivate,
+ client_cert_password);
/**
* NMSetting8021x:client-cert-password-flags:
@@ -3846,13 +3532,12 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
/* ---ifcfg-rh---
* ---end---
*/
- obj_properties[PROP_CLIENT_CERT_PASSWORD_FLAGS] =
- g_param_spec_flags(NM_SETTING_802_1X_CLIENT_CERT_PASSWORD_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_SECRET_FLAGS,
- NM_SETTING_SECRET_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_secret_flags(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_CLIENT_CERT_PASSWORD_FLAGS,
+ PROP_CLIENT_CERT_PASSWORD_FLAGS,
+ NMSetting8021xPrivate,
+ client_cert_password_flags);
/**
* NMSetting8021x:phase1-peapver:
@@ -3871,12 +3556,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: Use to force a specific PEAP version.
* ---end---
*/
- obj_properties[PROP_PHASE1_PEAPVER] =
- g_param_spec_string(NM_SETTING_802_1X_PHASE1_PEAPVER,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE1_PEAPVER,
+ PROP_PHASE1_PEAPVER,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ phase1_peapver);
/**
* NMSetting8021x:phase1-peaplabel:
@@ -3894,12 +3580,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: Use to force the new PEAP label during key derivation.
* ---end---
*/
- obj_properties[PROP_PHASE1_PEAPLABEL] =
- g_param_spec_string(NM_SETTING_802_1X_PHASE1_PEAPLABEL,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE1_PEAPLABEL,
+ PROP_PHASE1_PEAPLABEL,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ phase1_peaplabel);
/**
* NMSetting8021x:phase1-fast-provisioning:
@@ -3919,12 +3606,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* example: IEEE_8021X_FAST_PROVISIONING="allow-auth allow-unauth"
* ---end---
*/
- obj_properties[PROP_PHASE1_FAST_PROVISIONING] =
- g_param_spec_string(NM_SETTING_802_1X_PHASE1_FAST_PROVISIONING,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE1_FAST_PROVISIONING,
+ PROP_PHASE1_FAST_PROVISIONING,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ phase1_fast_provisioning);
/**
* NMSetting8021x:phase1-auth-flags:
@@ -3946,14 +3634,16 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* example: IEEE_8021X_PHASE1_AUTH_FLAGS="tls-1-0-disable tls-1-1-disable"
* ---end---
*/
- obj_properties[PROP_PHASE1_AUTH_FLAGS] =
- g_param_spec_uint(NM_SETTING_802_1X_PHASE1_AUTH_FLAGS,
- "",
- "",
- 0,
- G_MAXUINT32,
- NM_SETTING_802_1X_AUTH_FLAGS_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE1_AUTH_FLAGS,
+ PROP_PHASE1_AUTH_FLAGS,
+ 0,
+ G_MAXUINT32,
+ NM_SETTING_802_1X_AUTH_FLAGS_NONE,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ phase1_auth_flags);
/**
* NMSetting8021x:phase2-auth:
@@ -3979,12 +3669,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* example: IEEE_8021X_INNER_AUTH_METHODS=PAP
* ---end---
*/
- obj_properties[PROP_PHASE2_AUTH] =
- g_param_spec_string(NM_SETTING_802_1X_PHASE2_AUTH,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_AUTH,
+ PROP_PHASE2_AUTH,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ phase2_auth);
/**
* NMSetting8021x:phase2-autheap:
@@ -4005,12 +3696,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* example: IEEE_8021X_INNER_AUTH_METHODS="MSCHAPV2 EAP-TLS"
* ---end---
*/
- obj_properties[PROP_PHASE2_AUTHEAP] =
- g_param_spec_string(NM_SETTING_802_1X_PHASE2_AUTHEAP,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_AUTHEAP,
+ PROP_PHASE2_AUTHEAP,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ phase2_autheap);
/**
* NMSetting8021x:phase2-ca-cert:
@@ -4034,12 +3726,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* Setting this property directly is discouraged; use the
* nm_setting_802_1x_set_phase2_ca_cert() function instead.
**/
- obj_properties[PROP_PHASE2_CA_CERT] =
- g_param_spec_boxed(NM_SETTING_802_1X_PHASE2_CA_CERT,
- "",
- "",
- G_TYPE_BYTES,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_bytes(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_CA_CERT,
+ PROP_PHASE2_CA_CERT,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ phase2_ca_cert);
/**
* NMSetting8021x:phase2-ca-cert-password:
@@ -4053,12 +3746,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
/* ---ifcfg-rh---
* ---end---
*/
- obj_properties[PROP_PHASE2_CA_CERT_PASSWORD] =
- g_param_spec_string(NM_SETTING_802_1X_PHASE2_CA_CERT_PASSWORD,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | NM_SETTING_PARAM_SECRET | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_CA_CERT_PASSWORD,
+ PROP_PHASE2_CA_CERT_PASSWORD,
+ NM_SETTING_PARAM_SECRET,
+ NMSetting8021xPrivate,
+ phase2_ca_cert_password);
/**
* NMSetting8021x:phase2-ca-cert-password-flags:
@@ -4070,13 +3764,12 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
/* ---ifcfg-rh---
* ---end---
*/
- obj_properties[PROP_PHASE2_CA_CERT_PASSWORD_FLAGS] =
- g_param_spec_flags(NM_SETTING_802_1X_PHASE2_CA_CERT_PASSWORD_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_SECRET_FLAGS,
- NM_SETTING_SECRET_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_secret_flags(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_CA_CERT_PASSWORD_FLAGS,
+ PROP_PHASE2_CA_CERT_PASSWORD_FLAGS,
+ NMSetting8021xPrivate,
+ phase2_ca_cert_password_flags);
/**
* NMSetting8021x:phase2-ca-path:
@@ -4094,12 +3787,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: The search path for the certificate.
* ---end---
*/
- obj_properties[PROP_PHASE2_CA_PATH] =
- g_param_spec_string(NM_SETTING_802_1X_PHASE2_CA_PATH,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_CA_PATH,
+ PROP_PHASE2_CA_PATH,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ phase2_ca_path);
/**
* NMSetting8021x:phase2-subject-match:
@@ -4118,12 +3812,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* example: IEEE_8021X_PHASE2_SUBJECT_MATCH="Red Hat"
* ---end---
*/
- obj_properties[PROP_PHASE2_SUBJECT_MATCH] =
- g_param_spec_string(NM_SETTING_802_1X_PHASE2_SUBJECT_MATCH,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_SUBJECT_MATCH,
+ PROP_PHASE2_SUBJECT_MATCH,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ phase2_subject_match);
/**
* NMSetting8021x:phase2-altsubject-matches:
@@ -4165,12 +3860,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* variable: IEEE_8021X_PHASE2_DOMAIN_SUFFIX_MATCH(+)
* ---end---
*/
- obj_properties[PROP_PHASE2_DOMAIN_SUFFIX_MATCH] =
- g_param_spec_string(NM_SETTING_802_1X_PHASE2_DOMAIN_SUFFIX_MATCH,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_DOMAIN_SUFFIX_MATCH,
+ PROP_PHASE2_DOMAIN_SUFFIX_MATCH,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ phase2_domain_suffix_match);
/**
* NMSetting8021x:phase2-domain-match:
@@ -4191,12 +3887,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* variable: IEEE_8021X_PHASE2_DOMAIN_MATCH(+)
* ---end---
*/
- obj_properties[PROP_PHASE2_DOMAIN_MATCH] =
- g_param_spec_string(NM_SETTING_802_1X_PHASE2_DOMAIN_MATCH,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_DOMAIN_MATCH,
+ PROP_PHASE2_DOMAIN_MATCH,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ phase2_domain_match);
/**
* NMSetting8021x:phase2-client-cert:
@@ -4224,12 +3921,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* example: IEEE_8021X_INNER_CLIENT_CERT=/home/joe/mycert.crt
* ---end---
*/
- obj_properties[PROP_PHASE2_CLIENT_CERT] =
- g_param_spec_boxed(NM_SETTING_802_1X_PHASE2_CLIENT_CERT,
- "",
- "",
- G_TYPE_BYTES,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_bytes(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_CLIENT_CERT,
+ PROP_PHASE2_CLIENT_CERT,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ phase2_client_cert);
/**
* NMSetting8021x:phase2-client-cert-password:
@@ -4243,12 +3941,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
/* ---ifcfg-rh---
* ---end---
*/
- obj_properties[PROP_PHASE2_CLIENT_CERT_PASSWORD] =
- g_param_spec_string(NM_SETTING_802_1X_PHASE2_CLIENT_CERT_PASSWORD,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | NM_SETTING_PARAM_SECRET | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_CLIENT_CERT_PASSWORD,
+ PROP_PHASE2_CLIENT_CERT_PASSWORD,
+ NM_SETTING_PARAM_SECRET,
+ NMSetting8021xPrivate,
+ phase2_client_cert_password);
/**
* NMSetting8021x:phase2-client-cert-password-flags:
@@ -4260,13 +3959,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
/* ---ifcfg-rh---
* ---end---
*/
- obj_properties[PROP_PHASE2_CLIENT_CERT_PASSWORD_FLAGS] =
- g_param_spec_flags(NM_SETTING_802_1X_PHASE2_CLIENT_CERT_PASSWORD_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_SECRET_FLAGS,
- NM_SETTING_SECRET_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_secret_flags(
+ properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_CLIENT_CERT_PASSWORD_FLAGS,
+ PROP_PHASE2_CLIENT_CERT_PASSWORD_FLAGS,
+ NMSetting8021xPrivate,
+ phase2_client_cert_password_flags);
/**
* NMSetting8021x:password:
@@ -4282,12 +3981,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* lookaside file, or it can be owned by a secret agent.
* ---end---
*/
- obj_properties[PROP_PASSWORD] =
- g_param_spec_string(NM_SETTING_802_1X_PASSWORD,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | NM_SETTING_PARAM_SECRET | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PASSWORD,
+ PROP_PASSWORD,
+ NM_SETTING_PARAM_SECRET,
+ NMSetting8021xPrivate,
+ password);
/**
* NMSetting8021x:password-flags:
@@ -4301,13 +4001,12 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: Password flags for IEEE_8021X_PASSWORD password.
* ---end---
*/
- obj_properties[PROP_PASSWORD_FLAGS] =
- g_param_spec_flags(NM_SETTING_802_1X_PASSWORD_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_SECRET_FLAGS,
- NM_SETTING_SECRET_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_secret_flags(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PASSWORD_FLAGS,
+ PROP_PASSWORD_FLAGS,
+ NMSetting8021xPrivate,
+ password_flags);
/**
* NMSetting8021x:password-raw:
@@ -4325,12 +4024,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* example: IEEE_8021X_PASSWORD_RAW=041c8320083aa4bf
* ---end---
*/
- obj_properties[PROP_PASSWORD_RAW] =
- g_param_spec_boxed(NM_SETTING_802_1X_PASSWORD_RAW,
- "",
- "",
- G_TYPE_BYTES,
- G_PARAM_READWRITE | NM_SETTING_PARAM_SECRET | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_bytes(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PASSWORD_RAW,
+ PROP_PASSWORD_RAW,
+ NM_SETTING_PARAM_SECRET,
+ NMSetting8021xPrivate,
+ password_raw);
/**
* NMSetting8021x:password-raw-flags:
@@ -4343,13 +4043,12 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: The secret flags for password-raw.
* ---end---
*/
- obj_properties[PROP_PASSWORD_RAW_FLAGS] =
- g_param_spec_flags(NM_SETTING_802_1X_PASSWORD_RAW_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_SECRET_FLAGS,
- NM_SETTING_SECRET_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_secret_flags(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PASSWORD_RAW_FLAGS,
+ PROP_PASSWORD_RAW_FLAGS,
+ NMSetting8021xPrivate,
+ password_raw_flags);
/**
* NMSetting8021x:private-key:
@@ -4389,12 +4088,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* example: IEEE_8021X_PRIVATE_KEY=/home/joe/mykey.p12
* ---end---
*/
- obj_properties[PROP_PRIVATE_KEY] =
- g_param_spec_boxed(NM_SETTING_802_1X_PRIVATE_KEY,
- "",
- "",
- G_TYPE_BYTES,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_bytes(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PRIVATE_KEY,
+ PROP_PRIVATE_KEY,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ private_key);
/**
* NMSetting8021x:private-key-password:
@@ -4413,12 +4113,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* lookaside file, or it can be owned by a secret agent.
* ---end---
*/
- obj_properties[PROP_PRIVATE_KEY_PASSWORD] =
- g_param_spec_string(NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | NM_SETTING_PARAM_SECRET | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD,
+ PROP_PRIVATE_KEY_PASSWORD,
+ NM_SETTING_PARAM_SECRET,
+ NMSetting8021xPrivate,
+ private_key_password);
/**
* NMSetting8021x:private-key-password-flags:
@@ -4433,13 +4134,12 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: Password flags for IEEE_8021X_PRIVATE_KEY_PASSWORD password.
* ---end---
*/
- obj_properties[PROP_PRIVATE_KEY_PASSWORD_FLAGS] =
- g_param_spec_flags(NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_SECRET_FLAGS,
- NM_SETTING_SECRET_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_secret_flags(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD_FLAGS,
+ PROP_PRIVATE_KEY_PASSWORD_FLAGS,
+ NMSetting8021xPrivate,
+ private_key_password_flags);
/**
* NMSetting8021x:phase2-private-key:
@@ -4473,12 +4173,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: Private key for inner authentication method for EAP-TLS.
* ---end---
*/
- obj_properties[PROP_PHASE2_PRIVATE_KEY] =
- g_param_spec_boxed(NM_SETTING_802_1X_PHASE2_PRIVATE_KEY,
- "",
- "",
- G_TYPE_BYTES,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_bytes(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_PRIVATE_KEY,
+ PROP_PHASE2_PRIVATE_KEY,
+ NM_SETTING_PARAM_NONE,
+ NMSetting8021xPrivate,
+ phase2_private_key);
/**
* NMSetting8021x:phase2-private-key-password:
@@ -4498,12 +4199,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* lookaside file, or it can be owned by a secret agent.
* ---end---
*/
- obj_properties[PROP_PHASE2_PRIVATE_KEY_PASSWORD] =
- g_param_spec_string(NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | NM_SETTING_PARAM_SECRET | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD,
+ PROP_PHASE2_PRIVATE_KEY_PASSWORD,
+ NM_SETTING_PARAM_SECRET,
+ NMSetting8021xPrivate,
+ phase2_private_key_password);
/**
* NMSetting8021x:phase2-private-key-password-flags:
@@ -4518,13 +4220,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: Password flags for IEEE_8021X_INNER_PRIVATE_KEY_PASSWORD password.
* ---end---
*/
- obj_properties[PROP_PHASE2_PRIVATE_KEY_PASSWORD_FLAGS] =
- g_param_spec_flags(NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_SECRET_FLAGS,
- NM_SETTING_SECRET_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_secret_flags(
+ properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD_FLAGS,
+ PROP_PHASE2_PRIVATE_KEY_PASSWORD_FLAGS,
+ NMSetting8021xPrivate,
+ phase2_private_key_password_flags);
/**
* NMSetting8021x:pin:
@@ -4537,12 +4239,13 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: The pin secret used for EAP authentication methods.
* ---end---
*/
- obj_properties[PROP_PIN] =
- g_param_spec_string(NM_SETTING_802_1X_PIN,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | NM_SETTING_PARAM_SECRET | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PIN,
+ PROP_PIN,
+ NM_SETTING_PARAM_SECRET,
+ NMSetting8021xPrivate,
+ pin);
/**
* NMSetting8021x:pin-flags:
@@ -4555,12 +4258,12 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: The secret flags for the pin property.
* ---end---
*/
- obj_properties[PROP_PIN_FLAGS] = g_param_spec_flags(NM_SETTING_802_1X_PIN_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_SECRET_FLAGS,
- NM_SETTING_SECRET_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_secret_flags(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_PIN_FLAGS,
+ PROP_PIN_FLAGS,
+ NMSetting8021xPrivate,
+ pin_flags);
/**
* NMSetting8021x:system-ca-certs:
@@ -4605,14 +4308,16 @@ nm_setting_802_1x_class_init(NMSetting8021xClass *klass)
* description: Timeout in seconds for the 802.1X authentication. Zero means the global default or 25.
* ---end---
*/
- obj_properties[PROP_AUTH_TIMEOUT] = g_param_spec_int(
- NM_SETTING_802_1X_AUTH_TIMEOUT,
- "",
- "",
- 0,
- G_MAXINT32,
- 0,
- G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_int32(properties_override,
+ obj_properties,
+ NM_SETTING_802_1X_AUTH_TIMEOUT,
+ PROP_AUTH_TIMEOUT,
+ 0,
+ G_MAXINT32,
+ 0,
+ NM_SETTING_PARAM_FUZZY_IGNORE,
+ NMSetting8021xPrivate,
+ auth_timeout);
/**
* NMSetting8021x:optional:
diff --git a/src/libnm-core-impl/nm-setting-adsl.c b/src/libnm-core-impl/nm-setting-adsl.c
index 5f1888d0e4..8e5dc8cfca 100644
--- a/src/libnm-core-impl/nm-setting-adsl.c
+++ b/src/libnm-core-impl/nm-setting-adsl.c
@@ -31,13 +31,13 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_USERNAME,
PROP_VCI, );
typedef struct {
- char * username;
- char * password;
- NMSettingSecretFlags password_flags;
- char * protocol;
- char * encapsulation;
- guint32 vpi;
- guint32 vci;
+ char * username;
+ char * password;
+ char * protocol;
+ char * encapsulation;
+ guint password_flags;
+ guint32 vpi;
+ guint32 vci;
} NMSettingAdslPrivate;
/**
@@ -243,81 +243,6 @@ need_secrets(NMSetting *setting)
/*****************************************************************************/
-static void
-get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-{
- NMSettingAdsl *setting = NM_SETTING_ADSL(object);
-
- switch (prop_id) {
- case PROP_USERNAME:
- g_value_set_string(value, nm_setting_adsl_get_username(setting));
- break;
- case PROP_PASSWORD:
- g_value_set_string(value, nm_setting_adsl_get_password(setting));
- break;
- case PROP_PASSWORD_FLAGS:
- g_value_set_flags(value, nm_setting_adsl_get_password_flags(setting));
- break;
- case PROP_PROTOCOL:
- g_value_set_string(value, nm_setting_adsl_get_protocol(setting));
- break;
- case PROP_ENCAPSULATION:
- g_value_set_string(value, nm_setting_adsl_get_encapsulation(setting));
- break;
- case PROP_VPI:
- g_value_set_uint(value, nm_setting_adsl_get_vpi(setting));
- break;
- case PROP_VCI:
- g_value_set_uint(value, nm_setting_adsl_get_vci(setting));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-static void
-set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
-{
- NMSettingAdslPrivate *priv = NM_SETTING_ADSL_GET_PRIVATE(object);
- const char * str;
-
- switch (prop_id) {
- case PROP_USERNAME:
- g_free(priv->username);
- priv->username = g_value_dup_string(value);
- break;
- case PROP_PASSWORD:
- g_free(priv->password);
- priv->password = g_value_dup_string(value);
- break;
- case PROP_PASSWORD_FLAGS:
- priv->password_flags = g_value_get_flags(value);
- break;
- case PROP_PROTOCOL:
- g_free(priv->protocol);
- str = g_value_get_string(value);
- priv->protocol = str ? g_ascii_strdown(str, -1) : NULL;
- break;
- case PROP_ENCAPSULATION:
- g_free(priv->encapsulation);
- str = g_value_get_string(value);
- priv->encapsulation = str ? g_ascii_strdown(str, -1) : NULL;
- break;
- case PROP_VPI:
- priv->vpi = g_value_get_uint(value);
- break;
- case PROP_VCI:
- priv->vci = g_value_get_uint(value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-/*****************************************************************************/
-
static void
nm_setting_adsl_init(NMSettingAdsl *setting)
{}
@@ -335,19 +260,6 @@ nm_setting_adsl_new(void)
return g_object_new(NM_TYPE_SETTING_ADSL, NULL);
}
-static void
-finalize(GObject *object)
-{
- NMSettingAdslPrivate *priv = NM_SETTING_ADSL_GET_PRIVATE(object);
-
- g_free(priv->username);
- g_free(priv->password);
- g_free(priv->protocol);
- g_free(priv->encapsulation);
-
- G_OBJECT_CLASS(nm_setting_adsl_parent_class)->finalize(object);
-}
-
static void
nm_setting_adsl_class_init(NMSettingAdslClass *klass)
{
@@ -357,9 +269,8 @@ nm_setting_adsl_class_init(NMSettingAdslClass *klass)
g_type_class_add_private(klass, sizeof(NMSettingAdslPrivate));
- object_class->get_property = get_property;
- object_class->set_property = set_property;
- object_class->finalize = finalize;
+ object_class->get_property = _nm_setting_property_get_property_direct;
+ object_class->set_property = _nm_setting_property_set_property_direct;
setting_class->verify = verify;
setting_class->verify_secrets = verify_secrets;
@@ -396,13 +307,12 @@ nm_setting_adsl_class_init(NMSettingAdslClass *klass)
*
* Flags indicating how to handle the #NMSettingAdsl:password property.
**/
- obj_properties[PROP_PASSWORD_FLAGS] =
- g_param_spec_flags(NM_SETTING_ADSL_PASSWORD_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_SECRET_FLAGS,
- NM_SETTING_SECRET_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_secret_flags(properties_override,
+ obj_properties,
+ NM_SETTING_ADSL_PASSWORD_FLAGS,
+ PROP_PASSWORD_FLAGS,
+ NMSettingAdslPrivate,
+ password_flags);
/**
* NMSettingAdsl:protocol:
@@ -437,26 +347,32 @@ nm_setting_adsl_class_init(NMSettingAdslClass *klass)
*
* VPI of ADSL connection
**/
- obj_properties[PROP_VPI] = g_param_spec_uint(NM_SETTING_ADSL_VPI,
- "",
- "",
- 0,
- 65536,
- 0,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_ADSL_VPI,
+ PROP_VPI,
+ 0,
+ 65536,
+ 0,
+ NM_SETTING_PARAM_NONE,
+ NMSettingAdslPrivate,
+ vpi);
/**
* NMSettingAdsl:vci:
*
* VCI of ADSL connection
**/
- obj_properties[PROP_VCI] = g_param_spec_uint(NM_SETTING_ADSL_VCI,
- "",
- "",
- 0,
- 65536,
- 0,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_ADSL_VCI,
+ PROP_VCI,
+ 0,
+ 65536,
+ 0,
+ NM_SETTING_PARAM_NONE,
+ NMSettingAdslPrivate,
+ vci);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
diff --git a/src/libnm-core-impl/nm-setting-bluetooth.c b/src/libnm-core-impl/nm-setting-bluetooth.c
index f0b4a3914e..53e4912f79 100644
--- a/src/libnm-core-impl/nm-setting-bluetooth.c
+++ b/src/libnm-core-impl/nm-setting-bluetooth.c
@@ -259,8 +259,7 @@ nm_setting_bluetooth_class_init(NMSettingBluetoothClass *klass)
object_class->get_property = _nm_setting_property_get_property_direct;
object_class->set_property = _nm_setting_property_set_property_direct;
- setting_class->verify = verify;
- setting_class->finalize_direct = TRUE;
+ setting_class->verify = verify;
/**
* NMSettingBluetooth:bdaddr:
diff --git a/src/libnm-core-impl/nm-setting-bond-port.c b/src/libnm-core-impl/nm-setting-bond-port.c
index 5eb1bfd07f..4538e8b9f5 100644
--- a/src/libnm-core-impl/nm-setting-bond-port.c
+++ b/src/libnm-core-impl/nm-setting-bond-port.c
@@ -134,8 +134,7 @@ nm_setting_bond_port_class_init(NMSettingBondPortClass *klass)
object_class->get_property = _nm_setting_property_get_property_direct;
object_class->set_property = _nm_setting_property_set_property_direct;
- setting_class->verify = verify;
- setting_class->finalize_direct = TRUE;
+ setting_class->verify = verify;
/**
* NMSettingBondPort:queue-id:
diff --git a/src/libnm-core-impl/nm-setting-bridge-port.c b/src/libnm-core-impl/nm-setting-bridge-port.c
index 5b70103b82..48ad74a143 100644
--- a/src/libnm-core-impl/nm-setting-bridge-port.c
+++ b/src/libnm-core-impl/nm-setting-bridge-port.c
@@ -34,8 +34,8 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMSettingBridgePort,
typedef struct {
GPtrArray *vlans;
- guint16 priority;
- guint16 path_cost;
+ guint32 priority;
+ guint32 path_cost;
bool hairpin_mode;
} NMSettingBridgePortPrivate;
@@ -385,15 +385,6 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
NMSettingBridgePortPrivate *priv = NM_SETTING_BRIDGE_PORT_GET_PRIVATE(object);
switch (prop_id) {
- case PROP_PRIORITY:
- g_value_set_uint(value, priv->priority);
- break;
- case PROP_PATH_COST:
- g_value_set_uint(value, priv->path_cost);
- break;
- case PROP_HAIRPIN_MODE:
- g_value_set_boolean(value, priv->hairpin_mode);
- break;
case PROP_VLANS:
g_value_take_boxed(value,
_nm_utils_copy_array(priv->vlans,
@@ -401,7 +392,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
(GDestroyNotify) nm_bridge_vlan_unref));
break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_get_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -412,15 +403,6 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
NMSettingBridgePortPrivate *priv = NM_SETTING_BRIDGE_PORT_GET_PRIVATE(object);
switch (prop_id) {
- case PROP_PRIORITY:
- priv->priority = g_value_get_uint(value);
- break;
- case PROP_PATH_COST:
- priv->path_cost = g_value_get_uint(value);
- break;
- case PROP_HAIRPIN_MODE:
- priv->hairpin_mode = g_value_get_boolean(value);
- break;
case PROP_VLANS:
g_ptr_array_unref(priv->vlans);
priv->vlans = _nm_utils_copy_array(g_value_get_boxed(value),
@@ -428,7 +410,7 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
(GDestroyNotify) nm_bridge_vlan_unref);
break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_set_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -441,9 +423,6 @@ nm_setting_bridge_port_init(NMSettingBridgePort *setting)
NMSettingBridgePortPrivate *priv = NM_SETTING_BRIDGE_PORT_GET_PRIVATE(setting);
priv->vlans = g_ptr_array_new_with_free_func((GDestroyNotify) nm_bridge_vlan_unref);
-
- priv->priority = NM_BRIDGE_PORT_PRIORITY_DEF;
- priv->path_cost = NM_BRIDGE_PORT_PATH_COST_DEF;
}
/**
@@ -478,9 +457,9 @@ nm_setting_bridge_port_class_init(NMSettingBridgePortClass *klass)
g_type_class_add_private(klass, sizeof(NMSettingBridgePortPrivate));
- object_class->finalize = finalize;
object_class->get_property = get_property;
object_class->set_property = set_property;
+ object_class->finalize = finalize;
setting_class->verify = verify;
@@ -497,14 +476,16 @@ nm_setting_bridge_port_class_init(NMSettingBridgePortClass *klass)
* description: STP priority.
* ---end---
*/
- obj_properties[PROP_PRIORITY] =
- g_param_spec_uint(NM_SETTING_BRIDGE_PORT_PRIORITY,
- "",
- "",
- NM_BRIDGE_PORT_PRIORITY_MIN,
- NM_BRIDGE_PORT_PRIORITY_MAX,
- NM_BRIDGE_PORT_PRIORITY_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_PORT_PRIORITY,
+ PROP_PRIORITY,
+ NM_BRIDGE_PORT_PRIORITY_MIN,
+ NM_BRIDGE_PORT_PRIORITY_MAX,
+ NM_BRIDGE_PORT_PRIORITY_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePortPrivate,
+ priority);
/**
* NMSettingBridgePort:path-cost:
@@ -520,13 +501,16 @@ nm_setting_bridge_port_class_init(NMSettingBridgePortClass *klass)
* description: STP cost.
* ---end---
*/
- obj_properties[PROP_PATH_COST] = g_param_spec_uint(NM_SETTING_BRIDGE_PORT_PATH_COST,
- "",
- "",
- NM_BRIDGE_PORT_PATH_COST_MIN,
- NM_BRIDGE_PORT_PATH_COST_MAX,
- NM_BRIDGE_PORT_PATH_COST_DEF,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_PORT_PATH_COST,
+ PROP_PATH_COST,
+ NM_BRIDGE_PORT_PATH_COST_MIN,
+ NM_BRIDGE_PORT_PATH_COST_MAX,
+ NM_BRIDGE_PORT_PATH_COST_DEF,
+ NM_SETTING_PARAM_NONE,
+ NMSettingBridgePortPrivate,
+ path_cost);
/**
* NMSettingBridgePort:hairpin-mode:
diff --git a/src/libnm-core-impl/nm-setting-bridge.c b/src/libnm-core-impl/nm-setting-bridge.c
index 0c5bbed138..9045d6196f 100644
--- a/src/libnm-core-impl/nm-setting-bridge.c
+++ b/src/libnm-core-impl/nm-setting-bridge.c
@@ -71,12 +71,12 @@ typedef struct {
guint32 multicast_hash_max;
guint32 multicast_last_member_count;
guint32 multicast_startup_query_count;
- guint16 priority;
- guint16 forward_delay;
- guint16 hello_time;
- guint16 max_age;
- guint16 vlan_default_pvid;
- guint16 group_forward_mask;
+ guint32 priority;
+ guint32 forward_delay;
+ guint32 hello_time;
+ guint32 max_age;
+ guint32 group_forward_mask;
+ guint32 vlan_default_pvid;
bool stp;
bool multicast_snooping;
bool vlan_filtering;
@@ -1231,7 +1231,7 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
error))
return FALSE;
- if (priv->group_forward_mask & 7) {
+ if (priv->group_forward_mask & 7u) {
g_set_error_literal(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -1329,88 +1329,9 @@ compare_fcn_vlans(_NM_SETT_INFO_PROP_COMPARE_FCN_ARGS _nm_nil)
static void
get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
{
- NMSettingBridgePrivate *priv = NM_SETTING_BRIDGE_GET_PRIVATE(object);
- NMSettingBridge * setting = NM_SETTING_BRIDGE(object);
+ NMSettingBridgePrivate *priv = NM_SETTING_BRIDGE_GET_PRIVATE(object);
switch (prop_id) {
- case PROP_MAC_ADDRESS:
- g_value_set_string(value, nm_setting_bridge_get_mac_address(setting));
- break;
- case PROP_STP:
- g_value_set_boolean(value, priv->stp);
- break;
- case PROP_PRIORITY:
- g_value_set_uint(value, priv->priority);
- break;
- case PROP_FORWARD_DELAY:
- g_value_set_uint(value, priv->forward_delay);
- break;
- case PROP_HELLO_TIME:
- g_value_set_uint(value, priv->hello_time);
- break;
- case PROP_MAX_AGE:
- g_value_set_uint(value, priv->max_age);
- break;
- case PROP_AGEING_TIME:
- g_value_set_uint(value, priv->ageing_time);
- break;
- case PROP_GROUP_ADDRESS:
- g_value_set_string(value, priv->group_address);
- break;
- case PROP_GROUP_FORWARD_MASK:
- g_value_set_uint(value, priv->group_forward_mask);
- break;
- case PROP_MULTICAST_HASH_MAX:
- g_value_set_uint(value, priv->multicast_hash_max);
- break;
- case PROP_MULTICAST_LAST_MEMBER_COUNT:
- g_value_set_uint(value, priv->multicast_last_member_count);
- break;
- case PROP_MULTICAST_LAST_MEMBER_INTERVAL:
- g_value_set_uint64(value, priv->multicast_last_member_interval);
- break;
- case PROP_MULTICAST_MEMBERSHIP_INTERVAL:
- g_value_set_uint64(value, priv->multicast_membership_interval);
- break;
- case PROP_MULTICAST_SNOOPING:
- g_value_set_boolean(value, priv->multicast_snooping);
- break;
- case PROP_MULTICAST_ROUTER:
- g_value_set_string(value, priv->multicast_router);
- break;
- case PROP_MULTICAST_QUERIER:
- g_value_set_boolean(value, priv->multicast_querier);
- break;
- case PROP_MULTICAST_QUERIER_INTERVAL:
- g_value_set_uint64(value, priv->multicast_querier_interval);
- break;
- case PROP_MULTICAST_QUERY_INTERVAL:
- g_value_set_uint64(value, priv->multicast_query_interval);
- break;
- case PROP_MULTICAST_QUERY_RESPONSE_INTERVAL:
- g_value_set_uint64(value, priv->multicast_query_response_interval);
- break;
- case PROP_MULTICAST_QUERY_USE_IFADDR:
- g_value_set_boolean(value, priv->multicast_query_use_ifaddr);
- break;
- case PROP_MULTICAST_STARTUP_QUERY_COUNT:
- g_value_set_uint(value, priv->multicast_startup_query_count);
- break;
- case PROP_MULTICAST_STARTUP_QUERY_INTERVAL:
- g_value_set_uint64(value, priv->multicast_startup_query_interval);
- break;
- case PROP_VLAN_FILTERING:
- g_value_set_boolean(value, priv->vlan_filtering);
- break;
- case PROP_VLAN_DEFAULT_PVID:
- g_value_set_uint(value, priv->vlan_default_pvid);
- break;
- case PROP_VLAN_PROTOCOL:
- g_value_set_string(value, priv->vlan_protocol);
- break;
- case PROP_VLAN_STATS_ENABLED:
- g_value_set_boolean(value, priv->vlan_stats_enabled);
- break;
case PROP_VLANS:
g_value_take_boxed(value,
_nm_utils_copy_array(priv->vlans,
@@ -1418,7 +1339,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
(GDestroyNotify) nm_bridge_vlan_unref));
break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_get_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -1429,90 +1350,6 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
NMSettingBridgePrivate *priv = NM_SETTING_BRIDGE_GET_PRIVATE(object);
switch (prop_id) {
- case PROP_MAC_ADDRESS:
- g_free(priv->mac_address);
- priv->mac_address =
- _nm_utils_hwaddr_canonical_or_invalid(g_value_get_string(value), ETH_ALEN);
- break;
- case PROP_STP:
- priv->stp = g_value_get_boolean(value);
- break;
- case PROP_PRIORITY:
- priv->priority = (guint16) g_value_get_uint(value);
- break;
- case PROP_FORWARD_DELAY:
- priv->forward_delay = (guint16) g_value_get_uint(value);
- break;
- case PROP_HELLO_TIME:
- priv->hello_time = (guint16) g_value_get_uint(value);
- break;
- case PROP_MAX_AGE:
- priv->max_age = (guint16) g_value_get_uint(value);
- break;
- case PROP_AGEING_TIME:
- priv->ageing_time = g_value_get_uint(value);
- break;
- case PROP_GROUP_ADDRESS:
- g_free(priv->group_address);
- priv->group_address =
- _nm_utils_hwaddr_canonical_or_invalid(g_value_get_string(value), ETH_ALEN);
- break;
- case PROP_GROUP_FORWARD_MASK:
- priv->group_forward_mask = (guint16) g_value_get_uint(value);
- break;
- case PROP_MULTICAST_HASH_MAX:
- priv->multicast_hash_max = g_value_get_uint(value);
- break;
- case PROP_MULTICAST_LAST_MEMBER_COUNT:
- priv->multicast_last_member_count = g_value_get_uint(value);
- break;
- case PROP_MULTICAST_LAST_MEMBER_INTERVAL:
- priv->multicast_last_member_interval = g_value_get_uint64(value);
- break;
- case PROP_MULTICAST_MEMBERSHIP_INTERVAL:
- priv->multicast_membership_interval = g_value_get_uint64(value);
- break;
- case PROP_MULTICAST_SNOOPING:
- priv->multicast_snooping = g_value_get_boolean(value);
- break;
- case PROP_MULTICAST_ROUTER:
- g_free(priv->multicast_router);
- priv->multicast_router = g_value_dup_string(value);
- break;
- case PROP_MULTICAST_QUERIER:
- priv->multicast_querier = g_value_get_boolean(value);
- break;
- case PROP_MULTICAST_QUERIER_INTERVAL:
- priv->multicast_querier_interval = g_value_get_uint64(value);
- break;
- case PROP_MULTICAST_QUERY_INTERVAL:
- priv->multicast_query_interval = g_value_get_uint64(value);
- break;
- case PROP_MULTICAST_QUERY_RESPONSE_INTERVAL:
- priv->multicast_query_response_interval = g_value_get_uint64(value);
- break;
- case PROP_MULTICAST_QUERY_USE_IFADDR:
- priv->multicast_query_use_ifaddr = g_value_get_boolean(value);
- break;
- case PROP_MULTICAST_STARTUP_QUERY_COUNT:
- priv->multicast_startup_query_count = g_value_get_uint(value);
- break;
- case PROP_MULTICAST_STARTUP_QUERY_INTERVAL:
- priv->multicast_startup_query_interval = g_value_get_uint64(value);
- break;
- case PROP_VLAN_FILTERING:
- priv->vlan_filtering = g_value_get_boolean(value);
- break;
- case PROP_VLAN_DEFAULT_PVID:
- priv->vlan_default_pvid = g_value_get_uint(value);
- break;
- case PROP_VLAN_PROTOCOL:
- g_free(priv->vlan_protocol);
- priv->vlan_protocol = g_value_dup_string(value);
- break;
- case PROP_VLAN_STATS_ENABLED:
- priv->vlan_stats_enabled = g_value_get_boolean(value);
- break;
case PROP_VLANS:
g_ptr_array_unref(priv->vlans);
priv->vlans = _nm_utils_copy_array(g_value_get_boxed(value),
@@ -1520,7 +1357,7 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
(GDestroyNotify) nm_bridge_vlan_unref);
break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_set_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -1533,22 +1370,6 @@ nm_setting_bridge_init(NMSettingBridge *setting)
NMSettingBridgePrivate *priv = NM_SETTING_BRIDGE_GET_PRIVATE(setting);
priv->vlans = g_ptr_array_new_with_free_func((GDestroyNotify) nm_bridge_vlan_unref);
-
- priv->ageing_time = NM_BRIDGE_AGEING_TIME_DEF;
- priv->forward_delay = NM_BRIDGE_FORWARD_DELAY_DEF;
- priv->hello_time = NM_BRIDGE_HELLO_TIME_DEF;
- priv->max_age = NM_BRIDGE_MAX_AGE_DEF;
- priv->multicast_last_member_count = NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_DEF;
- priv->multicast_last_member_interval = NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_DEF;
- priv->multicast_membership_interval = NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_DEF;
- priv->multicast_hash_max = NM_BRIDGE_MULTICAST_HASH_MAX_DEF;
- priv->priority = NM_BRIDGE_PRIORITY_DEF;
- priv->vlan_default_pvid = NM_BRIDGE_VLAN_DEFAULT_PVID_DEF;
- priv->multicast_query_interval = NM_BRIDGE_MULTICAST_QUERY_INTERVAL_DEF;
- priv->multicast_query_response_interval = NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_DEF;
- priv->multicast_querier_interval = NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_DEF;
- priv->multicast_startup_query_count = NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_DEF;
- priv->multicast_startup_query_interval = NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_DEF;
}
/**
@@ -1569,10 +1390,6 @@ finalize(GObject *object)
{
NMSettingBridgePrivate *priv = NM_SETTING_BRIDGE_GET_PRIVATE(object);
- g_free(priv->mac_address);
- g_free(priv->multicast_router);
- g_free(priv->group_address);
- g_free(priv->vlan_protocol);
g_ptr_array_unref(priv->vlans);
G_OBJECT_CLASS(nm_setting_bridge_parent_class)->finalize(object);
@@ -1666,14 +1483,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
* description: STP priority.
* ---end---
*/
- obj_properties[PROP_PRIORITY] =
- g_param_spec_uint(NM_SETTING_BRIDGE_PRIORITY,
- "",
- "",
- NM_BRIDGE_PRIORITY_MIN,
- NM_BRIDGE_PRIORITY_MAX,
- NM_BRIDGE_PRIORITY_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_PRIORITY,
+ PROP_PRIORITY,
+ NM_BRIDGE_PRIORITY_MIN,
+ NM_BRIDGE_PRIORITY_MAX,
+ NM_BRIDGE_PRIORITY_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ priority);
/**
* NMSettingBridge:forward-delay:
@@ -1688,14 +1507,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
* description: STP forwarding delay.
* ---end---
*/
- obj_properties[PROP_FORWARD_DELAY] =
- g_param_spec_uint(NM_SETTING_BRIDGE_FORWARD_DELAY,
- "",
- "",
- 0,
- NM_BRIDGE_FORWARD_DELAY_MAX,
- NM_BRIDGE_FORWARD_DELAY_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_FORWARD_DELAY,
+ PROP_FORWARD_DELAY,
+ 0,
+ NM_BRIDGE_FORWARD_DELAY_MAX,
+ NM_BRIDGE_FORWARD_DELAY_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ forward_delay);
/**
* NMSettingBridge:hello-time:
@@ -1710,14 +1531,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
* description: STP hello time.
* ---end---
*/
- obj_properties[PROP_HELLO_TIME] =
- g_param_spec_uint(NM_SETTING_BRIDGE_HELLO_TIME,
- "",
- "",
- 0,
- NM_BRIDGE_HELLO_TIME_MAX,
- NM_BRIDGE_HELLO_TIME_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_HELLO_TIME,
+ PROP_HELLO_TIME,
+ 0,
+ NM_BRIDGE_HELLO_TIME_MAX,
+ NM_BRIDGE_HELLO_TIME_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ hello_time);
/**
* NMSettingBridge:max-age:
@@ -1732,14 +1555,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
* description: STP maximum message age.
* ---end---
*/
- obj_properties[PROP_MAX_AGE] =
- g_param_spec_uint(NM_SETTING_BRIDGE_MAX_AGE,
- "",
- "",
- 0,
- NM_BRIDGE_MAX_AGE_MAX,
- NM_BRIDGE_MAX_AGE_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_MAX_AGE,
+ PROP_MAX_AGE,
+ 0,
+ NM_BRIDGE_MAX_AGE_MAX,
+ NM_BRIDGE_MAX_AGE_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ max_age);
/**
* NMSettingBridge:ageing-time:
@@ -1754,14 +1579,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
* description: Ethernet MAC ageing time.
* ---end---
*/
- obj_properties[PROP_AGEING_TIME] =
- g_param_spec_uint(NM_SETTING_BRIDGE_AGEING_TIME,
- "",
- "",
- NM_BRIDGE_AGEING_TIME_MIN,
- NM_BRIDGE_AGEING_TIME_MAX,
- NM_BRIDGE_AGEING_TIME_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_AGEING_TIME,
+ PROP_AGEING_TIME,
+ NM_BRIDGE_AGEING_TIME_MIN,
+ NM_BRIDGE_AGEING_TIME_MAX,
+ NM_BRIDGE_AGEING_TIME_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ ageing_time);
/**
* NMSettingBridge:group-forward-mask:
@@ -1775,14 +1602,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
*
* Since: 1.10
**/
- obj_properties[PROP_GROUP_FORWARD_MASK] =
- g_param_spec_uint(NM_SETTING_BRIDGE_GROUP_FORWARD_MASK,
- "",
- "",
- 0,
- 0xFFFF,
- 0,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_GROUP_FORWARD_MASK,
+ PROP_GROUP_FORWARD_MASK,
+ 0,
+ 0xFFFF,
+ 0,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ group_forward_mask);
/**
* NMSettingBridge:multicast-snooping:
@@ -1851,14 +1680,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
* description: default VLAN PVID.
* ---end---
*/
- obj_properties[PROP_VLAN_DEFAULT_PVID] =
- g_param_spec_uint(NM_SETTING_BRIDGE_VLAN_DEFAULT_PVID,
- "",
- "",
- 0,
- NM_BRIDGE_VLAN_VID_MAX,
- NM_BRIDGE_VLAN_DEFAULT_PVID_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_VLAN_DEFAULT_PVID,
+ PROP_VLAN_DEFAULT_PVID,
+ 0,
+ NM_BRIDGE_VLAN_VID_MAX,
+ NM_BRIDGE_VLAN_DEFAULT_PVID_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ vlan_default_pvid);
/**
* NMSettingBridge:vlans: (type GPtrArray(NMBridgeVlan))
@@ -1956,12 +1787,13 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
*
* Since: 1.24
*/
- obj_properties[PROP_VLAN_PROTOCOL] = g_param_spec_string(
- NM_SETTING_BRIDGE_VLAN_PROTOCOL,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_VLAN_PROTOCOL,
+ PROP_VLAN_PROTOCOL,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ vlan_protocol);
/**
* NMSettingBridge:vlan-stats-enabled:
@@ -2006,12 +1838,13 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
*
* Since: 1.24
*/
- obj_properties[PROP_MULTICAST_ROUTER] = g_param_spec_string(
- NM_SETTING_BRIDGE_MULTICAST_ROUTER,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_MULTICAST_ROUTER,
+ PROP_MULTICAST_ROUTER,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ multicast_router);
/**
* NMSettingBridge:multicast-query-use-ifaddr:
@@ -2076,14 +1909,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
*
* Since: 1.26
*/
- obj_properties[PROP_MULTICAST_HASH_MAX] =
- g_param_spec_uint(NM_SETTING_BRIDGE_MULTICAST_HASH_MAX,
- "",
- "",
- NM_BRIDGE_MULTICAST_HASH_MAX_MIN,
- NM_BRIDGE_MULTICAST_HASH_MAX_MAX,
- NM_BRIDGE_MULTICAST_HASH_MAX_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_MULTICAST_HASH_MAX,
+ PROP_MULTICAST_HASH_MAX,
+ NM_BRIDGE_MULTICAST_HASH_MAX_MIN,
+ NM_BRIDGE_MULTICAST_HASH_MAX_MAX,
+ NM_BRIDGE_MULTICAST_HASH_MAX_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ multicast_hash_max);
/**
* NMSettingBridge:multicast-last-member-count:
@@ -2101,14 +1936,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
*
* Since: 1.26
*/
- obj_properties[PROP_MULTICAST_LAST_MEMBER_COUNT] =
- g_param_spec_uint(NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_COUNT,
- "",
- "",
- NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_MIN,
- NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_MAX,
- NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_COUNT,
+ PROP_MULTICAST_LAST_MEMBER_COUNT,
+ NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_MIN,
+ NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_MAX,
+ NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ multicast_last_member_count);
/**
* NMSettingBridge:multicast-last-member-interval:
@@ -2125,14 +1962,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
*
* Since: 1.26
*/
- obj_properties[PROP_MULTICAST_LAST_MEMBER_INTERVAL] = g_param_spec_uint64(
- NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL,
- "",
- "",
- NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_MIN,
- NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_MAX,
- NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint64(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL,
+ PROP_MULTICAST_LAST_MEMBER_INTERVAL,
+ NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_MIN,
+ NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_MAX,
+ NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ multicast_last_member_interval);
/**
* NMSettingBridge:multicast-membership-interval:
@@ -2150,14 +1989,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
*
* Since: 1.26
*/
- obj_properties[PROP_MULTICAST_MEMBERSHIP_INTERVAL] = g_param_spec_uint64(
- NM_SETTING_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL,
- "",
- "",
- NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_MIN,
- NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_MAX,
- NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint64(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL,
+ PROP_MULTICAST_MEMBERSHIP_INTERVAL,
+ NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_MIN,
+ NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_MAX,
+ NM_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ multicast_membership_interval);
/**
* NMSettingBridge:multicast-querier-interval:
@@ -2174,14 +2015,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
*
* Since: 1.26
*/
- obj_properties[PROP_MULTICAST_QUERIER_INTERVAL] = g_param_spec_uint64(
- NM_SETTING_BRIDGE_MULTICAST_QUERIER_INTERVAL,
- "",
- "",
- NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_MIN,
- NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_MAX,
- NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint64(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_MULTICAST_QUERIER_INTERVAL,
+ PROP_MULTICAST_QUERIER_INTERVAL,
+ NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_MIN,
+ NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_MAX,
+ NM_BRIDGE_MULTICAST_QUERIER_INTERVAL_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ multicast_querier_interval);
/**
* NMSettingBridge:multicast-query-interval:
@@ -2198,14 +2041,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
*
* Since: 1.26
*/
- obj_properties[PROP_MULTICAST_QUERY_INTERVAL] = g_param_spec_uint64(
- NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL,
- "",
- "",
- NM_BRIDGE_MULTICAST_QUERY_INTERVAL_MIN,
- NM_BRIDGE_MULTICAST_QUERY_INTERVAL_MAX,
- NM_BRIDGE_MULTICAST_QUERY_INTERVAL_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint64(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL,
+ PROP_MULTICAST_QUERY_INTERVAL,
+ NM_BRIDGE_MULTICAST_QUERY_INTERVAL_MIN,
+ NM_BRIDGE_MULTICAST_QUERY_INTERVAL_MAX,
+ NM_BRIDGE_MULTICAST_QUERY_INTERVAL_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ multicast_query_interval);
/**
* NMSettingBridge:multicast-query-response-interval:
@@ -2222,14 +2067,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
*
* Since: 1.26
*/
- obj_properties[PROP_MULTICAST_QUERY_RESPONSE_INTERVAL] = g_param_spec_uint64(
- NM_SETTING_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL,
- "",
- "",
- NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_MIN,
- NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_MAX,
- NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint64(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL,
+ PROP_MULTICAST_QUERY_RESPONSE_INTERVAL,
+ NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_MIN,
+ NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_MAX,
+ NM_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ multicast_query_response_interval);
/**
* NMSettingBridge:multicast-startup-query-count:
@@ -2245,14 +2092,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
*
* Since: 1.26
*/
- obj_properties[PROP_MULTICAST_STARTUP_QUERY_COUNT] =
- g_param_spec_uint(NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT,
- "",
- "",
- NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_MIN,
- NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_MAX,
- NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT,
+ PROP_MULTICAST_STARTUP_QUERY_COUNT,
+ NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_MIN,
+ NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_MAX,
+ NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ multicast_startup_query_count);
/**
* NMSettingBridge:multicast-startup-query-interval:
@@ -2269,14 +2118,16 @@ nm_setting_bridge_class_init(NMSettingBridgeClass *klass)
*
* Since: 1.26
*/
- obj_properties[PROP_MULTICAST_STARTUP_QUERY_INTERVAL] = g_param_spec_uint64(
- NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL,
- "",
- "",
- NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_MIN,
- NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_MAX,
- NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_DEF,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint64(properties_override,
+ obj_properties,
+ NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL,
+ PROP_MULTICAST_STARTUP_QUERY_INTERVAL,
+ NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_MIN,
+ NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_MAX,
+ NM_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_DEF,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingBridgePrivate,
+ multicast_startup_query_interval);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
diff --git a/src/libnm-core-impl/nm-setting-cdma.c b/src/libnm-core-impl/nm-setting-cdma.c
index ca81bf385c..214f3b918b 100644
--- a/src/libnm-core-impl/nm-setting-cdma.c
+++ b/src/libnm-core-impl/nm-setting-cdma.c
@@ -29,7 +29,7 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_NUMBER,
PROP_MTU, );
typedef struct {
- char * number; /* For dialing, duh */
+ char * number;
char * username;
char * password;
guint32 mtu;
@@ -136,23 +136,23 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
{
NMSettingCdmaPrivate *priv = NM_SETTING_CDMA_GET_PRIVATE(setting);
- if (!priv->number) {
- g_set_error_literal(error,
- NM_CONNECTION_ERROR,
- NM_CONNECTION_ERROR_MISSING_PROPERTY,
- _("property is missing"));
- g_prefix_error(error, "%s.%s: ", NM_SETTING_CDMA_SETTING_NAME, NM_SETTING_CDMA_NUMBER);
- return FALSE;
- } else if (!strlen(priv->number)) {
- g_set_error_literal(error,
- NM_CONNECTION_ERROR,
- NM_CONNECTION_ERROR_INVALID_PROPERTY,
- _("property is empty"));
+ if (nm_str_is_empty(priv->number)) {
+ if (!priv->number) {
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_MISSING_PROPERTY,
+ _("property is missing"));
+ } else {
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("property is empty"));
+ }
g_prefix_error(error, "%s.%s: ", NM_SETTING_CDMA_SETTING_NAME, NM_SETTING_CDMA_NUMBER);
return FALSE;
}
- if (priv->username && !strlen(priv->username)) {
+ if (priv->username && nm_str_is_empty(priv->username)) {
g_set_error_literal(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -179,7 +179,7 @@ need_secrets(NMSetting *setting)
NMSettingCdmaPrivate *priv = NM_SETTING_CDMA_GET_PRIVATE(setting);
GPtrArray * secrets = NULL;
- if (priv->password && *priv->password)
+ if (!nm_str_is_empty(priv->password))
return NULL;
if (priv->username) {
@@ -194,65 +194,6 @@ need_secrets(NMSetting *setting)
/*****************************************************************************/
-static void
-get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-{
- NMSettingCdma *setting = NM_SETTING_CDMA(object);
-
- switch (prop_id) {
- case PROP_NUMBER:
- g_value_set_string(value, nm_setting_cdma_get_number(setting));
- break;
- case PROP_USERNAME:
- g_value_set_string(value, nm_setting_cdma_get_username(setting));
- break;
- case PROP_PASSWORD:
- g_value_set_string(value, nm_setting_cdma_get_password(setting));
- break;
- case PROP_PASSWORD_FLAGS:
- g_value_set_flags(value, nm_setting_cdma_get_password_flags(setting));
- break;
- case PROP_MTU:
- g_value_set_uint(value, nm_setting_cdma_get_mtu(setting));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-static void
-set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
-{
- NMSettingCdmaPrivate *priv = NM_SETTING_CDMA_GET_PRIVATE(object);
-
- switch (prop_id) {
- case PROP_NUMBER:
- g_free(priv->number);
- priv->number = g_value_dup_string(value);
- break;
- case PROP_USERNAME:
- g_free(priv->username);
- priv->username = g_value_dup_string(value);
- break;
- case PROP_PASSWORD:
- g_free(priv->password);
- priv->password = g_value_dup_string(value);
- break;
- case PROP_PASSWORD_FLAGS:
- priv->password_flags = g_value_get_flags(value);
- break;
- case PROP_MTU:
- priv->mtu = g_value_get_uint(value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-/*****************************************************************************/
-
static void
nm_setting_cdma_init(NMSettingCdma *setting)
{}
@@ -270,29 +211,17 @@ nm_setting_cdma_new(void)
return g_object_new(NM_TYPE_SETTING_CDMA, NULL);
}
-static void
-finalize(GObject *object)
-{
- NMSettingCdmaPrivate *priv = NM_SETTING_CDMA_GET_PRIVATE(object);
-
- g_free(priv->number);
- g_free(priv->username);
- g_free(priv->password);
-
- G_OBJECT_CLASS(nm_setting_cdma_parent_class)->finalize(object);
-}
-
static void
nm_setting_cdma_class_init(NMSettingCdmaClass *klass)
{
- GObjectClass * object_class = G_OBJECT_CLASS(klass);
- NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
+ GObjectClass * object_class = G_OBJECT_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(NMSettingCdmaPrivate));
- object_class->get_property = get_property;
- object_class->set_property = set_property;
- object_class->finalize = finalize;
+ object_class->get_property = _nm_setting_property_get_property_direct;
+ object_class->set_property = _nm_setting_property_set_property_direct;
setting_class->verify = verify;
setting_class->verify_secrets = verify_secrets;
@@ -305,11 +234,13 @@ nm_setting_cdma_class_init(NMSettingCdmaClass *klass)
* broadband network, if any. If not specified, the default number (#777)
* is used when required.
**/
- obj_properties[PROP_NUMBER] = g_param_spec_string(NM_SETTING_CDMA_NUMBER,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_CDMA_NUMBER,
+ PROP_NUMBER,
+ NM_SETTING_PARAM_NONE,
+ NMSettingCdmaPrivate,
+ number);
/**
* NMSettingCdma:username:
@@ -318,11 +249,13 @@ nm_setting_cdma_class_init(NMSettingCdmaClass *klass)
* providers do not require a username, or accept any username. But if a
* username is required, it is specified here.
**/
- obj_properties[PROP_USERNAME] = g_param_spec_string(NM_SETTING_CDMA_USERNAME,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_CDMA_USERNAME,
+ PROP_USERNAME,
+ NM_SETTING_PARAM_NONE,
+ NMSettingCdmaPrivate,
+ username);
/**
* NMSettingCdma:password:
@@ -331,25 +264,25 @@ nm_setting_cdma_class_init(NMSettingCdmaClass *klass)
* providers do not require a password, or accept any password. But if a
* password is required, it is specified here.
**/
- obj_properties[PROP_PASSWORD] =
- g_param_spec_string(NM_SETTING_CDMA_PASSWORD,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | NM_SETTING_PARAM_SECRET | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_CDMA_PASSWORD,
+ PROP_PASSWORD,
+ NM_SETTING_PARAM_SECRET,
+ NMSettingCdmaPrivate,
+ password);
/**
* NMSettingCdma:password-flags:
*
* Flags indicating how to handle the #NMSettingCdma:password property.
**/
- obj_properties[PROP_PASSWORD_FLAGS] =
- g_param_spec_flags(NM_SETTING_CDMA_PASSWORD_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_SECRET_FLAGS,
- NM_SETTING_SECRET_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_secret_flags(properties_override,
+ obj_properties,
+ NM_SETTING_CDMA_PASSWORD_FLAGS,
+ PROP_PASSWORD_FLAGS,
+ NMSettingCdmaPrivate,
+ password_flags);
/**
* NMSettingCdma:mtu:
@@ -359,16 +292,22 @@ nm_setting_cdma_class_init(NMSettingCdmaClass *klass)
*
* Since: 1.8
**/
- obj_properties[PROP_MTU] = g_param_spec_uint(NM_SETTING_CDMA_MTU,
- "",
- "",
- 0,
- G_MAXUINT32,
- 0,
- G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE
- | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_CDMA_MTU,
+ PROP_MTU,
+ 0,
+ G_MAXUINT32,
+ 0,
+ NM_SETTING_PARAM_FUZZY_IGNORE,
+ NMSettingCdmaPrivate,
+ mtu);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_CDMA, NULL, NULL, 0);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_CDMA,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-connection.c b/src/libnm-core-impl/nm-setting-connection.c
index 89555540ad..322250f884 100644
--- a/src/libnm-core-impl/nm-setting-connection.c
+++ b/src/libnm-core-impl/nm-setting-connection.c
@@ -71,32 +71,32 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMSettingConnection,
PROP_MUD_URL, );
typedef struct {
- GArray * permissions;
- GArray * secondaries;
- char * id;
- char * uuid;
- char * stable_id;
- char * interface_name;
- char * type;
- char * master;
- char * slave_type;
- char * zone;
- char * mud_url;
- guint64 timestamp;
- gint32 autoconnect_priority;
- gint32 autoconnect_retries;
- gint32 multi_connect;
- gint32 auth_retries;
- gint32 mdns;
- gint32 llmnr;
- gint32 dns_over_tls;
- gint32 wait_device_timeout;
- gint32 lldp;
- guint32 gateway_ping_timeout;
- NMSettingConnectionAutoconnectSlaves autoconnect_slaves;
- NMMetered metered;
- bool autoconnect;
- bool read_only;
+ GArray *permissions;
+ GArray *secondaries;
+ char * id;
+ char * uuid;
+ char * stable_id;
+ char * interface_name;
+ char * type;
+ char * master;
+ char * slave_type;
+ char * zone;
+ char * mud_url;
+ guint64 timestamp;
+ int autoconnect_slaves;
+ int metered;
+ gint32 autoconnect_priority;
+ gint32 autoconnect_retries;
+ gint32 multi_connect;
+ gint32 auth_retries;
+ gint32 mdns;
+ gint32 llmnr;
+ gint32 dns_over_tls;
+ gint32 wait_device_timeout;
+ gint32 lldp;
+ guint32 gateway_ping_timeout;
+ bool autoconnect;
+ bool read_only;
} NMSettingConnectionPrivate;
/**
@@ -1293,8 +1293,7 @@ after_interface_name:
return FALSE;
}
- if (priv->metered != NM_METERED_UNKNOWN && priv->metered != NM_METERED_YES
- && priv->metered != NM_METERED_NO) {
+ if (!NM_IN_SET(priv->metered, NM_METERED_UNKNOWN, NM_METERED_NO, NM_METERED_YES)) {
g_set_error(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -1620,21 +1619,6 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
switch (prop_id) {
- case PROP_ID:
- g_value_set_string(value, nm_setting_connection_get_id(setting));
- break;
- case PROP_UUID:
- g_value_set_string(value, nm_setting_connection_get_uuid(setting));
- break;
- case PROP_STABLE_ID:
- g_value_set_string(value, nm_setting_connection_get_stable_id(setting));
- break;
- case PROP_INTERFACE_NAME:
- g_value_set_string(value, nm_setting_connection_get_interface_name(setting));
- break;
- case PROP_TYPE:
- g_value_set_string(value, nm_setting_connection_get_connection_type(setting));
- break;
case PROP_PERMISSIONS:
{
char **strv;
@@ -1650,68 +1634,14 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
g_value_take_boxed(value, strv);
break;
}
- case PROP_AUTOCONNECT:
- g_value_set_boolean(value, nm_setting_connection_get_autoconnect(setting));
- break;
- case PROP_AUTOCONNECT_PRIORITY:
- g_value_set_int(value, nm_setting_connection_get_autoconnect_priority(setting));
- break;
- case PROP_AUTOCONNECT_RETRIES:
- g_value_set_int(value, nm_setting_connection_get_autoconnect_retries(setting));
- break;
- case PROP_MULTI_CONNECT:
- g_value_set_int(value, priv->multi_connect);
- break;
case PROP_TIMESTAMP:
g_value_set_uint64(value, nm_setting_connection_get_timestamp(setting));
break;
- case PROP_READ_ONLY:
- g_value_set_boolean(value, nm_setting_connection_get_read_only(setting));
- break;
- case PROP_ZONE:
- g_value_set_string(value, nm_setting_connection_get_zone(setting));
- break;
- case PROP_MASTER:
- g_value_set_string(value, nm_setting_connection_get_master(setting));
- break;
- case PROP_SLAVE_TYPE:
- g_value_set_string(value, nm_setting_connection_get_slave_type(setting));
- break;
- case PROP_AUTOCONNECT_SLAVES:
- g_value_set_enum(value, nm_setting_connection_get_autoconnect_slaves(setting));
- break;
case PROP_SECONDARIES:
g_value_take_boxed(value, nm_strvarray_get_strv_non_empty_dup(priv->secondaries, NULL));
break;
- case PROP_GATEWAY_PING_TIMEOUT:
- g_value_set_uint(value, priv->gateway_ping_timeout);
- break;
- case PROP_METERED:
- g_value_set_enum(value, priv->metered);
- break;
- case PROP_LLDP:
- g_value_set_int(value, priv->lldp);
- break;
- case PROP_AUTH_RETRIES:
- g_value_set_int(value, priv->auth_retries);
- break;
- case PROP_MDNS:
- g_value_set_int(value, priv->mdns);
- break;
- case PROP_LLMNR:
- g_value_set_int(value, priv->llmnr);
- break;
- case PROP_DNS_OVER_TLS:
- g_value_set_int(value, priv->dns_over_tls);
- break;
- case PROP_WAIT_DEVICE_TIMEOUT:
- g_value_set_int(value, priv->wait_device_timeout);
- break;
- case PROP_MUD_URL:
- g_value_set_string(value, priv->mud_url);
- break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_get_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -1722,26 +1652,6 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE(object);
switch (prop_id) {
- case PROP_ID:
- g_free(priv->id);
- priv->id = g_value_dup_string(value);
- break;
- case PROP_UUID:
- g_free(priv->uuid);
- priv->uuid = g_value_dup_string(value);
- break;
- case PROP_STABLE_ID:
- g_free(priv->stable_id);
- priv->stable_id = g_value_dup_string(value);
- break;
- case PROP_INTERFACE_NAME:
- g_free(priv->interface_name);
- priv->interface_name = g_value_dup_string(value);
- break;
- case PROP_TYPE:
- g_free(priv->type);
- priv->type = g_value_dup_string(value);
- break;
case PROP_PERMISSIONS:
{
const char *const *strv;
@@ -1762,72 +1672,14 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
}
break;
}
- case PROP_AUTOCONNECT:
- priv->autoconnect = g_value_get_boolean(value);
- break;
- case PROP_AUTOCONNECT_PRIORITY:
- priv->autoconnect_priority = g_value_get_int(value);
- break;
- case PROP_AUTOCONNECT_RETRIES:
- priv->autoconnect_retries = g_value_get_int(value);
- break;
- case PROP_MULTI_CONNECT:
- priv->multi_connect = g_value_get_int(value);
- break;
case PROP_TIMESTAMP:
priv->timestamp = g_value_get_uint64(value);
break;
- case PROP_READ_ONLY:
- priv->read_only = g_value_get_boolean(value);
- break;
- case PROP_ZONE:
- g_free(priv->zone);
- priv->zone = g_value_dup_string(value);
- break;
- case PROP_MASTER:
- g_free(priv->master);
- priv->master = g_value_dup_string(value);
- break;
- case PROP_SLAVE_TYPE:
- g_free(priv->slave_type);
- priv->slave_type = g_value_dup_string(value);
- break;
- case PROP_AUTOCONNECT_SLAVES:
- priv->autoconnect_slaves = g_value_get_enum(value);
- break;
case PROP_SECONDARIES:
nm_strvarray_set_strv(&priv->secondaries, g_value_get_boxed(value));
break;
- case PROP_GATEWAY_PING_TIMEOUT:
- priv->gateway_ping_timeout = g_value_get_uint(value);
- break;
- case PROP_METERED:
- priv->metered = g_value_get_enum(value);
- break;
- case PROP_LLDP:
- priv->lldp = g_value_get_int(value);
- break;
- case PROP_AUTH_RETRIES:
- priv->auth_retries = g_value_get_int(value);
- break;
- case PROP_MDNS:
- priv->mdns = g_value_get_int(value);
- break;
- case PROP_LLMNR:
- priv->llmnr = g_value_get_int(value);
- break;
- case PROP_DNS_OVER_TLS:
- priv->dns_over_tls = g_value_get_int(value);
- break;
- case PROP_WAIT_DEVICE_TIMEOUT:
- priv->wait_device_timeout = g_value_get_int(value);
- break;
- case PROP_MUD_URL:
- g_free(priv->mud_url);
- priv->mud_url = g_value_dup_string(value);
- break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_set_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -1836,11 +1688,7 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
static void
nm_setting_connection_init(NMSettingConnection *setting)
-{
- NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
-
- priv->autoconnect_slaves = NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_DEFAULT;
-}
+{}
/**
* nm_setting_connection_new:
@@ -1860,15 +1708,6 @@ finalize(GObject *object)
{
NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE(object);
- g_free(priv->id);
- g_free(priv->uuid);
- g_free(priv->stable_id);
- g_free(priv->interface_name);
- g_free(priv->type);
- g_free(priv->zone);
- g_free(priv->master);
- g_free(priv->slave_type);
- g_free(priv->mud_url);
nm_clear_pointer(&priv->permissions, g_array_unref);
nm_clear_pointer(&priv->secondaries, g_array_unref);
@@ -2366,13 +2205,15 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
* when this connection is activated.
* ---end---
*/
- obj_properties[PROP_AUTOCONNECT_SLAVES] = g_param_spec_enum(
- NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES,
- "",
- "",
- NM_TYPE_SETTING_CONNECTION_AUTOCONNECT_SLAVES,
- NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_DEFAULT,
- G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_enum(properties_override,
+ obj_properties,
+ NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES,
+ PROP_AUTOCONNECT_SLAVES,
+ NM_TYPE_SETTING_CONNECTION_AUTOCONNECT_SLAVES,
+ NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_DEFAULT,
+ NM_SETTING_PARAM_FUZZY_IGNORE,
+ NMSettingConnectionPrivate,
+ autoconnect_slaves);
/**
* NMSettingConnection:secondaries:
@@ -2439,13 +2280,15 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
* example: CONNECTION_METERED=yes
* ---end---
*/
- obj_properties[PROP_METERED] = g_param_spec_enum(
- NM_SETTING_CONNECTION_METERED,
- "",
- "",
- NM_TYPE_METERED,
- NM_METERED_UNKNOWN,
- G_PARAM_READWRITE | NM_SETTING_PARAM_REAPPLY_IMMEDIATELY | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_enum(properties_override,
+ obj_properties,
+ NM_SETTING_CONNECTION_METERED,
+ PROP_METERED,
+ NM_TYPE_METERED,
+ NM_METERED_UNKNOWN,
+ NM_SETTING_PARAM_REAPPLY_IMMEDIATELY,
+ NMSettingConnectionPrivate,
+ metered);
/**
* NMSettingConnection:lldp:
diff --git a/src/libnm-core-impl/nm-setting-dcb.c b/src/libnm-core-impl/nm-setting-dcb.c
index 45a42bcfe1..a6f4a973e5 100644
--- a/src/libnm-core-impl/nm-setting-dcb.c
+++ b/src/libnm-core-impl/nm-setting-dcb.c
@@ -48,21 +48,21 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMSettingDcb,
PROP_PRIORITY_TRAFFIC_CLASS, );
typedef struct {
- char * app_fcoe_mode;
- guint pfc[8];
- guint priority_group_id[8];
- guint priority_group_bandwidth[8];
- guint priority_bandwidth[8];
- guint priority_strict[8];
- guint priority_traffic_class[8];
- int app_fcoe_priority;
- int app_iscsi_priority;
- int app_fip_priority;
- NMSettingDcbFlags app_fcoe_flags;
- NMSettingDcbFlags app_iscsi_flags;
- NMSettingDcbFlags app_fip_flags;
- NMSettingDcbFlags pfc_flags;
- NMSettingDcbFlags priority_group_flags;
+ char * app_fcoe_mode;
+ guint pfc[8];
+ guint priority_group_id[8];
+ guint priority_group_bandwidth[8];
+ guint priority_bandwidth[8];
+ guint priority_strict[8];
+ guint priority_traffic_class[8];
+ guint app_fcoe_flags;
+ guint app_iscsi_flags;
+ guint app_fip_flags;
+ guint pfc_flags;
+ guint priority_group_flags;
+ gint32 app_fcoe_priority;
+ gint32 app_iscsi_priority;
+ gint32 app_fip_priority;
} NMSettingDcbPrivate;
/**
@@ -607,17 +607,10 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
error))
return FALSE;
- if (!priv->app_fcoe_mode) {
- g_set_error_literal(error,
- NM_CONNECTION_ERROR,
- NM_CONNECTION_ERROR_MISSING_PROPERTY,
- _("property missing"));
- g_prefix_error(error, "%s.%s: ", NM_SETTING_DCB_SETTING_NAME, NM_SETTING_DCB_APP_FCOE_MODE);
- return FALSE;
- }
-
- if (strcmp(priv->app_fcoe_mode, NM_SETTING_DCB_FCOE_MODE_FABRIC)
- && strcmp(priv->app_fcoe_mode, NM_SETTING_DCB_FCOE_MODE_VN2VN)) {
+ if (!NM_IN_STRSET(priv->app_fcoe_mode,
+ NULL,
+ NM_SETTING_DCB_FCOE_MODE_FABRIC,
+ NM_SETTING_DCB_FCOE_MODE_VN2VN)) {
g_set_error_literal(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -772,36 +765,9 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
NMSettingDcbPrivate *priv = NM_SETTING_DCB_GET_PRIVATE(setting);
switch (prop_id) {
- case PROP_APP_FCOE_FLAGS:
- g_value_set_flags(value, priv->app_fcoe_flags);
- break;
- case PROP_APP_FCOE_PRIORITY:
- g_value_set_int(value, priv->app_fcoe_priority);
- break;
- case PROP_APP_FCOE_MODE:
- g_value_set_string(value, priv->app_fcoe_mode);
- break;
- case PROP_APP_ISCSI_FLAGS:
- g_value_set_flags(value, priv->app_iscsi_flags);
- break;
- case PROP_APP_ISCSI_PRIORITY:
- g_value_set_int(value, priv->app_iscsi_priority);
- break;
- case PROP_APP_FIP_FLAGS:
- g_value_set_flags(value, priv->app_fip_flags);
- break;
- case PROP_APP_FIP_PRIORITY:
- g_value_set_int(value, priv->app_fip_priority);
- break;
- case PROP_PFC_FLAGS:
- g_value_set_flags(value, priv->pfc_flags);
- break;
case PROP_PRIORITY_FLOW_CONTROL:
SET_GVALUE_FROM_ARRAY(value, priv->pfc);
break;
- case PROP_PRIORITY_GROUP_FLAGS:
- g_value_set_flags(value, priv->priority_group_flags);
- break;
case PROP_PRIORITY_GROUP_ID:
SET_GVALUE_FROM_ARRAY(value, priv->priority_group_id);
break;
@@ -818,7 +784,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
SET_GVALUE_FROM_ARRAY(value, priv->priority_traffic_class);
break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_get_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -829,37 +795,9 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
NMSettingDcbPrivate *priv = NM_SETTING_DCB_GET_PRIVATE(object);
switch (prop_id) {
- case PROP_APP_FCOE_FLAGS:
- priv->app_fcoe_flags = g_value_get_flags(value);
- break;
- case PROP_APP_FCOE_PRIORITY:
- priv->app_fcoe_priority = g_value_get_int(value);
- break;
- case PROP_APP_FCOE_MODE:
- g_free(priv->app_fcoe_mode);
- priv->app_fcoe_mode = g_value_dup_string(value);
- break;
- case PROP_APP_ISCSI_FLAGS:
- priv->app_iscsi_flags = g_value_get_flags(value);
- break;
- case PROP_APP_ISCSI_PRIORITY:
- priv->app_iscsi_priority = g_value_get_int(value);
- break;
- case PROP_APP_FIP_FLAGS:
- priv->app_fip_flags = g_value_get_flags(value);
- break;
- case PROP_APP_FIP_PRIORITY:
- priv->app_fip_priority = g_value_get_int(value);
- break;
- case PROP_PFC_FLAGS:
- priv->pfc_flags = g_value_get_flags(value);
- break;
case PROP_PRIORITY_FLOW_CONTROL:
SET_ARRAY_FROM_GVALUE(value, priv->pfc);
break;
- case PROP_PRIORITY_GROUP_FLAGS:
- priv->priority_group_flags = g_value_get_flags(value);
- break;
case PROP_PRIORITY_GROUP_ID:
SET_ARRAY_FROM_GVALUE(value, priv->priority_group_id);
break;
@@ -876,7 +814,7 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
SET_ARRAY_FROM_GVALUE(value, priv->priority_traffic_class);
break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_set_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -885,14 +823,7 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
static void
nm_setting_dcb_init(NMSettingDcb *self)
-{
- NMSettingDcbPrivate *priv = NM_SETTING_DCB_GET_PRIVATE(self);
-
- priv->app_fcoe_mode = g_strdup(NM_SETTING_DCB_FCOE_MODE_FABRIC);
- priv->app_fcoe_priority = -1;
- priv->app_fip_priority = -1;
- priv->app_iscsi_priority = -1;
-}
+{}
/**
* nm_setting_dcb_new:
@@ -907,16 +838,6 @@ nm_setting_dcb_new(void)
return g_object_new(NM_TYPE_SETTING_DCB, NULL);
}
-static void
-finalize(GObject *object)
-{
- NMSettingDcbPrivate *priv = NM_SETTING_DCB_GET_PRIVATE(object);
-
- g_free(priv->app_fcoe_mode);
-
- G_OBJECT_CLASS(nm_setting_dcb_parent_class)->finalize(object);
-}
-
static void
nm_setting_dcb_class_init(NMSettingDcbClass *klass)
{
@@ -928,7 +849,6 @@ nm_setting_dcb_class_init(NMSettingDcbClass *klass)
object_class->get_property = get_property;
object_class->set_property = set_property;
- object_class->finalize = finalize;
setting_class->verify = verify;
@@ -947,13 +867,15 @@ nm_setting_dcb_class_init(NMSettingDcbClass *klass)
* example: DCB_APP_FCOE_ENABLE=yes DCB_APP_FCOE_ADVERTISE=yes
* ---end---
*/
- obj_properties[PROP_APP_FCOE_FLAGS] =
- g_param_spec_flags(NM_SETTING_DCB_APP_FCOE_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_DCB_FLAGS,
- NM_SETTING_DCB_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_flags(properties_override,
+ obj_properties,
+ NM_SETTING_DCB_APP_FCOE_FLAGS,
+ PROP_APP_FCOE_FLAGS,
+ NM_TYPE_SETTING_DCB_FLAGS,
+ NM_SETTING_DCB_FLAG_NONE,
+ NM_SETTING_PARAM_NONE,
+ NMSettingDcbPrivate,
+ app_fcoe_flags);
/**
* NMSettingDcb:app-fcoe-priority:
@@ -969,20 +891,25 @@ nm_setting_dcb_class_init(NMSettingDcbClass *klass)
* description: Priority of FCoE frames.
* ---end---
*/
- obj_properties[PROP_APP_FCOE_PRIORITY] =
- g_param_spec_int(NM_SETTING_DCB_APP_FCOE_PRIORITY,
- "",
- "",
- -1,
- 7,
- -1,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_int32(properties_override,
+ obj_properties,
+ NM_SETTING_DCB_APP_FCOE_PRIORITY,
+ PROP_APP_FCOE_PRIORITY,
+ -1,
+ 7,
+ -1,
+ NM_SETTING_PARAM_NONE,
+ NMSettingDcbPrivate,
+ app_fcoe_priority);
/**
* NMSettingDcb:app-fcoe-mode:
*
* The FCoE controller mode; either %NM_SETTING_DCB_FCOE_MODE_FABRIC
- * (default) or %NM_SETTING_DCB_FCOE_MODE_VN2VN.
+ * or %NM_SETTING_DCB_FCOE_MODE_VN2VN.
+ *
+ * Since 1.34, %NULL is the default and means %NM_SETTING_DCB_FCOE_MODE_FABRIC.
+ * Before 1.34, %NULL was rejected as invalid and the default was %NM_SETTING_DCB_FCOE_MODE_FABRIC.
**/
/* ---ifcfg-rh---
* property: app-fcoe-mode
@@ -992,12 +919,13 @@ nm_setting_dcb_class_init(NMSettingDcbClass *klass)
* description: FCoE controller mode.
* ---end---
*/
- obj_properties[PROP_APP_FCOE_MODE] =
- g_param_spec_string(NM_SETTING_DCB_APP_FCOE_MODE,
- "",
- "",
- NM_SETTING_DCB_FCOE_MODE_FABRIC,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_DCB_APP_FCOE_MODE,
+ PROP_APP_FCOE_MODE,
+ NM_SETTING_PARAM_NONE,
+ NMSettingDcbPrivate,
+ app_fcoe_mode);
/**
* NMSettingDcb:app-iscsi-flags:
@@ -1013,13 +941,15 @@ nm_setting_dcb_class_init(NMSettingDcbClass *klass)
* description: iSCSI flags.
* ---end---
*/
- obj_properties[PROP_APP_ISCSI_FLAGS] =
- g_param_spec_flags(NM_SETTING_DCB_APP_ISCSI_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_DCB_FLAGS,
- NM_SETTING_DCB_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_flags(properties_override,
+ obj_properties,
+ NM_SETTING_DCB_APP_ISCSI_FLAGS,
+ PROP_APP_ISCSI_FLAGS,
+ NM_TYPE_SETTING_DCB_FLAGS,
+ NM_SETTING_DCB_FLAG_NONE,
+ NM_SETTING_PARAM_NONE,
+ NMSettingDcbPrivate,
+ app_iscsi_flags);
/**
* NMSettingDcb:app-iscsi-priority:
@@ -1035,14 +965,16 @@ nm_setting_dcb_class_init(NMSettingDcbClass *klass)
* description: Priority of iSCSI frames.
* ---end---
*/
- obj_properties[PROP_APP_ISCSI_PRIORITY] =
- g_param_spec_int(NM_SETTING_DCB_APP_ISCSI_PRIORITY,
- "",
- "",
- -1,
- 7,
- -1,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_int32(properties_override,
+ obj_properties,
+ NM_SETTING_DCB_APP_ISCSI_PRIORITY,
+ PROP_APP_ISCSI_PRIORITY,
+ -1,
+ 7,
+ -1,
+ NM_SETTING_PARAM_NONE,
+ NMSettingDcbPrivate,
+ app_iscsi_priority);
/**
* NMSettingDcb:app-fip-flags:
@@ -1058,13 +990,15 @@ nm_setting_dcb_class_init(NMSettingDcbClass *klass)
* description: FIP flags.
* ---end---
*/
- obj_properties[PROP_APP_FIP_FLAGS] =
- g_param_spec_flags(NM_SETTING_DCB_APP_FIP_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_DCB_FLAGS,
- NM_SETTING_DCB_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_flags(properties_override,
+ obj_properties,
+ NM_SETTING_DCB_APP_FIP_FLAGS,
+ PROP_APP_FIP_FLAGS,
+ NM_TYPE_SETTING_DCB_FLAGS,
+ NM_SETTING_DCB_FLAG_NONE,
+ NM_SETTING_PARAM_NONE,
+ NMSettingDcbPrivate,
+ app_fip_flags);
/**
* NMSettingDcb:app-fip-priority:
@@ -1080,14 +1014,16 @@ nm_setting_dcb_class_init(NMSettingDcbClass *klass)
* description: Priority of FIP frames.
* ---end---
*/
- obj_properties[PROP_APP_FIP_PRIORITY] =
- g_param_spec_int(NM_SETTING_DCB_APP_FIP_PRIORITY,
- "",
- "",
- -1,
- 7,
- -1,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_int32(properties_override,
+ obj_properties,
+ NM_SETTING_DCB_APP_FIP_PRIORITY,
+ PROP_APP_FIP_PRIORITY,
+ -1,
+ 7,
+ -1,
+ NM_SETTING_PARAM_NONE,
+ NMSettingDcbPrivate,
+ app_fip_priority);
/**
* NMSettingDcb:priority-flow-control-flags:
@@ -1103,12 +1039,15 @@ nm_setting_dcb_class_init(NMSettingDcbClass *klass)
* description: Priority flow control flags.
* ---end---
*/
- obj_properties[PROP_PFC_FLAGS] = g_param_spec_flags(NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_DCB_FLAGS,
- NM_SETTING_DCB_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_flags(properties_override,
+ obj_properties,
+ NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS,
+ PROP_PFC_FLAGS,
+ NM_TYPE_SETTING_DCB_FLAGS,
+ NM_SETTING_DCB_FLAG_NONE,
+ NM_SETTING_PARAM_NONE,
+ NMSettingDcbPrivate,
+ pfc_flags);
/**
* NMSettingDcb:priority-flow-control: (type GArray(gboolean))
@@ -1149,13 +1088,15 @@ nm_setting_dcb_class_init(NMSettingDcbClass *klass)
* description: Priority groups flags.
* ---end---
*/
- obj_properties[PROP_PRIORITY_GROUP_FLAGS] =
- g_param_spec_flags(NM_SETTING_DCB_PRIORITY_GROUP_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_DCB_FLAGS,
- NM_SETTING_DCB_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_flags(properties_override,
+ obj_properties,
+ NM_SETTING_DCB_PRIORITY_GROUP_FLAGS,
+ PROP_PRIORITY_GROUP_FLAGS,
+ NM_TYPE_SETTING_DCB_FLAGS,
+ NM_SETTING_DCB_FLAG_NONE,
+ NM_SETTING_PARAM_NONE,
+ NMSettingDcbPrivate,
+ priority_group_flags);
/**
* NMSettingDcb:priority-group-id: (type GArray(guint))
diff --git a/src/libnm-core-impl/nm-setting-hostname.c b/src/libnm-core-impl/nm-setting-hostname.c
index d002d70eab..d0a1568435 100644
--- a/src/libnm-core-impl/nm-setting-hostname.c
+++ b/src/libnm-core-impl/nm-setting-hostname.c
@@ -34,9 +34,9 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMSettingHostname,
struct _NMSettingHostname {
NMSetting parent;
int priority;
- NMTernary from_dhcp;
- NMTernary from_dns_lookup;
- NMTernary only_from_default;
+ int from_dhcp;
+ int from_dns_lookup;
+ int only_from_default;
};
struct _NMSettingHostnameClass {
@@ -123,63 +123,9 @@ nm_setting_hostname_get_only_from_default(NMSettingHostname *setting)
/*****************************************************************************/
-static void
-get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-{
- NMSettingHostname *self = NM_SETTING_HOSTNAME(object);
-
- switch (prop_id) {
- case PROP_PRIORITY:
- g_value_set_int(value, self->priority);
- break;
- case PROP_FROM_DHCP:
- g_value_set_enum(value, self->from_dhcp);
- break;
- case PROP_FROM_DNS_LOOKUP:
- g_value_set_enum(value, self->from_dns_lookup);
- break;
- case PROP_ONLY_FROM_DEFAULT:
- g_value_set_enum(value, self->only_from_default);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-static void
-set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
-{
- NMSettingHostname *self = NM_SETTING_HOSTNAME(object);
-
- switch (prop_id) {
- case PROP_PRIORITY:
- self->priority = g_value_get_int(value);
- break;
- case PROP_FROM_DHCP:
- self->from_dhcp = g_value_get_enum(value);
- break;
- case PROP_FROM_DNS_LOOKUP:
- self->from_dns_lookup = g_value_get_enum(value);
- break;
- case PROP_ONLY_FROM_DEFAULT:
- self->only_from_default = g_value_get_enum(value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-/*****************************************************************************/
-
static void
nm_setting_hostname_init(NMSettingHostname *setting)
-{
- setting->from_dhcp = NM_TERNARY_DEFAULT;
- setting->from_dns_lookup = NM_TERNARY_DEFAULT;
- setting->only_from_default = NM_TERNARY_DEFAULT;
-}
+{}
/**
* nm_setting_hostname_new:
@@ -199,11 +145,12 @@ nm_setting_hostname_new(void)
static void
nm_setting_hostname_class_init(NMSettingHostnameClass *klass)
{
- GObjectClass * object_class = G_OBJECT_CLASS(klass);
- NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
+ GObjectClass * object_class = G_OBJECT_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->set_property = set_property;
+ object_class->get_property = _nm_setting_property_get_property_direct;
+ object_class->set_property = _nm_setting_property_set_property_direct;
/**
* NMSettingHostname:priority
@@ -234,13 +181,16 @@ nm_setting_hostname_class_init(NMSettingHostnameClass *klass)
* example: HOSTNAME_PRIORITY=50
* ---end---
*/
- obj_properties[PROP_PRIORITY] = g_param_spec_int(NM_SETTING_HOSTNAME_PRIORITY,
- "",
- "",
- G_MININT32,
- G_MAXINT32,
- 0,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_int32(properties_override,
+ obj_properties,
+ NM_SETTING_HOSTNAME_PRIORITY,
+ PROP_PRIORITY,
+ G_MININT32,
+ G_MAXINT32,
+ 0,
+ NM_SETTING_PARAM_NONE,
+ NMSettingHostname,
+ priority);
/**
* NMSettingHostname:from-dhcp
@@ -262,13 +212,13 @@ nm_setting_hostname_class_init(NMSettingHostnameClass *klass)
* example: HOSTNAME_FROM_DHCP=0,1
* ---end---
*/
- obj_properties[PROP_FROM_DHCP] = g_param_spec_enum(
- NM_SETTING_HOSTNAME_FROM_DHCP,
- "",
- "",
- NM_TYPE_TERNARY,
- NM_TERNARY_DEFAULT,
- NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_ternary_enum(properties_override,
+ obj_properties,
+ NM_SETTING_HOSTNAME_FROM_DHCP,
+ PROP_FROM_DHCP,
+ NM_SETTING_PARAM_FUZZY_IGNORE,
+ NMSettingHostname,
+ from_dhcp);
/**
* NMSettingHostname:from-dns-lookup
@@ -291,13 +241,13 @@ nm_setting_hostname_class_init(NMSettingHostnameClass *klass)
* example: HOSTNAME_FROM_DNS_LOOKUP=0,1
* ---end---
*/
- obj_properties[PROP_FROM_DNS_LOOKUP] = g_param_spec_enum(
- NM_SETTING_HOSTNAME_FROM_DNS_LOOKUP,
- "",
- "",
- NM_TYPE_TERNARY,
- NM_TERNARY_DEFAULT,
- NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_ternary_enum(properties_override,
+ obj_properties,
+ NM_SETTING_HOSTNAME_FROM_DNS_LOOKUP,
+ PROP_FROM_DNS_LOOKUP,
+ NM_SETTING_PARAM_FUZZY_IGNORE,
+ NMSettingHostname,
+ from_dns_lookup);
/**
* NMSettingHostname:only-from-default
@@ -325,15 +275,19 @@ nm_setting_hostname_class_init(NMSettingHostnameClass *klass)
* example: HOSTNAME_ONLY_FROM_DEFAULT=0,1
* ---end---
*/
- obj_properties[PROP_ONLY_FROM_DEFAULT] = g_param_spec_enum(
- NM_SETTING_HOSTNAME_ONLY_FROM_DEFAULT,
- "",
- "",
- NM_TYPE_TERNARY,
- NM_TERNARY_DEFAULT,
- NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_ternary_enum(properties_override,
+ obj_properties,
+ NM_SETTING_HOSTNAME_ONLY_FROM_DEFAULT,
+ PROP_ONLY_FROM_DEFAULT,
+ NM_SETTING_PARAM_FUZZY_IGNORE,
+ NMSettingHostname,
+ only_from_default);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_HOSTNAME, NULL, NULL, 0);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_HOSTNAME,
+ NULL,
+ properties_override,
+ 0);
}
diff --git a/src/libnm-core-impl/nm-setting-infiniband.c b/src/libnm-core-impl/nm-setting-infiniband.c
index 117d89fced..adbf3636a6 100644
--- a/src/libnm-core-impl/nm-setting-infiniband.c
+++ b/src/libnm-core-impl/nm-setting-infiniband.c
@@ -379,7 +379,6 @@ finalize(GObject *object)
NMSettingInfinibandPrivate *priv = NM_SETTING_INFINIBAND_GET_PRIVATE(object);
g_free(priv->transport_mode);
- g_free(priv->mac_address);
g_free(priv->parent);
g_free(priv->virtual_iface_name);
diff --git a/src/libnm-core-impl/nm-setting-ip-config.c b/src/libnm-core-impl/nm-setting-ip-config.c
index 182ab0188c..33779ed952 100644
--- a/src/libnm-core-impl/nm-setting-ip-config.c
+++ b/src/libnm-core-impl/nm-setting-ip-config.c
@@ -6082,11 +6082,6 @@ finalize(GObject *object)
NMSettingIPConfig * self = NM_SETTING_IP_CONFIG(object);
NMSettingIPConfigPrivate *priv = NM_SETTING_IP_CONFIG_GET_PRIVATE(self);
- g_free(priv->method);
- g_free(priv->gateway);
- g_free(priv->dhcp_hostname);
- g_free(priv->dhcp_iaid);
-
g_ptr_array_unref(priv->dns);
g_ptr_array_unref(priv->dns_search);
if (priv->dns_options)
diff --git a/src/libnm-core-impl/nm-setting-ip-tunnel.c b/src/libnm-core-impl/nm-setting-ip-tunnel.c
index f75ca1d5b7..38f9047dca 100644
--- a/src/libnm-core-impl/nm-setting-ip-tunnel.c
+++ b/src/libnm-core-impl/nm-setting-ip-tunnel.c
@@ -632,21 +632,6 @@ nm_setting_ip_tunnel_new(void)
return g_object_new(NM_TYPE_SETTING_IP_TUNNEL, NULL);
}
-static void
-finalize(GObject *object)
-{
- NMSettingIPTunnel * setting = NM_SETTING_IP_TUNNEL(object);
- NMSettingIPTunnelPrivate *priv = NM_SETTING_IP_TUNNEL_GET_PRIVATE(setting);
-
- g_free(priv->parent);
- g_free(priv->local);
- g_free(priv->remote);
- g_free(priv->input_key);
- g_free(priv->output_key);
-
- G_OBJECT_CLASS(nm_setting_ip_tunnel_parent_class)->finalize(object);
-}
-
static void
nm_setting_ip_tunnel_class_init(NMSettingIPTunnelClass *klass)
{
@@ -658,7 +643,6 @@ nm_setting_ip_tunnel_class_init(NMSettingIPTunnelClass *klass)
object_class->get_property = get_property;
object_class->set_property = set_property;
- object_class->finalize = finalize;
setting_class->verify = verify;
diff --git a/src/libnm-core-impl/nm-setting-ip4-config.c b/src/libnm-core-impl/nm-setting-ip4-config.c
index 6f13acbfb5..a7b3d68bd3 100644
--- a/src/libnm-core-impl/nm-setting-ip4-config.c
+++ b/src/libnm-core-impl/nm-setting-ip4-config.c
@@ -590,18 +590,6 @@ nm_setting_ip4_config_new(void)
return g_object_new(NM_TYPE_SETTING_IP4_CONFIG, NULL);
}
-static void
-finalize(GObject *object)
-{
- NMSettingIP4ConfigPrivate *priv = NM_SETTING_IP4_CONFIG_GET_PRIVATE(object);
-
- g_free(priv->dhcp_client_id);
- g_free(priv->dhcp_fqdn);
- g_free(priv->dhcp_vendor_class_identifier);
-
- G_OBJECT_CLASS(nm_setting_ip4_config_parent_class)->finalize(object);
-}
-
static void
nm_setting_ip4_config_class_init(NMSettingIP4ConfigClass *klass)
{
@@ -614,7 +602,6 @@ nm_setting_ip4_config_class_init(NMSettingIP4ConfigClass *klass)
object_class->get_property = get_property;
object_class->set_property = set_property;
- object_class->finalize = finalize;
setting_class->verify = verify;
diff --git a/src/libnm-core-impl/nm-setting-ip6-config.c b/src/libnm-core-impl/nm-setting-ip6-config.c
index 4b135a05ae..87b9d9581f 100644
--- a/src/libnm-core-impl/nm-setting-ip6-config.c
+++ b/src/libnm-core-impl/nm-setting-ip6-config.c
@@ -583,18 +583,6 @@ nm_setting_ip6_config_new(void)
return g_object_new(NM_TYPE_SETTING_IP6_CONFIG, NULL);
}
-static void
-finalize(GObject *object)
-{
- NMSettingIP6Config * self = NM_SETTING_IP6_CONFIG(object);
- NMSettingIP6ConfigPrivate *priv = NM_SETTING_IP6_CONFIG_GET_PRIVATE(self);
-
- g_free(priv->token);
- g_free(priv->dhcp_duid);
-
- G_OBJECT_CLASS(nm_setting_ip6_config_parent_class)->finalize(object);
-}
-
static void
nm_setting_ip6_config_class_init(NMSettingIP6ConfigClass *klass)
{
@@ -607,7 +595,6 @@ nm_setting_ip6_config_class_init(NMSettingIP6ConfigClass *klass)
object_class->get_property = get_property;
object_class->set_property = set_property;
- object_class->finalize = finalize;
setting_class->verify = verify;
diff --git a/src/libnm-core-impl/nm-setting-olpc-mesh.c b/src/libnm-core-impl/nm-setting-olpc-mesh.c
index 558b266adc..0da1d5b427 100644
--- a/src/libnm-core-impl/nm-setting-olpc-mesh.c
+++ b/src/libnm-core-impl/nm-setting-olpc-mesh.c
@@ -147,55 +147,6 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
/*****************************************************************************/
-static void
-get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-{
- NMSettingOlpcMesh *setting = NM_SETTING_OLPC_MESH(object);
-
- switch (prop_id) {
- case PROP_SSID:
- g_value_set_boxed(value, nm_setting_olpc_mesh_get_ssid(setting));
- break;
- case PROP_CHANNEL:
- g_value_set_uint(value, nm_setting_olpc_mesh_get_channel(setting));
- break;
- case PROP_DHCP_ANYCAST_ADDRESS:
- g_value_set_string(value, nm_setting_olpc_mesh_get_dhcp_anycast_address(setting));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-static void
-set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
-{
- NMSettingOlpcMeshPrivate *priv = NM_SETTING_OLPC_MESH_GET_PRIVATE(object);
-
- switch (prop_id) {
- case PROP_SSID:
- if (priv->ssid)
- g_bytes_unref(priv->ssid);
- priv->ssid = g_value_dup_boxed(value);
- break;
- case PROP_CHANNEL:
- priv->channel = g_value_get_uint(value);
- break;
- case PROP_DHCP_ANYCAST_ADDRESS:
- g_free(priv->dhcp_anycast_addr);
- priv->dhcp_anycast_addr =
- _nm_utils_hwaddr_canonical_or_invalid(g_value_get_string(value), ETH_ALEN);
-
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-/*****************************************************************************/
-
static void
nm_setting_olpc_mesh_init(NMSettingOlpcMesh *setting)
{}
@@ -213,18 +164,6 @@ nm_setting_olpc_mesh_new(void)
return g_object_new(NM_TYPE_SETTING_OLPC_MESH, NULL);
}
-static void
-finalize(GObject *object)
-{
- NMSettingOlpcMeshPrivate *priv = NM_SETTING_OLPC_MESH_GET_PRIVATE(object);
-
- if (priv->ssid)
- g_bytes_unref(priv->ssid);
- g_free(priv->dhcp_anycast_addr);
-
- G_OBJECT_CLASS(nm_setting_olpc_mesh_parent_class)->finalize(object);
-}
-
static void
nm_setting_olpc_mesh_class_init(NMSettingOlpcMeshClass *klass)
{
@@ -234,9 +173,8 @@ nm_setting_olpc_mesh_class_init(NMSettingOlpcMeshClass *klass)
g_type_class_add_private(klass, sizeof(NMSettingOlpcMeshPrivate));
- object_class->get_property = get_property;
- object_class->set_property = set_property;
- object_class->finalize = finalize;
+ object_class->get_property = _nm_setting_property_get_property_direct;
+ object_class->set_property = _nm_setting_property_set_property_direct;
setting_class->verify = verify;
@@ -245,26 +183,29 @@ nm_setting_olpc_mesh_class_init(NMSettingOlpcMeshClass *klass)
*
* SSID of the mesh network to join.
**/
- obj_properties[PROP_SSID] = g_param_spec_boxed(NM_SETTING_OLPC_MESH_SSID,
- "",
- "",
- G_TYPE_BYTES,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE
- | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_bytes(properties_override,
+ obj_properties,
+ NM_SETTING_OLPC_MESH_SSID,
+ PROP_SSID,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingOlpcMeshPrivate,
+ ssid);
/**
* NMSettingOlpcMesh:channel:
*
* Channel on which the mesh network to join is located.
**/
- obj_properties[PROP_CHANNEL] =
- g_param_spec_uint(NM_SETTING_OLPC_MESH_CHANNEL,
- "",
- "",
- 0,
- G_MAXUINT32,
- 0,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_OLPC_MESH_CHANNEL,
+ PROP_CHANNEL,
+ 0,
+ G_MAXUINT32,
+ 0,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingOlpcMeshPrivate,
+ channel);
/**
* NMSettingOlpcMesh:dhcp-anycast-address:
diff --git a/src/libnm-core-impl/nm-setting-ovs-port.c b/src/libnm-core-impl/nm-setting-ovs-port.c
index 0b10473d07..fc593268ee 100644
--- a/src/libnm-core-impl/nm-setting-ovs-port.c
+++ b/src/libnm-core-impl/nm-setting-ovs-port.c
@@ -291,8 +291,7 @@ nm_setting_ovs_port_class_init(NMSettingOvsPortClass *klass)
object_class->get_property = _nm_setting_property_get_property_direct;
object_class->set_property = _nm_setting_property_set_property_direct;
- setting_class->verify = verify;
- setting_class->finalize_direct = TRUE;
+ setting_class->verify = verify;
/**
* NMSettingOvsPort:vlan-mode:
diff --git a/src/libnm-core-impl/nm-setting-ppp.c b/src/libnm-core-impl/nm-setting-ppp.c
index 83708515ce..e4e4951e8a 100644
--- a/src/libnm-core-impl/nm-setting-ppp.c
+++ b/src/libnm-core-impl/nm-setting-ppp.c
@@ -407,8 +407,7 @@ nm_setting_ppp_class_init(NMSettingPppClass *klass)
object_class->get_property = _nm_setting_property_get_property_direct;
object_class->set_property = _nm_setting_property_set_property_direct;
- setting_class->verify = verify;
- setting_class->finalize_direct = TRUE;
+ setting_class->verify = verify;
/**
* NMSettingPpp:noauth:
diff --git a/src/libnm-core-impl/nm-setting-pppoe.c b/src/libnm-core-impl/nm-setting-pppoe.c
index 1c97c05b15..3ae547a24c 100644
--- a/src/libnm-core-impl/nm-setting-pppoe.c
+++ b/src/libnm-core-impl/nm-setting-pppoe.c
@@ -30,11 +30,11 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_PARENT,
PROP_PASSWORD_FLAGS, );
typedef struct {
- char * parent;
- char * service;
- char * username;
- char * password;
- NMSettingSecretFlags password_flags;
+ char *parent;
+ char *service;
+ char *username;
+ char *password;
+ guint password_flags;
} NMSettingPppoePrivate;
/**
@@ -138,23 +138,23 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
NMSettingPppoePrivate *priv = NM_SETTING_PPPOE_GET_PRIVATE(setting);
gs_free_error GError *local_error = NULL;
- if (!priv->username) {
- g_set_error_literal(error,
- NM_CONNECTION_ERROR,
- NM_CONNECTION_ERROR_MISSING_PROPERTY,
- _("property is missing"));
- g_prefix_error(error, "%s.%s: ", NM_SETTING_PPPOE_SETTING_NAME, NM_SETTING_PPPOE_USERNAME);
- return FALSE;
- } else if (!strlen(priv->username)) {
- g_set_error_literal(error,
- NM_CONNECTION_ERROR,
- NM_CONNECTION_ERROR_INVALID_PROPERTY,
- _("property is empty"));
+ if (nm_str_is_empty(priv->username)) {
+ if (!priv->username) {
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_MISSING_PROPERTY,
+ _("property is missing"));
+ } else {
+ g_set_error_literal(error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("property is empty"));
+ }
g_prefix_error(error, "%s.%s: ", NM_SETTING_PPPOE_SETTING_NAME, NM_SETTING_PPPOE_USERNAME);
return FALSE;
}
- if (priv->service && !strlen(priv->service)) {
+ if (priv->service && nm_str_is_empty(priv->service)) {
g_set_error_literal(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -196,66 +196,6 @@ need_secrets(NMSetting *setting)
/*****************************************************************************/
-static void
-get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-{
- NMSettingPppoe *setting = NM_SETTING_PPPOE(object);
-
- switch (prop_id) {
- case PROP_PARENT:
- g_value_set_string(value, nm_setting_pppoe_get_parent(setting));
- break;
- case PROP_SERVICE:
- g_value_set_string(value, nm_setting_pppoe_get_service(setting));
- break;
- case PROP_USERNAME:
- g_value_set_string(value, nm_setting_pppoe_get_username(setting));
- break;
- case PROP_PASSWORD:
- g_value_set_string(value, nm_setting_pppoe_get_password(setting));
- break;
- case PROP_PASSWORD_FLAGS:
- g_value_set_flags(value, nm_setting_pppoe_get_password_flags(setting));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-static void
-set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
-{
- NMSettingPppoePrivate *priv = NM_SETTING_PPPOE_GET_PRIVATE(object);
-
- switch (prop_id) {
- case PROP_PARENT:
- g_free(priv->parent);
- priv->parent = g_value_dup_string(value);
- break;
- case PROP_SERVICE:
- g_free(priv->service);
- priv->service = g_value_dup_string(value);
- break;
- case PROP_USERNAME:
- g_free(priv->username);
- priv->username = g_value_dup_string(value);
- break;
- case PROP_PASSWORD:
- g_free(priv->password);
- priv->password = g_value_dup_string(value);
- break;
- case PROP_PASSWORD_FLAGS:
- priv->password_flags = g_value_get_flags(value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-/*****************************************************************************/
-
static void
nm_setting_pppoe_init(NMSettingPppoe *setting)
{}
@@ -273,30 +213,17 @@ nm_setting_pppoe_new(void)
return g_object_new(NM_TYPE_SETTING_PPPOE, NULL);
}
-static void
-finalize(GObject *object)
-{
- NMSettingPppoePrivate *priv = NM_SETTING_PPPOE_GET_PRIVATE(object);
-
- g_free(priv->parent);
- g_free(priv->username);
- g_free(priv->password);
- g_free(priv->service);
-
- G_OBJECT_CLASS(nm_setting_pppoe_parent_class)->finalize(object);
-}
-
static void
nm_setting_pppoe_class_init(NMSettingPppoeClass *klass)
{
- GObjectClass * object_class = G_OBJECT_CLASS(klass);
- NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
+ GObjectClass * object_class = G_OBJECT_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(NMSettingPppoePrivate));
- object_class->get_property = get_property;
- object_class->set_property = set_property;
- object_class->finalize = finalize;
+ object_class->get_property = _nm_setting_property_get_property_direct;
+ object_class->set_property = _nm_setting_property_set_property_direct;
setting_class->verify = verify;
setting_class->need_secrets = need_secrets;
@@ -311,12 +238,13 @@ nm_setting_pppoe_class_init(NMSettingPppoeClass *klass)
*
* Since: 1.10
**/
- obj_properties[PROP_PARENT] = g_param_spec_string(
- NM_SETTING_PPPOE_PARENT,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_PPPOE_PARENT,
+ PROP_PARENT,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingPppoePrivate,
+ parent);
/**
* NMSettingPppoe:service:
@@ -326,49 +254,57 @@ nm_setting_pppoe_class_init(NMSettingPppoeClass *klass)
* this should be left blank. It is only required if there are multiple
* access concentrators or a specific service is known to be required.
**/
- obj_properties[PROP_SERVICE] = g_param_spec_string(NM_SETTING_PPPOE_SERVICE,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_PPPOE_SERVICE,
+ PROP_SERVICE,
+ NM_SETTING_PARAM_NONE,
+ NMSettingPppoePrivate,
+ service);
/**
* NMSettingPppoe:username:
*
* Username used to authenticate with the PPPoE service.
**/
- obj_properties[PROP_USERNAME] = g_param_spec_string(NM_SETTING_PPPOE_USERNAME,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_PPPOE_USERNAME,
+ PROP_USERNAME,
+ NM_SETTING_PARAM_NONE,
+ NMSettingPppoePrivate,
+ username);
/**
* NMSettingPppoe:password:
*
* Password used to authenticate with the PPPoE service.
**/
- obj_properties[PROP_PASSWORD] =
- g_param_spec_string(NM_SETTING_PPPOE_PASSWORD,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | NM_SETTING_PARAM_SECRET | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_PPPOE_PASSWORD,
+ PROP_PASSWORD,
+ NM_SETTING_PARAM_SECRET,
+ NMSettingPppoePrivate,
+ password);
/**
* NMSettingPppoe:password-flags:
*
* Flags indicating how to handle the #NMSettingPppoe:password property.
**/
- obj_properties[PROP_PASSWORD_FLAGS] =
- g_param_spec_flags(NM_SETTING_PPPOE_PASSWORD_FLAGS,
- "",
- "",
- NM_TYPE_SETTING_SECRET_FLAGS,
- NM_SETTING_SECRET_FLAG_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_secret_flags(properties_override,
+ obj_properties,
+ NM_SETTING_PPPOE_PASSWORD_FLAGS,
+ PROP_PASSWORD_FLAGS,
+ NMSettingPppoePrivate,
+ password_flags);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_PPPOE, NULL, NULL, 0);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_PPPOE,
+ NULL,
+ properties_override,
+ NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS);
}
diff --git a/src/libnm-core-impl/nm-setting-private.h b/src/libnm-core-impl/nm-setting-private.h
index b7c60536a0..7faf5d1c64 100644
--- a/src/libnm-core-impl/nm-setting-private.h
+++ b/src/libnm-core-impl/nm-setting-private.h
@@ -103,21 +103,6 @@ struct _NMSettingClass {
guint /* NMSettingParseFlags */ parse_flags,
GError ** error);
- union {
- gpointer padding[1];
- struct {
- /* Whether NMSetting.finalize() calls _nm_setting_property_finalize_direct(). Subclasses
- * need to be aware of that, and currently this is opt-in.
- *
- * The only reason because subclasses need to be aware of this, is that they
- * otherwise might clear the properties already and leave dangling pointers.
- *
- * Eventually all setting classes should stop touching their direct properties
- * during finalize, and always let NMSetting.finalize() handle them. */
- bool finalize_direct : 1;
- };
- };
-
const struct _NMMetaSettingInfo *setting_info;
};
@@ -291,7 +276,11 @@ extern const NMSettInfoPropertType nm_sett_info_propert_type_plain_u;
extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_boolean;
extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_int32;
extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_uint32;
+extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_uint64;
extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_string;
+extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_bytes;
+extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_enum;
+extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_flags;
extern const NMSettInfoPropertType nm_sett_info_propert_type_direct_mac_address;
NMSettingVerifyResult
@@ -596,6 +585,51 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
/*****************************************************************************/
+#define _nm_setting_property_define_direct_uint64(properties_override, \
+ obj_properties, \
+ prop_name, \
+ prop_id, \
+ min_value, \
+ max_value, \
+ default_value, \
+ param_flags, \
+ private_struct_type, \
+ private_struct_field, \
+ ... /* extra NMSettInfoProperty fields */) \
+ G_STMT_START \
+ { \
+ GParamSpec *_param_spec; \
+ \
+ G_STATIC_ASSERT( \
+ !NM_FLAGS_ANY((param_flags), \
+ ~(NM_SETTING_PARAM_FUZZY_IGNORE | NM_SETTING_PARAM_INFERRABLE))); \
+ G_STATIC_ASSERT((min_value) <= (default_value)); \
+ G_STATIC_ASSERT((default_value) == 0 || (default_value) -1u < (max_value)); \
+ G_STATIC_ASSERT((max_value) <= G_MAXUINT64); \
+ \
+ _param_spec = \
+ g_param_spec_uint64("" prop_name "", \
+ "", \
+ "", \
+ (min_value), \
+ (max_value), \
+ (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, \
+ &nm_sett_info_propert_type_direct_uint64, \
+ .direct_offset = \
+ NM_STRUCT_OFFSET_ENSURE_TYPE(guint64, private_struct_type, private_struct_field), \
+ __VA_ARGS__); \
+ } \
+ G_STMT_END
+
+/*****************************************************************************/
+
#define _nm_setting_property_define_direct_string_full(properties_override, \
obj_properties, \
prop_name, \
@@ -659,6 +693,165 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
/*****************************************************************************/
+#define _nm_setting_property_define_direct_bytes(properties_override, \
+ obj_properties, \
+ prop_name, \
+ prop_id, \
+ param_flags, \
+ private_struct_type, \
+ private_struct_field, \
+ ... /* extra NMSettInfoProperty fields */) \
+ G_STMT_START \
+ { \
+ GParamSpec *_param_spec; \
+ \
+ G_STATIC_ASSERT(!NM_FLAGS_ANY((param_flags), \
+ ~(NM_SETTING_PARAM_SECRET | NM_SETTING_PARAM_INFERRABLE \
+ | NM_SETTING_PARAM_FUZZY_IGNORE))); \
+ \
+ _param_spec = \
+ g_param_spec_boxed("" prop_name "", \
+ "", \
+ "", \
+ G_TYPE_BYTES, \
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | (param_flags)); \
+ \
+ (obj_properties)[(prop_id)] = _param_spec; \
+ \
+ _nm_properties_override_gobj( \
+ (properties_override), \
+ _param_spec, \
+ &nm_sett_info_propert_type_direct_bytes, \
+ .direct_offset = \
+ NM_STRUCT_OFFSET_ENSURE_TYPE(GBytes *, private_struct_type, private_struct_field), \
+ __VA_ARGS__); \
+ } \
+ G_STMT_END
+
+/*****************************************************************************/
+
+#define _nm_setting_property_define_direct_enum(properties_override, \
+ obj_properties, \
+ prop_name, \
+ prop_id, \
+ gtype_enum, \
+ default_value, \
+ param_flags, \
+ private_struct_type, \
+ private_struct_field, \
+ ... /* extra NMSettInfoProperty fields */) \
+ G_STMT_START \
+ { \
+ GParamSpec *_param_spec; \
+ \
+ G_STATIC_ASSERT( \
+ !NM_FLAGS_ANY((param_flags), \
+ ~(NM_SETTING_PARAM_REAPPLY_IMMEDIATELY | NM_SETTING_PARAM_FUZZY_IGNORE \
+ | NM_SETTING_PARAM_INFERRABLE))); \
+ \
+ _param_spec = \
+ g_param_spec_enum("" prop_name "", \
+ "", \
+ "", \
+ (gtype_enum), \
+ (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, \
+ &nm_sett_info_propert_type_direct_enum, \
+ .direct_offset = \
+ NM_STRUCT_OFFSET_ENSURE_TYPE(int, private_struct_type, private_struct_field), \
+ __VA_ARGS__); \
+ } \
+ G_STMT_END
+
+/*****************************************************************************/
+
+#define _nm_setting_property_define_direct_ternary_enum(properties_override, \
+ obj_properties, \
+ prop_name, \
+ prop_id, \
+ param_flags, \
+ private_struct_type, \
+ private_struct_field, \
+ ...) \
+ _nm_setting_property_define_direct_enum((properties_override), \
+ (obj_properties), \
+ prop_name, \
+ (prop_id), \
+ NM_TYPE_TERNARY, \
+ NM_TERNARY_DEFAULT, \
+ (param_flags), \
+ private_struct_type, \
+ private_struct_field, \
+ __VA_ARGS__)
+
+/*****************************************************************************/
+
+#define _nm_setting_property_define_direct_flags(properties_override, \
+ obj_properties, \
+ prop_name, \
+ prop_id, \
+ gtype_flags, \
+ default_value, \
+ param_flags, \
+ private_struct_type, \
+ private_struct_field, \
+ ... /* extra NMSettInfoProperty fields */) \
+ G_STMT_START \
+ { \
+ GParamSpec *_param_spec; \
+ \
+ G_STATIC_ASSERT( \
+ !NM_FLAGS_ANY((param_flags), \
+ ~(NM_SETTING_PARAM_FUZZY_IGNORE | NM_SETTING_PARAM_INFERRABLE))); \
+ \
+ _param_spec = \
+ g_param_spec_flags("" prop_name "", \
+ "", \
+ "", \
+ (gtype_flags), \
+ (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, \
+ &nm_sett_info_propert_type_direct_flags, \
+ .direct_offset = \
+ NM_STRUCT_OFFSET_ENSURE_TYPE(guint, private_struct_type, private_struct_field), \
+ __VA_ARGS__); \
+ } \
+ G_STMT_END
+
+/*****************************************************************************/
+
+#define _nm_setting_property_define_direct_secret_flags(properties_override, \
+ obj_properties, \
+ prop_name, \
+ prop_id, \
+ private_struct_type, \
+ private_struct_field, \
+ ... /* extra NMSettInfoProperty fields */) \
+ _nm_setting_property_define_direct_flags((properties_override), \
+ (obj_properties), \
+ prop_name, \
+ (prop_id), \
+ NM_TYPE_SETTING_SECRET_FLAGS, \
+ NM_SETTING_SECRET_FLAG_NONE, \
+ NM_SETTING_PARAM_NONE, \
+ private_struct_type, \
+ private_struct_field, \
+ ##__VA_ARGS__)
+
+/*****************************************************************************/
+
#define _nm_setting_property_define_direct_mac_address(properties_override, \
obj_properties, \
prop_name, \
diff --git a/src/libnm-core-impl/nm-setting-proxy.c b/src/libnm-core-impl/nm-setting-proxy.c
index 3f888ec7d3..0425ec456e 100644
--- a/src/libnm-core-impl/nm-setting-proxy.c
+++ b/src/libnm-core-impl/nm-setting-proxy.c
@@ -29,10 +29,10 @@
NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_METHOD, PROP_BROWSER_ONLY, PROP_PAC_URL, PROP_PAC_SCRIPT, );
typedef struct {
- char *pac_url;
- char *pac_script;
- int method;
- bool browser_only;
+ char * pac_url;
+ char * pac_script;
+ gint32 method;
+ bool browser_only;
} NMSettingProxyPrivate;
/**
@@ -207,63 +207,9 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
/*****************************************************************************/
-static void
-get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-{
- NMSettingProxy *setting = NM_SETTING_PROXY(object);
-
- switch (prop_id) {
- case PROP_METHOD:
- g_value_set_int(value, nm_setting_proxy_get_method(setting));
- break;
- case PROP_BROWSER_ONLY:
- g_value_set_boolean(value, nm_setting_proxy_get_browser_only(setting));
- break;
- case PROP_PAC_URL:
- g_value_set_string(value, nm_setting_proxy_get_pac_url(setting));
- break;
- case PROP_PAC_SCRIPT:
- g_value_set_string(value, nm_setting_proxy_get_pac_script(setting));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-static void
-set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
-{
- NMSettingProxyPrivate *priv = NM_SETTING_PROXY_GET_PRIVATE(object);
-
- switch (prop_id) {
- case PROP_METHOD:
- priv->method = g_value_get_int(value);
- break;
- case PROP_BROWSER_ONLY:
- priv->browser_only = g_value_get_boolean(value);
- break;
- case PROP_PAC_URL:
- g_free(priv->pac_url);
- priv->pac_url = g_value_dup_string(value);
- break;
- case PROP_PAC_SCRIPT:
- g_free(priv->pac_script);
- priv->pac_script = g_value_dup_string(value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-/*****************************************************************************/
-
static void
nm_setting_proxy_init(NMSettingProxy *self)
-{
- nm_assert(NM_SETTING_PROXY_GET_PRIVATE(self)->method == NM_SETTING_PROXY_METHOD_NONE);
-}
+{}
/**
* nm_setting_proxy_new:
@@ -280,18 +226,6 @@ nm_setting_proxy_new(void)
return g_object_new(NM_TYPE_SETTING_PROXY, NULL);
}
-static void
-finalize(GObject *object)
-{
- NMSettingProxy * self = NM_SETTING_PROXY(object);
- NMSettingProxyPrivate *priv = NM_SETTING_PROXY_GET_PRIVATE(self);
-
- g_free(priv->pac_url);
- g_free(priv->pac_script);
-
- G_OBJECT_CLASS(nm_setting_proxy_parent_class)->finalize(object);
-}
-
static void
nm_setting_proxy_class_init(NMSettingProxyClass *klass)
{
@@ -301,9 +235,8 @@ nm_setting_proxy_class_init(NMSettingProxyClass *klass)
g_type_class_add_private(klass, sizeof(NMSettingProxyPrivate));
- object_class->get_property = get_property;
- object_class->set_property = set_property;
- object_class->finalize = finalize;
+ object_class->get_property = _nm_setting_property_get_property_direct;
+ object_class->set_property = _nm_setting_property_set_property_direct;
setting_class->verify = verify;
@@ -323,13 +256,16 @@ nm_setting_proxy_class_init(NMSettingProxyClass *klass)
* values: none, auto
* ---end---
*/
- obj_properties[PROP_METHOD] = g_param_spec_int(NM_SETTING_PROXY_METHOD,
- "",
- "",
- G_MININT32,
- G_MAXINT32,
- NM_SETTING_PROXY_METHOD_NONE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_int32(properties_override,
+ obj_properties,
+ NM_SETTING_PROXY_METHOD,
+ PROP_METHOD,
+ G_MININT32,
+ G_MAXINT32,
+ NM_SETTING_PROXY_METHOD_NONE,
+ NM_SETTING_PARAM_NONE,
+ NMSettingProxyPrivate,
+ method);
/**
* NMSettingProxy:browser-only:
@@ -368,11 +304,13 @@ nm_setting_proxy_class_init(NMSettingProxyClass *klass)
* example: PAC_URL=http://wpad.mycompany.com/wpad.dat
* ---end---
*/
- obj_properties[PROP_PAC_URL] = g_param_spec_string(NM_SETTING_PROXY_PAC_URL,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_PROXY_PAC_URL,
+ PROP_PAC_URL,
+ NM_SETTING_PARAM_NONE,
+ NMSettingProxyPrivate,
+ pac_url);
/**
* NMSettingProxy:pac-script:
@@ -388,12 +326,13 @@ nm_setting_proxy_class_init(NMSettingProxyClass *klass)
* example: PAC_SCRIPT=/home/joe/proxy.pac
* ---end---
*/
- obj_properties[PROP_PAC_SCRIPT] =
- g_param_spec_string(NM_SETTING_PROXY_PAC_SCRIPT,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_PROXY_PAC_SCRIPT,
+ PROP_PAC_SCRIPT,
+ NM_SETTING_PARAM_NONE,
+ NMSettingProxyPrivate,
+ pac_script);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
diff --git a/src/libnm-core-impl/nm-setting-serial.c b/src/libnm-core-impl/nm-setting-serial.c
index 7f407326ad..3ebcf0623f 100644
--- a/src/libnm-core-impl/nm-setting-serial.c
+++ b/src/libnm-core-impl/nm-setting-serial.c
@@ -30,9 +30,9 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_BAUD,
typedef struct {
guint64 send_delay;
- guint baud;
- guint bits;
- guint stopbits;
+ guint32 baud;
+ guint32 bits;
+ guint32 stopbits;
char parity;
} NMSettingSerialPrivate;
@@ -129,6 +129,8 @@ nm_setting_serial_get_send_delay(NMSettingSerial *setting)
return NM_SETTING_SERIAL_GET_PRIVATE(setting)->send_delay;
}
+/*****************************************************************************/
+
static GVariant *
parity_to_dbus_fcn(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil)
{
@@ -170,23 +172,11 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
NMSettingSerial *setting = NM_SETTING_SERIAL(object);
switch (prop_id) {
- case PROP_BAUD:
- g_value_set_uint(value, nm_setting_serial_get_baud(setting));
- break;
- case PROP_BITS:
- g_value_set_uint(value, nm_setting_serial_get_bits(setting));
- break;
case PROP_PARITY:
g_value_set_enum(value, nm_setting_serial_get_parity(setting));
break;
- case PROP_STOPBITS:
- g_value_set_uint(value, nm_setting_serial_get_stopbits(setting));
- break;
- case PROP_SEND_DELAY:
- g_value_set_uint64(value, nm_setting_serial_get_send_delay(setting));
- break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_get_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -197,23 +187,11 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
NMSettingSerialPrivate *priv = NM_SETTING_SERIAL_GET_PRIVATE(object);
switch (prop_id) {
- case PROP_BAUD:
- priv->baud = g_value_get_uint(value);
- break;
- case PROP_BITS:
- priv->bits = g_value_get_uint(value);
- break;
case PROP_PARITY:
priv->parity = g_value_get_enum(value);
break;
- case PROP_STOPBITS:
- priv->stopbits = g_value_get_uint(value);
- break;
- case PROP_SEND_DELAY:
- priv->send_delay = g_value_get_uint64(value);
- break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_set_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -226,9 +204,6 @@ nm_setting_serial_init(NMSettingSerial *self)
NMSettingSerialPrivate *priv = NM_SETTING_SERIAL_GET_PRIVATE(self);
nm_assert(priv->parity == NM_SETTING_SERIAL_PARITY_NONE);
- priv->stopbits = 1;
- priv->baud = 57600;
- priv->bits = 8;
}
/**
@@ -263,26 +238,32 @@ nm_setting_serial_class_init(NMSettingSerialClass *klass)
* value usually has no effect for mobile broadband modems as they generally
* ignore speed settings and use the highest available speed.
**/
- obj_properties[PROP_BAUD] = g_param_spec_uint(NM_SETTING_SERIAL_BAUD,
- "",
- "",
- 0,
- G_MAXUINT,
- 57600,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_SERIAL_BAUD,
+ PROP_BAUD,
+ 0,
+ G_MAXUINT32,
+ 57600,
+ NM_SETTING_PARAM_NONE,
+ NMSettingSerialPrivate,
+ baud);
/**
* NMSettingSerial:bits:
*
* Byte-width of the serial communication. The 8 in "8n1" for example.
**/
- obj_properties[PROP_BITS] = g_param_spec_uint(NM_SETTING_SERIAL_BITS,
- "",
- "",
- 5,
- 8,
- 8,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_SERIAL_BITS,
+ PROP_BITS,
+ 5,
+ 8,
+ 8,
+ NM_SETTING_PARAM_NONE,
+ NMSettingSerialPrivate,
+ bits);
/**
* NMSettingSerial:parity:
@@ -326,27 +307,32 @@ nm_setting_serial_class_init(NMSettingSerialClass *klass)
* Number of stop bits for communication on the serial port. Either 1 or 2.
* The 1 in "8n1" for example.
**/
- obj_properties[PROP_STOPBITS] = g_param_spec_uint(NM_SETTING_SERIAL_STOPBITS,
- "",
- "",
- 1,
- 2,
- 1,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_SERIAL_STOPBITS,
+ PROP_STOPBITS,
+ 1,
+ 2,
+ 1,
+ NM_SETTING_PARAM_NONE,
+ NMSettingSerialPrivate,
+ stopbits);
/**
* NMSettingSerial:send-delay:
*
* Time to delay between each byte sent to the modem, in microseconds.
**/
- obj_properties[PROP_SEND_DELAY] =
- g_param_spec_uint64(NM_SETTING_SERIAL_SEND_DELAY,
- "",
- "",
- 0,
- G_MAXUINT64,
- 0,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint64(properties_override,
+ obj_properties,
+ NM_SETTING_SERIAL_SEND_DELAY,
+ PROP_SEND_DELAY,
+ 0,
+ G_MAXUINT64,
+ 0,
+ NM_SETTING_PARAM_NONE,
+ NMSettingSerialPrivate,
+ send_delay);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
diff --git a/src/libnm-core-impl/nm-setting-tun.c b/src/libnm-core-impl/nm-setting-tun.c
index 2698a14541..c26948472b 100644
--- a/src/libnm-core-impl/nm-setting-tun.c
+++ b/src/libnm-core-impl/nm-setting-tun.c
@@ -228,8 +228,7 @@ nm_setting_tun_class_init(NMSettingTunClass *klass)
object_class->get_property = _nm_setting_property_get_property_direct;
object_class->set_property = _nm_setting_property_set_property_direct;
- setting_class->verify = verify;
- setting_class->finalize_direct = TRUE;
+ setting_class->verify = verify;
/**
* NMSettingTun:mode:
diff --git a/src/libnm-core-impl/nm-setting-vlan.c b/src/libnm-core-impl/nm-setting-vlan.c
index e31f672e5e..1124953edc 100644
--- a/src/libnm-core-impl/nm-setting-vlan.c
+++ b/src/libnm-core-impl/nm-setting-vlan.c
@@ -90,6 +90,7 @@ guint32
nm_setting_vlan_get_id(NMSettingVlan *setting)
{
g_return_val_if_fail(NM_IS_SETTING_VLAN(setting), 0);
+
return NM_SETTING_VLAN_GET_PRIVATE(setting)->id;
}
@@ -738,9 +739,6 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
case PROP_PARENT:
g_value_set_string(value, priv->parent);
break;
- case PROP_ID:
- g_value_set_uint(value, priv->id);
- break;
case PROP_FLAGS:
g_value_set_flags(value, priv->flags);
break;
@@ -751,7 +749,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
g_value_take_boxed(value, priority_maplist_to_strv(priv->egress_priority_map));
break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_get_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -767,9 +765,6 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
g_free(priv->parent);
priv->parent = g_value_dup_string(value);
break;
- case PROP_ID:
- priv->id = g_value_get_uint(value);
- break;
case PROP_FLAGS:
priv->flags = g_value_get_flags(value);
break;
@@ -784,7 +779,7 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
priority_strv_to_maplist(NM_VLAN_EGRESS_MAP, g_value_get_boxed(value));
break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_set_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -876,14 +871,16 @@ nm_setting_vlan_class_init(NMSettingVlanClass *klass)
* prefer the detected ID from the DEVICE over VLAN_ID.
* ---end---
*/
- obj_properties[PROP_ID] =
- g_param_spec_uint(NM_SETTING_VLAN_ID,
- "",
- "",
- 0,
- 4095,
- 0,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_VLAN_ID,
+ PROP_ID,
+ 0,
+ 4095,
+ 0,
+ NM_SETTING_PARAM_INFERRABLE,
+ NMSettingVlanPrivate,
+ id);
/**
* NMSettingVlan:flags:
diff --git a/src/libnm-core-impl/nm-setting-vrf.c b/src/libnm-core-impl/nm-setting-vrf.c
index e2707053ef..f998a7dd69 100644
--- a/src/libnm-core-impl/nm-setting-vrf.c
+++ b/src/libnm-core-impl/nm-setting-vrf.c
@@ -109,8 +109,7 @@ nm_setting_vrf_class_init(NMSettingVrfClass *klass)
object_class->get_property = _nm_setting_property_get_property_direct;
object_class->set_property = _nm_setting_property_set_property_direct;
- setting_class->verify = verify;
- setting_class->finalize_direct = TRUE;
+ setting_class->verify = verify;
/**
* NMSettingVrf:table:
diff --git a/src/libnm-core-impl/nm-setting-wifi-p2p.c b/src/libnm-core-impl/nm-setting-wifi-p2p.c
index 1d27ee538a..06d450fccb 100644
--- a/src/libnm-core-impl/nm-setting-wifi-p2p.c
+++ b/src/libnm-core-impl/nm-setting-wifi-p2p.c
@@ -35,10 +35,9 @@
NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_PEER, PROP_WPS_METHOD, PROP_WFD_IES, );
typedef struct {
- char * peer_mac_address;
+ char * peer;
GBytes *wfd_ies;
-
- NMSettingWirelessSecurityWpsMethod wps_method;
+ guint32 wps_method;
} NMSettingWifiP2PPrivate;
struct _NMSettingWifiP2P {
@@ -70,7 +69,7 @@ nm_setting_wifi_p2p_get_peer(NMSettingWifiP2P *setting)
{
g_return_val_if_fail(NM_IS_SETTING_WIFI_P2P(setting), NULL);
- return NM_SETTING_WIFI_P2P_GET_PRIVATE(setting)->peer_mac_address;
+ return NM_SETTING_WIFI_P2P_GET_PRIVATE(setting)->peer;
}
/**
@@ -113,7 +112,7 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
{
NMSettingWifiP2PPrivate *priv = NM_SETTING_WIFI_P2P_GET_PRIVATE(setting);
- if (!priv->peer_mac_address) {
+ if (!priv->peer) {
g_set_error_literal(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_MISSING_PROPERTY,
@@ -125,7 +124,7 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
return FALSE;
}
- if (!nm_utils_hwaddr_valid(priv->peer_mac_address, ETH_ALEN)) {
+ if (!nm_utils_hwaddr_valid(priv->peer, ETH_ALEN)) {
g_set_error_literal(error,
NM_CONNECTION_ERROR,
NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -149,53 +148,6 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
/*****************************************************************************/
-static void
-get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-{
- NMSettingWifiP2P *setting = NM_SETTING_WIFI_P2P(object);
-
- switch (prop_id) {
- case PROP_PEER:
- g_value_set_string(value, nm_setting_wifi_p2p_get_peer(setting));
- break;
- case PROP_WPS_METHOD:
- g_value_set_uint(value, nm_setting_wifi_p2p_get_wps_method(setting));
- break;
- case PROP_WFD_IES:
- g_value_set_boxed(value, nm_setting_wifi_p2p_get_wfd_ies(setting));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-static void
-set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
-{
- NMSettingWifiP2PPrivate *priv = NM_SETTING_WIFI_P2P_GET_PRIVATE(object);
-
- switch (prop_id) {
- case PROP_PEER:
- g_free(priv->peer_mac_address);
- priv->peer_mac_address =
- _nm_utils_hwaddr_canonical_or_invalid(g_value_get_string(value), ETH_ALEN);
- break;
- case PROP_WPS_METHOD:
- priv->wps_method = g_value_get_uint(value);
- break;
- case PROP_WFD_IES:
- nm_clear_pointer(&priv->wfd_ies, g_bytes_unref);
- priv->wfd_ies = g_value_dup_boxed(value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-/*****************************************************************************/
-
static void
nm_setting_wifi_p2p_init(NMSettingWifiP2P *setting)
{}
@@ -215,26 +167,15 @@ nm_setting_wifi_p2p_new(void)
return g_object_new(NM_TYPE_SETTING_WIFI_P2P, NULL);
}
-static void
-finalize(GObject *object)
-{
- NMSettingWifiP2PPrivate *priv = NM_SETTING_WIFI_P2P_GET_PRIVATE(object);
-
- g_free(priv->peer_mac_address);
- g_bytes_unref(priv->wfd_ies);
-
- G_OBJECT_CLASS(nm_setting_wifi_p2p_parent_class)->finalize(object);
-}
-
static void
nm_setting_wifi_p2p_class_init(NMSettingWifiP2PClass *setting_wifi_p2p_class)
{
- GObjectClass * object_class = G_OBJECT_CLASS(setting_wifi_p2p_class);
- NMSettingClass *setting_class = NM_SETTING_CLASS(setting_wifi_p2p_class);
+ GObjectClass * object_class = G_OBJECT_CLASS(setting_wifi_p2p_class);
+ NMSettingClass *setting_class = NM_SETTING_CLASS(setting_wifi_p2p_class);
+ GArray * properties_override = _nm_sett_info_property_override_create_array();
- object_class->get_property = get_property;
- object_class->set_property = set_property;
- object_class->finalize = finalize;
+ object_class->get_property = _nm_setting_property_get_property_direct;
+ object_class->set_property = _nm_setting_property_set_property_direct;
setting_class->verify = verify;
@@ -254,11 +195,13 @@ nm_setting_wifi_p2p_class_init(NMSettingWifiP2PClass *setting_wifi_p2p_class)
* (e.g. 0;34;104;18;121;162).
* ---end---
*/
- obj_properties[PROP_PEER] = g_param_spec_string(NM_SETTING_WIFI_P2P_PEER,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_string(properties_override,
+ obj_properties,
+ NM_SETTING_WIFI_P2P_PEER,
+ PROP_PEER,
+ NM_SETTING_PARAM_NONE,
+ NMSettingWifiP2P,
+ _priv.peer);
/**
* NMSettingWifiP2P:wps-method:
@@ -270,14 +213,16 @@ nm_setting_wifi_p2p_class_init(NMSettingWifiP2PClass *setting_wifi_p2p_class)
*
* Since: 1.16
*/
- obj_properties[PROP_WPS_METHOD] = g_param_spec_uint(
- NM_SETTING_WIFI_P2P_WPS_METHOD,
- "",
- "",
- 0,
- G_MAXUINT32,
- NM_SETTING_WIRELESS_SECURITY_WPS_METHOD_DEFAULT,
- G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_uint32(properties_override,
+ obj_properties,
+ NM_SETTING_WIFI_P2P_WPS_METHOD,
+ PROP_WPS_METHOD,
+ 0,
+ G_MAXUINT32,
+ NM_SETTING_WIRELESS_SECURITY_WPS_METHOD_DEFAULT,
+ NM_SETTING_PARAM_FUZZY_IGNORE,
+ NMSettingWifiP2P,
+ _priv.wps_method);
/**
* NMSettingWifiP2P:wfd-ies:
@@ -291,14 +236,19 @@ nm_setting_wifi_p2p_class_init(NMSettingWifiP2PClass *setting_wifi_p2p_class)
*
* Since: 1.16
*/
- obj_properties[PROP_WFD_IES] = g_param_spec_boxed(
- NM_SETTING_WIFI_P2P_WFD_IES,
- "",
- "",
- G_TYPE_BYTES,
- G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_bytes(properties_override,
+ obj_properties,
+ NM_SETTING_WIFI_P2P_WFD_IES,
+ PROP_WFD_IES,
+ NM_SETTING_PARAM_FUZZY_IGNORE,
+ NMSettingWifiP2P,
+ _priv.wfd_ies);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
- _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_WIFI_P2P, NULL, NULL, 0);
+ _nm_setting_class_commit(setting_class,
+ NM_META_SETTING_TYPE_WIFI_P2P,
+ NULL,
+ properties_override,
+ 0);
}
diff --git a/src/libnm-core-impl/nm-setting-wimax.c b/src/libnm-core-impl/nm-setting-wimax.c
index 48a662262f..f7fed08e82 100644
--- a/src/libnm-core-impl/nm-setting-wimax.c
+++ b/src/libnm-core-impl/nm-setting-wimax.c
@@ -208,7 +208,6 @@ finalize(GObject *object)
NMSettingWimaxPrivate *priv = NM_SETTING_WIMAX_GET_PRIVATE(object);
g_free(priv->network_name);
- g_free(priv->mac_address);
G_OBJECT_CLASS(nm_setting_wimax_parent_class)->finalize(object);
}
diff --git a/src/libnm-core-impl/nm-setting-wired.c b/src/libnm-core-impl/nm-setting-wired.c
index 796354444a..8c9bdcd447 100644
--- a/src/libnm-core-impl/nm-setting-wired.c
+++ b/src/libnm-core-impl/nm-setting-wired.c
@@ -1230,22 +1230,14 @@ finalize(GObject *object)
{
NMSettingWiredPrivate *priv = NM_SETTING_WIRED_GET_PRIVATE(object);
- g_free(priv->port);
- g_free(priv->duplex);
- g_free(priv->s390_nettype);
-
_s390_options_clear(priv);
- g_free(priv->device_mac_address);
g_free(priv->cloned_mac_address);
- g_free(priv->generate_mac_address_mask);
g_array_unref(priv->mac_address_blacklist);
if (priv->s390_subchannels)
g_strfreev(priv->s390_subchannels);
- g_free(priv->wol_password);
-
G_OBJECT_CLASS(nm_setting_wired_parent_class)->finalize(object);
}
diff --git a/src/libnm-core-impl/nm-setting-wireless.c b/src/libnm-core-impl/nm-setting-wireless.c
index 7562795491..f5a4cb6a85 100644
--- a/src/libnm-core-impl/nm-setting-wireless.c
+++ b/src/libnm-core-impl/nm-setting-wireless.c
@@ -1156,9 +1156,6 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
NMSettingWirelessPrivate *priv = NM_SETTING_WIRELESS_GET_PRIVATE(object);
switch (prop_id) {
- case PROP_SSID:
- g_value_set_boxed(value, nm_setting_wireless_get_ssid(setting));
- break;
case PROP_MODE:
g_value_set_string(value, nm_setting_wireless_get_mode(setting));
break;
@@ -1168,18 +1165,12 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
case PROP_CHANNEL:
g_value_set_uint(value, nm_setting_wireless_get_channel(setting));
break;
- case PROP_BSSID:
- g_value_set_string(value, nm_setting_wireless_get_bssid(setting));
- break;
case PROP_RATE:
g_value_set_uint(value, nm_setting_wireless_get_rate(setting));
break;
case PROP_TX_POWER:
g_value_set_uint(value, nm_setting_wireless_get_tx_power(setting));
break;
- case PROP_MAC_ADDRESS:
- g_value_set_string(value, nm_setting_wireless_get_mac_address(setting));
- break;
case PROP_CLONED_MAC_ADDRESS:
g_value_set_string(value, nm_setting_wireless_get_cloned_mac_address(setting));
break;
@@ -1199,9 +1190,6 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
? nm_strv_dup((char **) priv->seen_bssids->pdata, priv->seen_bssids->len, TRUE)
: NULL);
break;
- case PROP_HIDDEN:
- g_value_set_boolean(value, nm_setting_wireless_get_hidden(setting));
- break;
case PROP_POWERSAVE:
g_value_set_uint(value, nm_setting_wireless_get_powersave(setting));
break;
@@ -1215,7 +1203,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
g_value_set_enum(value, priv->ap_isolation);
break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_get_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -1229,11 +1217,6 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
gboolean bool_val;
switch (prop_id) {
- case PROP_SSID:
- if (priv->ssid)
- g_bytes_unref(priv->ssid);
- priv->ssid = g_value_dup_boxed(value);
- break;
case PROP_MODE:
g_free(priv->mode);
priv->mode = g_value_dup_string(value);
@@ -1245,21 +1228,12 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
case PROP_CHANNEL:
priv->channel = g_value_get_uint(value);
break;
- case PROP_BSSID:
- g_free(priv->bssid);
- priv->bssid = _nm_utils_hwaddr_canonical_or_invalid(g_value_get_string(value), ETH_ALEN);
- break;
case PROP_RATE:
priv->rate = g_value_get_uint(value);
break;
case PROP_TX_POWER:
priv->tx_power = g_value_get_uint(value);
break;
- case PROP_MAC_ADDRESS:
- g_free(priv->device_mac_address);
- priv->device_mac_address =
- _nm_utils_hwaddr_canonical_or_invalid(g_value_get_string(value), ETH_ALEN);
- break;
case PROP_CLONED_MAC_ADDRESS:
bool_val = !!priv->cloned_mac_address;
g_free(priv->cloned_mac_address);
@@ -1311,9 +1285,6 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
}
break;
}
- case PROP_HIDDEN:
- priv->hidden = g_value_get_boolean(value);
- break;
case PROP_POWERSAVE:
priv->powersave = g_value_get_uint(value);
break;
@@ -1327,7 +1298,7 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
priv->ap_isolation = g_value_get_enum(value);
break;
default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ _nm_setting_property_set_property_direct(object, prop_id, value, pspec);
break;
}
}
@@ -1368,10 +1339,6 @@ finalize(GObject *object)
g_free(priv->mode);
g_free(priv->band);
- if (priv->ssid)
- g_bytes_unref(priv->ssid);
- g_free(priv->bssid);
- g_free(priv->device_mac_address);
g_free(priv->cloned_mac_address);
g_free(priv->generate_mac_address_mask);
g_array_unref(priv->mac_address_blacklist);
@@ -1413,11 +1380,13 @@ nm_setting_wireless_class_init(NMSettingWirelessClass *klass)
* example: ESSID="Quick Net"
* ---end---
*/
- obj_properties[PROP_SSID] = g_param_spec_boxed(NM_SETTING_WIRELESS_SSID,
- "",
- "",
- G_TYPE_BYTES,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ _nm_setting_property_define_direct_bytes(properties_override,
+ obj_properties,
+ NM_SETTING_WIRELESS_SSID,
+ PROP_SSID,
+ NM_SETTING_PARAM_NONE,
+ NMSettingWirelessPrivate,
+ ssid);
/**
* NMSettingWireless:mode:
diff --git a/src/libnm-core-impl/nm-setting-wpan.c b/src/libnm-core-impl/nm-setting-wpan.c
index 1b556ff7c1..78cdc03650 100644
--- a/src/libnm-core-impl/nm-setting-wpan.c
+++ b/src/libnm-core-impl/nm-setting-wpan.c
@@ -231,8 +231,7 @@ nm_setting_wpan_class_init(NMSettingWpanClass *klass)
object_class->get_property = _nm_setting_property_get_property_direct;
object_class->set_property = _nm_setting_property_set_property_direct;
- setting_class->verify = verify;
- setting_class->finalize_direct = TRUE;
+ setting_class->verify = verify;
/**
* NMSettingWpan:mac-address:
diff --git a/src/libnm-core-impl/nm-setting.c b/src/libnm-core-impl/nm-setting.c
index a242aac91a..9ef9e96c43 100644
--- a/src/libnm-core-impl/nm-setting.c
+++ b/src/libnm-core-impl/nm-setting.c
@@ -375,19 +375,7 @@ _nm_setting_class_commit(NMSettingClass * setting_class,
nm_assert(p->param_spec);
vtype = p->param_spec->value_type;
- if (vtype == G_TYPE_BOOLEAN)
- p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(
- G_VARIANT_TYPE_BOOLEAN,
- .compare_fcn = _nm_setting_property_compare_fcn_default,
- .from_dbus_fcn = _nm_setting_property_from_dbus_fcn_gprop,
- .from_dbus_is_full = TRUE);
- else if (vtype == G_TYPE_UCHAR)
- p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(
- G_VARIANT_TYPE_BYTE,
- .compare_fcn = _nm_setting_property_compare_fcn_default,
- .from_dbus_fcn = _nm_setting_property_from_dbus_fcn_gprop,
- .from_dbus_is_full = TRUE);
- else if (vtype == G_TYPE_INT)
+ if (vtype == G_TYPE_INT)
p->property_type = &nm_sett_info_propert_type_plain_i;
else if (vtype == G_TYPE_UINT)
p->property_type = &nm_sett_info_propert_type_plain_u;
@@ -397,12 +385,6 @@ _nm_setting_class_commit(NMSettingClass * setting_class,
.compare_fcn = _nm_setting_property_compare_fcn_default,
.from_dbus_fcn = _nm_setting_property_from_dbus_fcn_gprop,
.from_dbus_is_full = TRUE);
- else if (vtype == G_TYPE_UINT64)
- p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(
- G_VARIANT_TYPE_UINT64,
- .compare_fcn = _nm_setting_property_compare_fcn_default,
- .from_dbus_fcn = _nm_setting_property_from_dbus_fcn_gprop,
- .from_dbus_is_full = TRUE);
else if (vtype == G_TYPE_STRING) {
nm_assert(nm_streq(p->name, NM_SETTING_NAME)
== (!NM_FLAGS_HAS(p->param_spec->flags, G_PARAM_WRITABLE)));
@@ -427,14 +409,7 @@ _nm_setting_class_commit(NMSettingClass * setting_class,
.compare_fcn = _nm_setting_property_compare_fcn_default,
.from_dbus_fcn = _nm_setting_property_from_dbus_fcn_gprop,
.from_dbus_is_full = TRUE);
- else if (vtype == G_TYPE_BYTES) {
- p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(
- G_VARIANT_TYPE_BYTESTRING,
- .typdata_to_dbus.gprop_type = NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_BYTES,
- .compare_fcn = _nm_setting_property_compare_fcn_default,
- .from_dbus_fcn = _nm_setting_property_from_dbus_fcn_gprop,
- .from_dbus_is_full = TRUE);
- } else if (g_type_is_a(vtype, G_TYPE_ENUM)) {
+ else if (g_type_is_a(vtype, G_TYPE_ENUM)) {
p->property_type = NM_SETT_INFO_PROPERT_TYPE_GPROP(
G_VARIANT_TYPE_INT32,
.typdata_to_dbus.gprop_type = NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_ENUM,
@@ -744,6 +719,30 @@ _nm_setting_property_get_property_direct(GObject * object,
g_value_set_uint(value, *p_val);
return;
}
+ case NM_VALUE_TYPE_UINT64:
+ {
+ const guint64 *p_val =
+ _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+
+ g_value_set_uint64(value, *p_val);
+ return;
+ }
+ case NM_VALUE_TYPE_ENUM:
+ {
+ const int *p_val =
+ _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+
+ g_value_set_enum(value, *p_val);
+ return;
+ }
+ case NM_VALUE_TYPE_FLAGS:
+ {
+ const guint *p_val =
+ _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+
+ g_value_set_flags(value, *p_val);
+ return;
+ }
case NM_VALUE_TYPE_STRING:
{
const char *const *p_val =
@@ -752,6 +751,14 @@ _nm_setting_property_get_property_direct(GObject * object,
g_value_set_string(value, *p_val);
return;
}
+ case NM_VALUE_TYPE_BYTES:
+ {
+ const GBytes *const *p_val =
+ _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+
+ g_value_set_boxed(value, *p_val);
+ return;
+ }
default:
goto out_fail;
}
@@ -823,6 +830,39 @@ _nm_setting_property_set_property_direct(GObject * object,
nm_assert(*p_val == v);
goto out_notify;
}
+ case NM_VALUE_TYPE_UINT64:
+ {
+ guint64 *p_val = _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+ guint64 v;
+
+ v = g_value_get_uint64(value);
+ if (*p_val == v)
+ return;
+ *p_val = v;
+ goto out_notify;
+ }
+ case NM_VALUE_TYPE_ENUM:
+ {
+ int *p_val = _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+ int v;
+
+ v = g_value_get_enum(value);
+ if (*p_val == v)
+ return;
+ *p_val = v;
+ goto out_notify;
+ }
+ case NM_VALUE_TYPE_FLAGS:
+ {
+ guint *p_val = _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+ guint v;
+
+ v = g_value_get_flags(value);
+ if (*p_val == v)
+ return;
+ *p_val = v;
+ goto out_notify;
+ }
case NM_VALUE_TYPE_STRING:
if (!_property_direct_set_string(
property_info,
@@ -830,6 +870,19 @@ _nm_setting_property_set_property_direct(GObject * object,
g_value_get_string(value)))
return;
goto out_notify;
+ case NM_VALUE_TYPE_BYTES:
+ {
+ GBytes **p_val = _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+ GBytes * v;
+ _nm_unused gs_unref_bytes GBytes *old = NULL;
+
+ v = g_value_get_boxed(value);
+ if (nm_g_bytes_equal0(*p_val, v))
+ return;
+ old = *p_val;
+ *p_val = v ? g_bytes_ref(v) : NULL;
+ goto out_notify;
+ }
default:
goto out_fail;
}
@@ -900,12 +953,49 @@ _init_direct(NMSetting *setting)
*p_val = def_val;
break;
}
+ case NM_VALUE_TYPE_UINT64:
+ {
+ guint64 *p_val =
+ _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+ guint64 def_val;
+
+ def_val = NM_G_PARAM_SPEC_GET_DEFAULT_UINT64(property_info->param_spec);
+ nm_assert(*p_val == 0);
+ *p_val = def_val;
+ break;
+ }
+ case NM_VALUE_TYPE_ENUM:
+ {
+ int *p_val = _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+ int def_val;
+
+ def_val = NM_G_PARAM_SPEC_GET_DEFAULT_ENUM(property_info->param_spec);
+ nm_assert(*p_val == 0);
+ *p_val = def_val;
+ break;
+ }
+ case NM_VALUE_TYPE_FLAGS:
+ {
+ guint *p_val =
+ _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+ guint def_val;
+
+ def_val = NM_G_PARAM_SPEC_GET_DEFAULT_FLAGS(property_info->param_spec);
+ nm_assert(*p_val == 0);
+ *p_val = def_val;
+ break;
+ }
case NM_VALUE_TYPE_STRING:
nm_assert(!NM_G_PARAM_SPEC_GET_DEFAULT_STRING(property_info->param_spec));
nm_assert(!(
*((const char *const *)
_nm_setting_get_private(setting, sett_info, property_info->direct_offset))));
break;
+ case NM_VALUE_TYPE_BYTES:
+ nm_assert(!(
+ *((const GBytes *const *)
+ _nm_setting_get_private(setting, sett_info, property_info->direct_offset))));
+ break;
default:
nm_assert_not_reached();
break;
@@ -937,6 +1027,9 @@ _finalize_direct(NMSetting *setting)
case NM_VALUE_TYPE_BOOL:
case NM_VALUE_TYPE_INT32:
case NM_VALUE_TYPE_UINT32:
+ case NM_VALUE_TYPE_UINT64:
+ case NM_VALUE_TYPE_ENUM:
+ case NM_VALUE_TYPE_FLAGS:
break;
case NM_VALUE_TYPE_STRING:
{
@@ -946,6 +1039,14 @@ _finalize_direct(NMSetting *setting)
nm_clear_g_free(p_val);
break;
}
+ case NM_VALUE_TYPE_BYTES:
+ {
+ GBytes **p_val =
+ _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+
+ nm_clear_pointer(p_val, g_bytes_unref);
+ break;
+ }
default:
nm_assert_not_reached();
break;
@@ -978,7 +1079,7 @@ _nm_setting_property_to_dbus_fcn_direct(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_
if (!property_info->to_dbus_including_default
&& val == NM_G_PARAM_SPEC_GET_DEFAULT_INT(property_info->param_spec))
return NULL;
- return g_variant_new_int32(val);
+ return nm_g_variant_maybe_singleton_i(val);
}
case NM_VALUE_TYPE_UINT32:
{
@@ -991,6 +1092,38 @@ _nm_setting_property_to_dbus_fcn_direct(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_
return NULL;
return g_variant_new_uint32(val);
}
+ case NM_VALUE_TYPE_UINT64:
+ {
+ guint64 val;
+
+ val = *(
+ (guint64 *) _nm_setting_get_private(setting, sett_info, property_info->direct_offset));
+ if (!property_info->to_dbus_including_default
+ && val == NM_G_PARAM_SPEC_GET_DEFAULT_UINT64(property_info->param_spec))
+ return NULL;
+ return g_variant_new_uint64(val);
+ }
+ case NM_VALUE_TYPE_ENUM:
+ {
+ int val;
+
+ val = *((int *) _nm_setting_get_private(setting, sett_info, property_info->direct_offset));
+ if (!property_info->to_dbus_including_default
+ && val == NM_G_PARAM_SPEC_GET_DEFAULT_ENUM(property_info->param_spec))
+ return NULL;
+ return nm_g_variant_maybe_singleton_i(val);
+ }
+ case NM_VALUE_TYPE_FLAGS:
+ {
+ guint val;
+
+ val =
+ *((guint *) _nm_setting_get_private(setting, sett_info, property_info->direct_offset));
+ if (!property_info->to_dbus_including_default
+ && val == NM_G_PARAM_SPEC_GET_DEFAULT_FLAGS(property_info->param_spec))
+ return NULL;
+ return g_variant_new_uint32(val);
+ }
case NM_VALUE_TYPE_STRING:
{
const char *val;
@@ -1012,6 +1145,21 @@ _nm_setting_property_to_dbus_fcn_direct(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_
return g_variant_ref(nm_g_variant_singleton_s_empty());
return g_variant_new_string(val);
}
+ case NM_VALUE_TYPE_BYTES:
+ {
+ const GBytes *val;
+
+ /* Bytes have always NULL as default. Setting "including_default" has no defined meaning
+ * (but it could have). */
+ nm_assert(!property_info->to_dbus_including_default);
+
+ val = *((const GBytes *const *) _nm_setting_get_private(setting,
+ sett_info,
+ property_info->direct_offset));
+ if (!val)
+ return NULL;
+ return nm_g_bytes_to_variant_ay(val);
+ }
default:
return nm_assert_unreachable_val(NULL);
}
@@ -1061,11 +1209,8 @@ _nm_setting_property_to_dbus_fcn_gprop(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_n
switch (property_info->property_type->typdata_to_dbus.gprop_type) {
case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_DEFAULT:
return g_dbus_gvalue_to_gvariant(&prop_value, property_info->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));
+ return nm_g_variant_maybe_singleton_i(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:
@@ -1224,6 +1369,91 @@ _nm_setting_property_from_dbus_fcn_direct(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS
*p_val = v;
goto out_notify;
}
+ case NM_VALUE_TYPE_UINT64:
+ {
+ const GParamSpecUInt64 *param_spec;
+ guint64 * p_val;
+ guint64 v;
+
+ if (g_variant_is_of_type(value, G_VARIANT_TYPE_UINT64))
+ v = g_variant_get_uint64(value);
+ else {
+ if (!_variant_get_value_transform(property_info,
+ value,
+ G_TYPE_UINT64,
+ g_value_get_uint64,
+ &v))
+ goto out_error_wrong_dbus_type;
+ }
+
+ p_val = _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+ if (*p_val == v)
+ goto out_unchanged;
+
+ param_spec = NM_G_PARAM_SPEC_CAST_UINT64(property_info->param_spec);
+ if (v < param_spec->minimum || v > param_spec->maximum)
+ goto out_error_param_spec_validation;
+ *p_val = v;
+ goto out_notify;
+ }
+ case NM_VALUE_TYPE_ENUM:
+ {
+ const GParamSpecEnum *param_spec;
+ int * p_val;
+ int v;
+
+ param_spec = NM_G_PARAM_SPEC_CAST_ENUM(property_info->param_spec);
+
+ if (g_variant_is_of_type(value, G_VARIANT_TYPE_INT32)) {
+ G_STATIC_ASSERT(sizeof(int) >= sizeof(gint32));
+ v = g_variant_get_int32(value);
+ } else {
+ if (!_variant_get_value_transform(property_info,
+ value,
+ G_TYPE_FROM_CLASS(param_spec->enum_class),
+ g_value_get_flags,
+ &v))
+ goto out_error_wrong_dbus_type;
+ }
+
+ p_val = _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+ if (*p_val == v)
+ goto out_unchanged;
+
+ if (!g_enum_get_value(param_spec->enum_class, v))
+ goto out_error_param_spec_validation;
+ *p_val = v;
+ goto out_notify;
+ }
+ case NM_VALUE_TYPE_FLAGS:
+ {
+ const GParamSpecFlags *param_spec;
+ guint * p_val;
+ guint v;
+
+ param_spec = NM_G_PARAM_SPEC_CAST_FLAGS(property_info->param_spec);
+
+ if (g_variant_is_of_type(value, G_VARIANT_TYPE_UINT32)) {
+ G_STATIC_ASSERT(sizeof(guint) >= sizeof(guint32));
+ v = g_variant_get_uint32(value);
+ } else {
+ if (!_variant_get_value_transform(property_info,
+ value,
+ G_TYPE_FROM_CLASS(param_spec->flags_class),
+ g_value_get_flags,
+ &v))
+ goto out_error_wrong_dbus_type;
+ }
+
+ p_val = _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+ if (*p_val == v)
+ goto out_unchanged;
+
+ if ((v & param_spec->flags_class->mask) != v)
+ goto out_error_param_spec_validation;
+ *p_val = v;
+ goto out_notify;
+ }
case NM_VALUE_TYPE_STRING:
{
gs_free char *v_free = NULL;
@@ -1248,6 +1478,23 @@ _nm_setting_property_from_dbus_fcn_direct(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS
goto out_notify;
}
+ case NM_VALUE_TYPE_BYTES:
+ {
+ gs_unref_bytes GBytes *v = NULL;
+ GBytes ** p_val;
+
+ if (!g_variant_is_of_type(value, G_VARIANT_TYPE_BYTESTRING))
+ goto out_error_wrong_dbus_type;
+
+ v = nm_g_bytes_new_from_variant_ay(value);
+
+ p_val = _nm_setting_get_private(setting, sett_info, property_info->direct_offset);
+ if (nm_g_bytes_equal0(*p_val, v))
+ goto out_unchanged;
+
+ NM_SWAP(p_val, &v);
+ goto out_notify;
+ }
default:
break;
}
@@ -2144,8 +2391,16 @@ _nm_setting_property_compare_fcn_direct(_NM_SETT_INFO_PROP_COMPARE_FCN_ARGS _nm_
return *((const gint32 *) p_a) == *((const gint32 *) p_b);
case NM_VALUE_TYPE_UINT32:
return *((const guint32 *) p_a) == *((const guint32 *) p_b);
+ case NM_VALUE_TYPE_UINT64:
+ return *((const guint64 *) p_a) == *((const guint64 *) p_b);
+ case NM_VALUE_TYPE_ENUM:
+ return *((const int *) p_a) == *((const int *) p_b);
+ case NM_VALUE_TYPE_FLAGS:
+ return *((const guint *) p_a) == *((const guint *) p_b);
case NM_VALUE_TYPE_STRING:
return nm_streq0(*((const char *const *) p_a), *((const char *const *) p_b));
+ case NM_VALUE_TYPE_BYTES:
+ return nm_g_bytes_equal0(*((const GBytes *const *) p_a), *((const GBytes *const *) p_b));
default:
return nm_assert_unreachable_val(TRUE);
}
@@ -3189,6 +3444,15 @@ const NMSettInfoPropertType nm_sett_info_propert_type_direct_uint32 =
.from_dbus_is_full = TRUE,
.from_dbus_direct_allow_transform = TRUE);
+const NMSettInfoPropertType nm_sett_info_propert_type_direct_uint64 =
+ NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(G_VARIANT_TYPE_UINT64,
+ .direct_type = NM_VALUE_TYPE_UINT64,
+ .compare_fcn = _nm_setting_property_compare_fcn_direct,
+ .to_dbus_fcn = _nm_setting_property_to_dbus_fcn_direct,
+ .from_dbus_fcn = _nm_setting_property_from_dbus_fcn_direct,
+ .from_dbus_is_full = TRUE,
+ .from_dbus_direct_allow_transform = TRUE);
+
const NMSettInfoPropertType nm_sett_info_propert_type_direct_string =
NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(G_VARIANT_TYPE_STRING,
.direct_type = NM_VALUE_TYPE_STRING,
@@ -3198,6 +3462,33 @@ const NMSettInfoPropertType nm_sett_info_propert_type_direct_string =
.from_dbus_is_full = TRUE,
.from_dbus_direct_allow_transform = TRUE);
+const NMSettInfoPropertType nm_sett_info_propert_type_direct_bytes =
+ NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(G_VARIANT_TYPE_BYTESTRING,
+ .direct_type = NM_VALUE_TYPE_BYTES,
+ .compare_fcn = _nm_setting_property_compare_fcn_direct,
+ .to_dbus_fcn = _nm_setting_property_to_dbus_fcn_direct,
+ .from_dbus_fcn = _nm_setting_property_from_dbus_fcn_direct,
+ .from_dbus_is_full = TRUE,
+ .from_dbus_direct_allow_transform = TRUE);
+
+const NMSettInfoPropertType nm_sett_info_propert_type_direct_enum =
+ NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(G_VARIANT_TYPE_INT32,
+ .direct_type = NM_VALUE_TYPE_ENUM,
+ .compare_fcn = _nm_setting_property_compare_fcn_direct,
+ .to_dbus_fcn = _nm_setting_property_to_dbus_fcn_direct,
+ .from_dbus_fcn = _nm_setting_property_from_dbus_fcn_direct,
+ .from_dbus_is_full = TRUE,
+ .from_dbus_direct_allow_transform = TRUE);
+
+const NMSettInfoPropertType nm_sett_info_propert_type_direct_flags =
+ NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(G_VARIANT_TYPE_UINT32,
+ .direct_type = NM_VALUE_TYPE_FLAGS,
+ .compare_fcn = _nm_setting_property_compare_fcn_direct,
+ .to_dbus_fcn = _nm_setting_property_to_dbus_fcn_direct,
+ .from_dbus_fcn = _nm_setting_property_from_dbus_fcn_direct,
+ .from_dbus_is_full = TRUE,
+ .from_dbus_direct_allow_transform = TRUE);
+
const NMSettInfoPropertType nm_sett_info_propert_type_direct_mac_address =
NM_SETT_INFO_PROPERT_TYPE_DBUS_INIT(
G_VARIANT_TYPE_BYTESTRING,
@@ -3671,9 +3962,8 @@ constructed(GObject *object)
static void
finalize(GObject *object)
{
- NMSetting * self = NM_SETTING(object);
- NMSettingPrivate *priv = NM_SETTING_GET_PRIVATE(self);
- NMSettingClass * klass = NM_SETTING_GET_CLASS(self);
+ NMSetting * self = NM_SETTING(object);
+ NMSettingPrivate *priv = NM_SETTING_GET_PRIVATE(self);
if (priv->gendata) {
g_free(priv->gendata->names);
@@ -3684,8 +3974,7 @@ finalize(GObject *object)
G_OBJECT_CLASS(nm_setting_parent_class)->finalize(object);
- if (klass->finalize_direct)
- _finalize_direct(self);
+ _finalize_direct(self);
}
static void
diff --git a/src/libnm-core-impl/tests/test-crypto.c b/src/libnm-core-impl/tests/test-crypto.c
index bdbcd0f3bd..1c072f71bf 100644
--- a/src/libnm-core-impl/tests/test-crypto.c
+++ b/src/libnm-core-impl/tests/test-crypto.c
@@ -135,7 +135,7 @@ test_load_private_key(const char *path,
/* Compare the crypto decrypted key against a known-good decryption */
if (!g_file_get_contents(decrypted_path, &contents, &length, NULL))
g_assert_not_reached();
- g_assert(nm_utils_gbytes_equal_mem(array, contents, length));
+ g_assert(nm_g_bytes_equal_mem(array, contents, length));
}
}
diff --git a/src/libnm-core-impl/tests/test-general.c b/src/libnm-core-impl/tests/test-general.c
index d1250edf21..5c831cb7cd 100644
--- a/src/libnm-core-impl/tests/test-general.c
+++ b/src/libnm-core-impl/tests/test-general.c
@@ -7119,7 +7119,7 @@ test_hexstr2bin(void)
g_assert(b);
else
g_assert(!b);
- g_assert(nm_utils_gbytes_equal_mem(b, items[i].expected, items[i].expected_len));
+ g_assert(nm_g_bytes_equal_mem(b, items[i].expected, items[i].expected_len));
}
}
diff --git a/src/libnm-core-impl/tests/test-keyfile.c b/src/libnm-core-impl/tests/test-keyfile.c
index ba7d783bf7..db19337934 100644
--- a/src/libnm-core-impl/tests/test-keyfile.c
+++ b/src/libnm-core-impl/tests/test-keyfile.c
@@ -123,7 +123,7 @@ _assert_gbytes(GBytes *bytes, gconstpointer data, gssize len)
if (!len)
g_assert(!bytes);
- g_assert(nm_utils_gbytes_equal_mem(bytes, data, len));
+ g_assert(nm_g_bytes_equal_mem(bytes, data, len));
}
static GKeyFile *
@@ -350,7 +350,7 @@ _test_8021x_cert_check(NMConnection * con,
}
g_assert(blob);
- g_assert(nm_utils_gbytes_equal_mem(blob, value, val_len));
+ g_assert(nm_g_bytes_equal_mem(blob, value, val_len));
kval = g_key_file_get_string(keyfile, "802-1x", "ca-cert", NULL);
g_assert(kval);
diff --git a/src/libnm-core-impl/tests/test-setting.c b/src/libnm-core-impl/tests/test-setting.c
index 7b8a5ba494..7444f2c143 100644
--- a/src/libnm-core-impl/tests/test-setting.c
+++ b/src/libnm-core-impl/tests/test-setting.c
@@ -4489,6 +4489,58 @@ test_setting_metadata(void)
g_assert_cmpint(pspec->maximum, <=, (guint64) G_MAXUINT32);
+ can_set_including_default = TRUE;
+ } else if (sip->property_type->direct_type == NM_VALUE_TYPE_UINT64) {
+ const GParamSpecUInt64 *pspec;
+
+ g_assert(sip->property_type == &nm_sett_info_propert_type_direct_uint64);
+ g_assert(g_variant_type_equal(sip->property_type->dbus_type, "t"));
+ g_assert(sip->property_type->to_dbus_fcn
+ == _nm_setting_property_to_dbus_fcn_direct);
+ g_assert(sip->param_spec);
+ g_assert(sip->param_spec->value_type == G_TYPE_UINT64);
+
+ pspec = NM_G_PARAM_SPEC_CAST_UINT64(sip->param_spec);
+ g_assert_cmpuint(pspec->minimum, <=, pspec->maximum);
+ g_assert_cmpuint(pspec->default_value, >=, pspec->minimum);
+ g_assert_cmpuint(pspec->default_value, <=, pspec->maximum);
+
+ g_assert_cmpuint(pspec->maximum, <=, G_MAXUINT64);
+
+ can_set_including_default = TRUE;
+ } else if (sip->property_type->direct_type == NM_VALUE_TYPE_ENUM) {
+ const GParamSpecEnum *pspec;
+
+ g_assert(sip->property_type == &nm_sett_info_propert_type_direct_enum);
+ g_assert(g_variant_type_equal(sip->property_type->dbus_type, "i"));
+ g_assert(sip->property_type->to_dbus_fcn
+ == _nm_setting_property_to_dbus_fcn_direct);
+ g_assert(sip->param_spec);
+ g_assert(g_type_is_a(sip->param_spec->value_type, G_TYPE_ENUM));
+ g_assert(sip->param_spec->value_type != G_TYPE_ENUM);
+
+ pspec = NM_G_PARAM_SPEC_CAST_ENUM(sip->param_spec);
+ g_assert(G_TYPE_FROM_CLASS(pspec->enum_class) == sip->param_spec->value_type);
+ g_assert(g_enum_get_value(pspec->enum_class, pspec->default_value));
+
+ can_set_including_default = TRUE;
+ } else if (sip->property_type->direct_type == NM_VALUE_TYPE_FLAGS) {
+ const GParamSpecFlags *pspec;
+
+ g_assert(sip->property_type == &nm_sett_info_propert_type_direct_flags);
+ g_assert(g_variant_type_equal(sip->property_type->dbus_type, "u"));
+ g_assert(sip->property_type->to_dbus_fcn
+ == _nm_setting_property_to_dbus_fcn_direct);
+ g_assert(sip->param_spec);
+ g_assert(g_type_is_a(sip->param_spec->value_type, G_TYPE_FLAGS));
+ g_assert(sip->param_spec->value_type != G_TYPE_FLAGS);
+
+ pspec = NM_G_PARAM_SPEC_CAST_FLAGS(sip->param_spec);
+ g_assert_cmpint(pspec->flags_class->mask, !=, 0);
+ g_assert_cmpint(pspec->default_value,
+ ==,
+ pspec->flags_class->mask & pspec->default_value);
+
can_set_including_default = TRUE;
} else if (sip->property_type->direct_type == NM_VALUE_TYPE_STRING) {
if (sip->property_type == &nm_sett_info_propert_type_direct_mac_address) {
@@ -4506,6 +4558,12 @@ test_setting_metadata(void)
}
g_assert(sip->param_spec);
g_assert(sip->param_spec->value_type == G_TYPE_STRING);
+ } else if (sip->property_type->direct_type == NM_VALUE_TYPE_BYTES) {
+ g_assert(g_variant_type_equal(sip->property_type->dbus_type, "ay"));
+ g_assert(sip->property_type->to_dbus_fcn
+ == _nm_setting_property_to_dbus_fcn_direct);
+ g_assert(sip->param_spec);
+ g_assert(sip->param_spec->value_type == G_TYPE_BYTES);
} else
g_assert_not_reached();
@@ -4531,9 +4589,6 @@ test_setting_metadata(void)
} 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;
@@ -4647,24 +4702,17 @@ check_done:;
g_object_get_property(G_OBJECT(setting), sip->name, &val);
if (sip->param_spec->value_type == G_TYPE_STRING) {
- const char *default_value;
-
- default_value = ((const GParamSpecString *) sip->param_spec)->default_value;
- if (default_value) {
- /* having a string property with a default != NULL is really ugly. They
- * should be best avoided... */
- if (meta_type == NM_META_SETTING_TYPE_DCB
- && nm_streq(sip->name, NM_SETTING_DCB_APP_FCOE_MODE)) {
- /* Whitelist the properties that have a non-NULL default value. */
- g_assert_cmpstr(default_value, ==, NM_SETTING_DCB_FCOE_MODE_FABRIC);
- } else
- g_assert_not_reached();
- }
+ /* String properties should all have a default value of NULL. Otherwise,
+ * it's ugly. */
+ g_assert_cmpstr(((const GParamSpecString *) sip->param_spec)->default_value,
+ ==,
+ NULL);
+ g_assert(!NM_G_PARAM_SPEC_GET_DEFAULT_STRING(sip->param_spec));
if (nm_streq(sip->name, NM_SETTING_NAME))
g_assert_cmpstr(g_value_get_string(&val), ==, msi->setting_name);
else
- g_assert_cmpstr(g_value_get_string(&val), ==, default_value);
+ g_assert_cmpstr(g_value_get_string(&val), ==, NULL);
}
if (NM_FLAGS_HAS(sip->param_spec->flags, NM_SETTING_PARAM_TO_DBUS_IGNORE_FLAGS))
diff --git a/src/libnm-core-intern/nm-core-internal.h b/src/libnm-core-intern/nm-core-internal.h
index d591c51fb8..93d75e442d 100644
--- a/src/libnm-core-intern/nm-core-internal.h
+++ b/src/libnm-core-intern/nm-core-internal.h
@@ -660,7 +660,6 @@ 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,
diff --git a/src/libnm-glib-aux/nm-hash-utils.c b/src/libnm-glib-aux/nm-hash-utils.c
index 10fc097cc3..a6949ebd32 100644
--- a/src/libnm-glib-aux/nm-hash-utils.c
+++ b/src/libnm-glib-aux/nm-hash-utils.c
@@ -255,7 +255,7 @@ nm_ppdirect_equal(gconstpointer a, gconstpointer b)
/*****************************************************************************/
guint
-nm_gbytes_hash(gconstpointer p)
+nm_g_bytes_hash(gconstpointer p)
{
GBytes * ptr = (GBytes *) p;
gconstpointer arr;
@@ -266,7 +266,7 @@ nm_gbytes_hash(gconstpointer p)
}
guint
-nm_pgbytes_hash(gconstpointer p)
+nm_pg_bytes_hash(gconstpointer p)
{
GBytes *const *ptr = p;
gconstpointer arr;
@@ -277,7 +277,7 @@ nm_pgbytes_hash(gconstpointer p)
}
gboolean
-nm_pgbytes_equal(gconstpointer a, gconstpointer b)
+nm_pg_bytes_equal(gconstpointer a, gconstpointer b)
{
GBytes *const *ptr_a = a;
GBytes *const *ptr_b = b;
diff --git a/src/libnm-glib-aux/nm-hash-utils.h b/src/libnm-glib-aux/nm-hash-utils.h
index a36a8b8a2a..d7de2de43a 100644
--- a/src/libnm-glib-aux/nm-hash-utils.h
+++ b/src/libnm-glib-aux/nm-hash-utils.h
@@ -267,11 +267,11 @@ gboolean nm_ppdirect_equal(gconstpointer a, gconstpointer b);
/*****************************************************************************/
-guint nm_gbytes_hash(gconstpointer p);
-#define nm_gbytes_equal g_bytes_equal
+guint nm_g_bytes_hash(gconstpointer p);
+#define nm_g_bytes_equal g_bytes_equal
-guint nm_pgbytes_hash(gconstpointer p);
-gboolean nm_pgbytes_equal(gconstpointer a, gconstpointer b);
+guint nm_pg_bytes_hash(gconstpointer p);
+gboolean nm_pg_bytes_equal(gconstpointer a, gconstpointer b);
/*****************************************************************************/
diff --git a/src/libnm-glib-aux/nm-json-aux.h b/src/libnm-glib-aux/nm-json-aux.h
index ba2b35d27c..088d67a9c3 100644
--- a/src/libnm-glib-aux/nm-json-aux.h
+++ b/src/libnm-glib-aux/nm-json-aux.h
@@ -371,6 +371,7 @@ nm_value_type_to_json(NMValueType value_type, GString *gstr, gconstpointer p_fie
nm_json_gstr_append_int64(gstr, *((const gint32 *) p_field));
return;
case NM_VALUE_TYPE_INT:
+ case NM_VALUE_TYPE_ENUM:
nm_json_gstr_append_int64(gstr, *((const int *) p_field));
return;
case NM_VALUE_TYPE_INT64:
@@ -380,6 +381,7 @@ nm_value_type_to_json(NMValueType value_type, GString *gstr, gconstpointer p_fie
nm_json_gstr_append_uint64(gstr, *((const guint32 *) p_field));
return;
case NM_VALUE_TYPE_UINT:
+ case NM_VALUE_TYPE_FLAGS:
nm_json_gstr_append_uint64(gstr, *((const guint *) p_field));
return;
case NM_VALUE_TYPE_UINT64:
@@ -388,6 +390,7 @@ nm_value_type_to_json(NMValueType value_type, GString *gstr, gconstpointer p_fie
case NM_VALUE_TYPE_STRING:
nm_json_gstr_append_string(gstr, *((const char *const *) p_field));
return;
+ case NM_VALUE_TYPE_BYTES:
case NM_VALUE_TYPE_NONE:
case NM_VALUE_TYPE_UNSPEC:
break;
@@ -407,12 +410,14 @@ nm_value_type_from_json(const NMJsonVt * vt,
case NM_VALUE_TYPE_INT32:
return (nm_jansson_json_as_int32(vt, elem, out_val) > 0);
case NM_VALUE_TYPE_INT:
+ case NM_VALUE_TYPE_ENUM:
return (nm_jansson_json_as_int(vt, elem, out_val) > 0);
case NM_VALUE_TYPE_INT64:
return (nm_jansson_json_as_int64(vt, elem, out_val) > 0);
case NM_VALUE_TYPE_UINT32:
return (nm_jansson_json_as_uint32(vt, elem, out_val) > 0);
case NM_VALUE_TYPE_UINT:
+ case NM_VALUE_TYPE_FLAGS:
return (nm_jansson_json_as_uint(vt, elem, out_val) > 0);
case NM_VALUE_TYPE_UINT64:
return (nm_jansson_json_as_uint64(vt, elem, out_val) > 0);
@@ -422,6 +427,7 @@ nm_value_type_from_json(const NMJsonVt * vt,
case NM_VALUE_TYPE_STRING:
return (nm_jansson_json_as_string(vt, elem, out_val) > 0);
+ case NM_VALUE_TYPE_BYTES:
case NM_VALUE_TYPE_NONE:
case NM_VALUE_TYPE_UNSPEC:
break;
diff --git a/src/libnm-glib-aux/nm-shared-utils.c b/src/libnm-glib-aux/nm-shared-utils.c
index c793580935..9d1a1bf1b8 100644
--- a/src/libnm-glib-aux/nm-shared-utils.c
+++ b/src/libnm-glib-aux/nm-shared-utils.c
@@ -477,7 +477,7 @@ truncate:
/*****************************************************************************/
GBytes *
-nm_gbytes_get_empty(void)
+nm_g_bytes_get_empty(void)
{
static GBytes *bytes = NULL;
GBytes * b;
@@ -509,8 +509,18 @@ nm_g_bytes_new_from_str(const char *str)
return g_bytes_new_take(nm_memdup(str, l + 1u), l);
}
+GBytes *
+nm_g_bytes_new_from_variant_ay(GVariant *var)
+{
+ if (!var)
+ return NULL;
+ if (!g_variant_is_of_type(var, G_VARIANT_TYPE_BYTESTRING))
+ g_return_val_if_reached(NULL);
+ return g_variant_get_data_as_bytes(var);
+}
+
/**
- * nm_utils_gbytes_equal_mem:
+ * nm_g_bytes_equal_mem:
* @bytes: (allow-none): a #GBytes array to compare. Note that
* %NULL is treated like an #GBytes array of length zero.
* @mem_data: the data pointer with @mem_len bytes
@@ -520,7 +530,7 @@ nm_g_bytes_new_from_str(const char *str)
* special case, a %NULL @bytes is treated like an empty array.
*/
gboolean
-nm_utils_gbytes_equal_mem(GBytes *bytes, gconstpointer mem_data, gsize mem_len)
+nm_g_bytes_equal_mem(GBytes *bytes, gconstpointer mem_data, gsize mem_len)
{
gconstpointer p;
gsize l;
@@ -538,7 +548,7 @@ nm_utils_gbytes_equal_mem(GBytes *bytes, gconstpointer mem_data, gsize mem_len)
}
GVariant *
-nm_utils_gbytes_to_variant_ay(GBytes *bytes)
+nm_g_bytes_to_variant_ay(const GBytes *bytes)
{
const guint8 *p = NULL;
gsize l = 0;
@@ -546,7 +556,7 @@ nm_utils_gbytes_to_variant_ay(GBytes *bytes)
if (!bytes) {
/* for convenience, accept NULL to return an empty variant */
} else
- p = g_bytes_get_data(bytes, &l);
+ p = g_bytes_get_data((GBytes *) bytes, &l);
return nm_g_variant_new_ay(p, l);
}
@@ -672,6 +682,27 @@ nm_g_variant_singleton_ao(void)
return _variant_singleton_get_array("o");
}
+GVariant *
+nm_g_variant_maybe_singleton_i(gint32 value)
+{
+ /* Warning: this function always returns a non-floating reference
+ * that must be consumed (and later unrefed) by the caller.
+ *
+ * The instance is either a singleton instance or a newly created
+ * instance.
+ *
+ * The idea of this is that common values (zero) can use the immutable
+ * singleton/flyweight instance and avoid allocating a new instance in
+ * the (presumable) common case.
+ */
+ switch (value) {
+ case 0:
+ return g_variant_ref(nm_g_variant_singleton_i_0());
+ default:
+ return g_variant_take_ref(g_variant_new_int32(value));
+ }
+}
+
/*****************************************************************************/
GHashTable *
diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h
index ebff9716a5..8dd53dcf29 100644
--- a/src/libnm-glib-aux/nm-shared-utils.h
+++ b/src/libnm-glib-aux/nm-shared-utils.h
@@ -599,19 +599,20 @@ nm_utils_is_separator(const char c)
/*****************************************************************************/
-GBytes *nm_gbytes_get_empty(void);
+GBytes *nm_g_bytes_get_empty(void);
GBytes *nm_g_bytes_new_from_str(const char *str);
+GBytes *nm_g_bytes_new_from_variant_ay(GVariant *var);
static inline gboolean
-nm_gbytes_equal0(GBytes *a, GBytes *b)
+nm_g_bytes_equal0(const GBytes *a, const GBytes *b)
{
return a == b || (a && b && g_bytes_equal(a, b));
}
-gboolean nm_utils_gbytes_equal_mem(GBytes *bytes, gconstpointer mem_data, gsize mem_len);
+gboolean nm_g_bytes_equal_mem(GBytes *bytes, gconstpointer mem_data, gsize mem_len);
-GVariant *nm_utils_gbytes_to_variant_ay(GBytes *bytes);
+GVariant *nm_g_bytes_to_variant_ay(const GBytes *bytes);
GHashTable *nm_strdict_clone(GHashTable *src);
@@ -1449,6 +1450,14 @@ GParamSpec *nm_g_object_class_find_property_from_gtype(GType gtype, const char *
((const _c_type *) _param_spec); \
})
+#define _NM_G_PARAM_SPEC_CAST_IS_A(param_spec, _value_type, _c_type) \
+ ({ \
+ const GParamSpec *const _param_spec = (param_spec); \
+ \
+ nm_assert(!_param_spec || g_type_is_a(_param_spec->value_type, _value_type)); \
+ ((const _c_type *) _param_spec); \
+ })
+
#define NM_G_PARAM_SPEC_CAST_BOOLEAN(param_spec) \
_NM_G_PARAM_SPEC_CAST(param_spec, G_TYPE_BOOLEAN, GParamSpecBoolean)
#define NM_G_PARAM_SPEC_CAST_INT(param_spec) \
@@ -1457,6 +1466,10 @@ GParamSpec *nm_g_object_class_find_property_from_gtype(GType gtype, const char *
_NM_G_PARAM_SPEC_CAST(param_spec, G_TYPE_UINT, GParamSpecUInt)
#define NM_G_PARAM_SPEC_CAST_UINT64(param_spec) \
_NM_G_PARAM_SPEC_CAST(param_spec, G_TYPE_UINT64, GParamSpecUInt64)
+#define NM_G_PARAM_SPEC_CAST_ENUM(param_spec) \
+ _NM_G_PARAM_SPEC_CAST_IS_A(param_spec, G_TYPE_ENUM, GParamSpecEnum)
+#define NM_G_PARAM_SPEC_CAST_FLAGS(param_spec) \
+ _NM_G_PARAM_SPEC_CAST_IS_A(param_spec, G_TYPE_FLAGS, GParamSpecFlags)
#define NM_G_PARAM_SPEC_CAST_STRING(param_spec) \
_NM_G_PARAM_SPEC_CAST(param_spec, G_TYPE_STRING, GParamSpecString)
@@ -1468,6 +1481,10 @@ 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)
#define NM_G_PARAM_SPEC_GET_DEFAULT_UINT64(param_spec) \
(NM_G_PARAM_SPEC_CAST_UINT64(NM_ENSURE_NOT_NULL(param_spec))->default_value)
+#define NM_G_PARAM_SPEC_GET_DEFAULT_ENUM(param_spec) \
+ (NM_G_PARAM_SPEC_CAST_ENUM(NM_ENSURE_NOT_NULL(param_spec))->default_value)
+#define NM_G_PARAM_SPEC_GET_DEFAULT_FLAGS(param_spec) \
+ (NM_G_PARAM_SPEC_CAST_FLAGS(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)
@@ -1541,6 +1558,8 @@ GVariant *nm_g_variant_singleton_aLsaLsvII(void);
GVariant *nm_g_variant_singleton_aaLsvI(void);
GVariant *nm_g_variant_singleton_ao(void);
+GVariant *nm_g_variant_maybe_singleton_i(gint32 v);
+
static inline void
nm_g_variant_unref_floating(GVariant *var)
{
@@ -2977,7 +2996,7 @@ nm_strdup_reset_take(char **dst, char *src)
char *old;
nm_assert(dst);
- nm_assert(src != *dst);
+ nm_assert(!src || src != *dst);
if (nm_streq0(*dst, src)) {
if (src)
diff --git a/src/libnm-glib-aux/nm-value-type.h b/src/libnm-glib-aux/nm-value-type.h
index 4e54ad463c..0addeec699 100644
--- a/src/libnm-glib-aux/nm-value-type.h
+++ b/src/libnm-glib-aux/nm-value-type.h
@@ -16,7 +16,18 @@ typedef enum _nm_packed {
NM_VALUE_TYPE_UINT32 = 6,
NM_VALUE_TYPE_UINT = 7,
NM_VALUE_TYPE_UINT64 = 8,
- NM_VALUE_TYPE_STRING = 9,
+
+ /* Flags are for G_TYPE_FLAGS. That is, internally they are tracked
+ * as a guint, they have a g_param_spec_flags() property and they are
+ * serialized on D-Bus as "u". */
+ NM_VALUE_TYPE_FLAGS = 9,
+
+ /* G_TYPE_ENUM */
+ NM_VALUE_TYPE_ENUM = 10,
+
+ NM_VALUE_TYPE_STRING = 11,
+
+ NM_VALUE_TYPE_BYTES = 12,
} NMValueType;
/*****************************************************************************/
@@ -83,6 +94,7 @@ nm_value_type_cmp(NMValueType value_type, gconstpointer p_a, gconstpointer p_b)
NM_CMP_DIRECT(*((const gint32 *) p_a), *((const gint32 *) p_b));
return 0;
case NM_VALUE_TYPE_INT:
+ case NM_VALUE_TYPE_ENUM:
NM_CMP_DIRECT(*((const int *) p_a), *((const int *) p_b));
return 0;
case NM_VALUE_TYPE_INT64:
@@ -92,6 +104,7 @@ nm_value_type_cmp(NMValueType value_type, gconstpointer p_a, gconstpointer p_b)
NM_CMP_DIRECT(*((const guint32 *) p_a), *((const guint32 *) p_b));
return 0;
case NM_VALUE_TYPE_UINT:
+ case NM_VALUE_TYPE_FLAGS:
NM_CMP_DIRECT(*((const guint *) p_a), *((const guint *) p_b));
return 0;
case NM_VALUE_TYPE_UINT64:
@@ -99,6 +112,8 @@ nm_value_type_cmp(NMValueType value_type, gconstpointer p_a, gconstpointer p_b)
return 0;
case NM_VALUE_TYPE_STRING:
return nm_strcmp0(*((const char *const *) p_a), *((const char *const *) p_b));
+ case NM_VALUE_TYPE_BYTES:
+ return nm_g_bytes_equal0(*((const GBytes *const *) p_a), *((const GBytes *const *) p_b));
case NM_VALUE_TYPE_NONE:
case NM_VALUE_TYPE_UNSPEC:
break;
@@ -124,6 +139,7 @@ nm_value_type_copy(NMValueType value_type, gpointer dst, gconstpointer src)
(*((gint32 *) dst) = *((const gint32 *) src));
return;
case NM_VALUE_TYPE_INT:
+ case NM_VALUE_TYPE_ENUM:
(*((int *) dst) = *((const int *) src));
return;
case NM_VALUE_TYPE_INT64:
@@ -133,6 +149,7 @@ nm_value_type_copy(NMValueType value_type, gpointer dst, gconstpointer src)
(*((guint32 *) dst) = *((const guint32 *) src));
return;
case NM_VALUE_TYPE_UINT:
+ case NM_VALUE_TYPE_FLAGS:
(*((guint *) dst) = *((const guint *) src));
return;
case NM_VALUE_TYPE_UINT64:
@@ -141,10 +158,19 @@ nm_value_type_copy(NMValueType value_type, gpointer dst, gconstpointer src)
case NM_VALUE_TYPE_STRING:
/* self assignment safe! */
if (*((char **) dst) != *((const char *const *) src)) {
- g_free(*((char **) dst));
+ _nm_unused char *old = *((char **) dst);
+
*((char **) dst) = g_strdup(*((const char *const *) src));
}
return;
+ case NM_VALUE_TYPE_BYTES:
+ /* self assignment safe! */
+ if (*((GBytes **) dst) != *((const GBytes *const *) src)) {
+ _nm_unused gs_unref_bytes GBytes *old = *((GBytes **) dst);
+
+ *((GBytes **) dst) = g_bytes_ref(*((GBytes *const *) src));
+ }
+ return;
case NM_VALUE_TYPE_NONE:
case NM_VALUE_TYPE_UNSPEC:
break;
@@ -176,7 +202,8 @@ nm_value_type_get_from_variant(NMValueType value_type,
return;
case NM_VALUE_TYPE_STRING:
if (clone) {
- g_free(*((char **) dst));
+ _nm_unused gs_free char *old = *((char **) dst);
+
*((char **) dst) = g_variant_dup_string(variant, NULL);
} else {
/* we don't clone the string, nor free the previous value. */
@@ -184,10 +211,13 @@ nm_value_type_get_from_variant(NMValueType value_type,
}
return;
+ case NM_VALUE_TYPE_BYTES:
case NM_VALUE_TYPE_INT:
case NM_VALUE_TYPE_UINT:
- /* "int" and "uint" also does not have a defined variant type, because it's not
- * clear how many bits we would need. */
+ case NM_VALUE_TYPE_ENUM:
+ case NM_VALUE_TYPE_FLAGS:
+ /* These types don't have a defined variant type, because it's not
+ * clear how many bits we would need or how to handle the type. */
/* fall-through */
case NM_VALUE_TYPE_NONE:
@@ -200,7 +230,8 @@ nm_value_type_get_from_variant(NMValueType value_type,
static inline GVariant *
nm_value_type_to_variant(NMValueType value_type, gconstpointer src)
{
- const char *v_string;
+ const char * v_string;
+ const GBytes *v_bytes;
switch (value_type) {
case NM_VALUE_TYPE_BOOL:
@@ -216,11 +247,16 @@ nm_value_type_to_variant(NMValueType value_type, gconstpointer src)
case NM_VALUE_TYPE_STRING:
v_string = *((const char *const *) src);
return v_string ? g_variant_new_string(v_string) : NULL;
+ case NM_VALUE_TYPE_BYTES:
+ v_bytes = *((const GBytes *const *) src);
+ return v_bytes ? nm_g_bytes_to_variant_ay(v_bytes) : NULL;
case NM_VALUE_TYPE_INT:
case NM_VALUE_TYPE_UINT:
- /* "int" and "uint" also does not have a defined variant type, because it's not
- * clear how many bits we would need. */
+ case NM_VALUE_TYPE_ENUM:
+ case NM_VALUE_TYPE_FLAGS:
+ /* These types don't have a defined variant type, because it's not
+ * clear how many bits we would need or how to handle the type. */
/* fall-through */
case NM_VALUE_TYPE_NONE:
@@ -247,11 +283,15 @@ nm_value_type_get_variant_type(NMValueType value_type)
return G_VARIANT_TYPE_UINT64;
case NM_VALUE_TYPE_STRING:
return G_VARIANT_TYPE_STRING;
+ case NM_VALUE_TYPE_BYTES:
+ return G_VARIANT_TYPE_BYTESTRING;
case NM_VALUE_TYPE_INT:
case NM_VALUE_TYPE_UINT:
- /* "int" and "uint" also does not have a defined variant type, because it's not
- * clear how many bits we would need. */
+ case NM_VALUE_TYPE_ENUM:
+ case NM_VALUE_TYPE_FLAGS:
+ /* These types don't have a defined variant type, because it's not
+ * clear how many bits we would need or how to handle the type. */
/* fall-through */
case NM_VALUE_TYPE_NONE:
diff --git a/src/libnmc-setting/settings-docs.h.in b/src/libnmc-setting/settings-docs.h.in
index d9dba23eea..06346b1ebd 100644
--- a/src/libnmc-setting/settings-docs.h.in
+++ b/src/libnmc-setting/settings-docs.h.in
@@ -178,7 +178,7 @@
#define DESCRIBE_DOC_NM_SETTING_CONNECTION_WAIT_DEVICE_TIMEOUT N_("Timeout in milliseconds to wait for device at startup. During boot, devices may take a while to be detected by the driver. This property will cause to delay NetworkManager-wait-online.service and nm-online to give the device a chance to appear. This works by waiting for the given timeout until a compatible device for the profile is available and managed. The value 0 means no wait time. The default value is -1, which currently has the same meaning as no wait time.")
#define DESCRIBE_DOC_NM_SETTING_CONNECTION_ZONE N_("The trust level of a the connection. Free form case-insensitive string (for example \"Home\", \"Work\", \"Public\"). NULL or unspecified zone means the connection will be placed in the default zone as defined by the firewall. When updating this property on a currently activated connection, the change takes effect immediately.")
#define DESCRIBE_DOC_NM_SETTING_DCB_APP_FCOE_FLAGS N_("Specifies the NMSettingDcbFlags for the DCB FCoE application. Flags may be any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4).")
-#define DESCRIBE_DOC_NM_SETTING_DCB_APP_FCOE_MODE N_("The FCoE controller mode; either \"fabric\" (default) or \"vn2vn\".")
+#define DESCRIBE_DOC_NM_SETTING_DCB_APP_FCOE_MODE N_("The FCoE controller mode; either \"fabric\" or \"vn2vn\". Since 1.34, NULL is the default and means \"fabric\". Before 1.34, NULL was rejected as invalid and the default was \"fabric\".")
#define DESCRIBE_DOC_NM_SETTING_DCB_APP_FCOE_PRIORITY N_("The highest User Priority (0 - 7) which FCoE frames should use, or -1 for default priority. Only used when the \"app-fcoe-flags\" property includes the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag.")
#define DESCRIBE_DOC_NM_SETTING_DCB_APP_FIP_FLAGS N_("Specifies the NMSettingDcbFlags for the DCB FIP application. Flags may be any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4).")
#define DESCRIBE_DOC_NM_SETTING_DCB_APP_FIP_PRIORITY N_("The highest User Priority (0 - 7) which FIP frames should use, or -1 for default priority. Only used when the \"app-fip-flags\" property includes the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag.")
diff --git a/src/nmcli/generate-docs-nm-settings-nmcli.xml.in b/src/nmcli/generate-docs-nm-settings-nmcli.xml.in
index 46339e59c7..02fd8800fe 100644
--- a/src/nmcli/generate-docs-nm-settings-nmcli.xml.in
+++ b/src/nmcli/generate-docs-nm-settings-nmcli.xml.in
@@ -430,7 +430,7 @@
+ description="The FCoE controller mode; either "fabric" or "vn2vn". Since 1.34, NULL is the default and means "fabric". Before 1.34, NULL was rejected as invalid and the default was "fabric"." />