libnm: merge branch 'th/libnm-settings-properties'

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1002
This commit is contained in:
Thomas Haller 2021-11-12 16:22:01 +01:00
commit 1d13d7a900
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728
59 changed files with 1859 additions and 2451 deletions

View file

@ -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.

View file

@ -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();

View file

@ -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);

View file

@ -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);

View file

@ -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)));
}
}

View file

@ -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

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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",

View file

@ -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

View file

@ -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");

View file

@ -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);

View file

@ -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));
}

View file

@ -244,8 +244,7 @@ nm_supplicant_manager_set_wfd_ies(NMSupplicantManager *self, GBytes *wfd_ies)
g_variant_builder_add(&params, "s", NM_WPAS_DBUS_INTERFACE);
g_variant_builder_add(&params, "s", "WFDIEs");
g_variant_builder_add_value(&params,
g_variant_new_variant(nm_utils_gbytes_to_variant_ay(wfd_ies)));
g_variant_builder_add_value(&params, g_variant_new_variant(nm_g_bytes_to_variant_ay(wfd_ies)));
g_dbus_connection_call(priv->dbus_connection,
priv->name_owner->str,

View file

@ -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:

File diff suppressed because it is too large Load diff

View file

@ -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);

View file

@ -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:

View file

@ -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:

View file

@ -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:

View file

@ -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);

View file

@ -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);
}

View file

@ -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:

View file

@ -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))

View file

@ -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);
}

View file

@ -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);

View file

@ -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)

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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:

View file

@ -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:

View file

@ -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:

View file

@ -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);
}

View file

@ -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, \

View file

@ -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);

View file

@ -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);

View file

@ -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:

View file

@ -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:

View file

@ -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:

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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:

View file

@ -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:

View file

@ -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

View file

@ -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));
}
}

View file

@ -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));
}
}

View file

@ -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);

View file

@ -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))

View file

@ -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,

View file

@ -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;

View file

@ -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);
/*****************************************************************************/

View file

@ -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;

View file

@ -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 *

View file

@ -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)

View file

@ -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:

View file

@ -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.")

View file

@ -430,7 +430,7 @@
<property name="app-fcoe-priority"
description="The highest User Priority (0 - 7) which FCoE frames should use, or -1 for default priority. Only used when the &quot;app-fcoe-flags&quot; property includes the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag." />
<property name="app-fcoe-mode"
description="The FCoE controller mode; either &quot;fabric&quot; (default) or &quot;vn2vn&quot;." />
description="The FCoE controller mode; either &quot;fabric&quot; or &quot;vn2vn&quot;. Since 1.34, NULL is the default and means &quot;fabric&quot;. Before 1.34, NULL was rejected as invalid and the default was &quot;fabric&quot;." />
<property name="app-iscsi-flags"
description="Specifies the NMSettingDcbFlags for the DCB iSCSI 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)." />
<property name="app-iscsi-priority"