diff options
author | Thomas Haller <thaller@redhat.com> | 2019-10-27 14:31:05 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-10-27 14:31:05 +0100 |
commit | 074e5503d7ff7af853785f4cbb64fbfc43d1ef6a (patch) | |
tree | 2e63a52654da888bd326248ae4e1e2fef00df387 | |
parent | 0bff8d771060b209b80aede7c6fa08f63584f7c1 (diff) | |
parent | 0dfabef46e315a42155c6e0c654f8515a1ec6b2f (diff) | |
download | NetworkManager-074e5503d7ff7af853785f4cbb64fbfc43d1ef6a.tar.gz |
libnm: merge branch 'th/libnm-various-fixes'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/319
32 files changed, 137 insertions, 72 deletions
diff --git a/libnm-core/nm-setting-wireless.c b/libnm-core/nm-setting-wireless.c index 7a2a16f749..1731673f9d 100644 --- a/libnm-core/nm-setting-wireless.c +++ b/libnm-core/nm-setting-wireless.c @@ -1073,7 +1073,8 @@ get_property (GObject *object, guint prop_id, g_value_take_boxed (value, priv->seen_bssids ? nm_utils_strv_dup (priv->seen_bssids->pdata, - priv->seen_bssids->len) + priv->seen_bssids->len, + TRUE) : NULL); break; case PROP_HIDDEN: diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c index 8256bd833a..2246c11311 100644 --- a/libnm-core/nm-utils.c +++ b/libnm-core/nm-utils.c @@ -1728,7 +1728,9 @@ nm_utils_ip6_dns_to_variant (char **dns) * @value: a #GVariant of type 'aay' * * Utility function to convert a #GVariant of type 'aay' representing a list of - * IPv6 addresses into an array of IP address strings. + * IPv6 addresses into an array of IP address strings. Each "ay" entry must be + * a IPv6 address in binary form (16 bytes long). Invalid entries are silently + * ignored. * * Returns: (transfer full) (type utf8): a %NULL-terminated array of IP address strings. **/ @@ -1750,14 +1752,9 @@ nm_utils_ip6_dns_from_variant (GVariant *value) gsize length; const struct in6_addr *ip = g_variant_get_fixed_array (ip_var, &length, 1); - if (length != sizeof (struct in6_addr)) { - g_warning ("%s: ignoring invalid IP6 address of length %d", - __func__, (int) length); - g_variant_unref (ip_var); - continue; - } + if (length == sizeof (struct in6_addr)) + dns[i++] = nm_utils_inet6_ntop_dup (ip); - dns[i++] = nm_utils_inet6_ntop_dup (ip); g_variant_unref (ip_var); } dns[i] = NULL; diff --git a/libnm/nm-access-point.c b/libnm/nm-access-point.c index 39ed2ac21d..d21bb60acc 100644 --- a/libnm/nm-access-point.c +++ b/libnm/nm-access-point.c @@ -163,7 +163,7 @@ nm_access_point_get_bssid (NMAccessPoint *ap) { g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NULL); - return nm_str_not_empty (NM_ACCESS_POINT_GET_PRIVATE (ap)->bssid); + return _nml_coerce_property_str_not_empty (NM_ACCESS_POINT_GET_PRIVATE (ap)->bssid); } /** @@ -579,7 +579,7 @@ nm_access_point_class_init (NMAccessPointClass *ap_class) obj_properties[PROP_MODE] = g_param_spec_enum (NM_ACCESS_POINT_MODE, "", "", NM_TYPE_802_11_MODE, - NM_802_11_MODE_INFRA, + NM_802_11_MODE_UNKNOWN, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); diff --git a/libnm/nm-active-connection.c b/libnm/nm-active-connection.c index c52c2cf54d..6b49f9a5e0 100644 --- a/libnm/nm-active-connection.c +++ b/libnm/nm-active-connection.c @@ -109,7 +109,7 @@ nm_active_connection_get_id (NMActiveConnection *connection) { g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL); - return nm_str_not_empty (NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->id); + return _nml_coerce_property_str_not_empty (NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->id); } /** @@ -126,7 +126,7 @@ nm_active_connection_get_uuid (NMActiveConnection *connection) { g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL); - return nm_str_not_empty (NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->uuid); + return _nml_coerce_property_str_not_empty (NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->uuid); } /** @@ -143,7 +143,7 @@ nm_active_connection_get_connection_type (NMActiveConnection *connection) { g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL); - return nm_str_not_empty (NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->type); + return _nml_coerce_property_str_not_empty (NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->type); } /** diff --git a/libnm/nm-client.c b/libnm/nm-client.c index 5d4414e9c5..0d84923e28 100644 --- a/libnm/nm-client.c +++ b/libnm/nm-client.c @@ -3958,7 +3958,7 @@ nm_client_class_init (NMClientClass *client_class) */ obj_properties[PROP_NETWORKING_ENABLED] = g_param_spec_boolean (NM_CLIENT_NETWORKING_ENABLED, "", "", - TRUE, + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); @@ -3982,7 +3982,7 @@ nm_client_class_init (NMClientClass *client_class) **/ obj_properties[PROP_WIRELESS_HARDWARE_ENABLED] = g_param_spec_boolean (NM_CLIENT_WIRELESS_HARDWARE_ENABLED, "", "", - TRUE, + FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); @@ -4191,7 +4191,7 @@ nm_client_class_init (NMClientClass *client_class) **/ obj_properties[PROP_DNS_MODE] = g_param_spec_string (NM_CLIENT_DNS_MODE, "", "", - "", + NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); @@ -4204,7 +4204,7 @@ nm_client_class_init (NMClientClass *client_class) **/ obj_properties[PROP_DNS_RC_MANAGER] = g_param_spec_string (NM_CLIENT_DNS_RC_MANAGER, "", "", - "", + NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); @@ -4230,7 +4230,7 @@ nm_client_class_init (NMClientClass *client_class) * Since: 1.12 */ obj_properties[PROP_CHECKPOINTS] = - g_param_spec_boxed (NM_MANAGER_CHECKPOINTS, "", "", + g_param_spec_boxed (NM_CLIENT_CHECKPOINTS, "", "", G_TYPE_PTR_ARRAY, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); diff --git a/libnm/nm-client.h b/libnm/nm-client.h index 2a45342ed5..f1822c5ea3 100644 --- a/libnm/nm-client.h +++ b/libnm/nm-client.h @@ -61,6 +61,7 @@ _NM_DEPRECATED_SYNC_WRITABLE_PROPERTY #define NM_CLIENT_DNS_MODE "dns-mode" #define NM_CLIENT_DNS_RC_MANAGER "dns-rc-manager" #define NM_CLIENT_DNS_CONFIGURATION "dns-configuration" +#define NM_CLIENT_CHECKPOINTS "checkpoints" #define NM_CLIENT_DEVICE_ADDED "device-added" #define NM_CLIENT_DEVICE_REMOVED "device-removed" diff --git a/libnm/nm-device-bond.c b/libnm/nm-device-bond.c index b62d829b57..880c4f94b8 100644 --- a/libnm/nm-device-bond.c +++ b/libnm/nm-device-bond.c @@ -56,7 +56,7 @@ nm_device_bond_get_hw_address (NMDeviceBond *device) { g_return_val_if_fail (NM_IS_DEVICE_BOND (device), NULL); - return nm_str_not_empty (NM_DEVICE_BOND_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_BOND_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-bridge.c b/libnm/nm-device-bridge.c index c4fc6e557b..8c3db03e9c 100644 --- a/libnm/nm-device-bridge.c +++ b/libnm/nm-device-bridge.c @@ -56,7 +56,7 @@ nm_device_bridge_get_hw_address (NMDeviceBridge *device) { g_return_val_if_fail (NM_IS_DEVICE_BRIDGE (device), NULL); - return nm_str_not_empty (NM_DEVICE_BRIDGE_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_BRIDGE_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-bt.c b/libnm/nm-device-bt.c index e3d9d4559f..d1600a4277 100644 --- a/libnm/nm-device-bt.c +++ b/libnm/nm-device-bt.c @@ -57,7 +57,7 @@ nm_device_bt_get_hw_address (NMDeviceBt *device) { g_return_val_if_fail (NM_IS_DEVICE_BT (device), NULL); - return nm_str_not_empty (NM_DEVICE_BT_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_BT_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-dummy.c b/libnm/nm-device-dummy.c index 7a56d53b99..a7f375fdf1 100644 --- a/libnm/nm-device-dummy.c +++ b/libnm/nm-device-dummy.c @@ -52,7 +52,7 @@ nm_device_dummy_get_hw_address (NMDeviceDummy *device) { g_return_val_if_fail (NM_IS_DEVICE_DUMMY (device), NULL); - return nm_str_not_empty (NM_DEVICE_DUMMY_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_DUMMY_GET_PRIVATE (device)->hw_address); } static gboolean diff --git a/libnm/nm-device-ethernet.c b/libnm/nm-device-ethernet.c index 28d3a1076a..94ec318ed6 100644 --- a/libnm/nm-device-ethernet.c +++ b/libnm/nm-device-ethernet.c @@ -61,7 +61,7 @@ nm_device_ethernet_get_hw_address (NMDeviceEthernet *device) { g_return_val_if_fail (NM_IS_DEVICE_ETHERNET (device), NULL); - return nm_str_not_empty (NM_DEVICE_ETHERNET_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_ETHERNET_GET_PRIVATE (device)->hw_address); } /** @@ -78,7 +78,7 @@ nm_device_ethernet_get_permanent_hw_address (NMDeviceEthernet *device) { g_return_val_if_fail (NM_IS_DEVICE_ETHERNET (device), NULL); - return nm_str_not_empty (NM_DEVICE_ETHERNET_GET_PRIVATE (device)->perm_hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_ETHERNET_GET_PRIVATE (device)->perm_hw_address); } /** diff --git a/libnm/nm-device-generic.c b/libnm/nm-device-generic.c index cdc92351a0..f8c4d25737 100644 --- a/libnm/nm-device-generic.c +++ b/libnm/nm-device-generic.c @@ -52,7 +52,7 @@ nm_device_generic_get_hw_address (NMDeviceGeneric *device) { g_return_val_if_fail (NM_IS_DEVICE_GENERIC (device), NULL); - return nm_str_not_empty (NM_DEVICE_GENERIC_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_GENERIC_GET_PRIVATE (device)->hw_address); } /*****************************************************************************/ @@ -62,7 +62,7 @@ get_type_description (NMDevice *device) { NMDeviceGenericPrivate *priv = NM_DEVICE_GENERIC_GET_PRIVATE (device); - return nm_str_not_empty (priv->type_description); + return _nml_coerce_property_str_not_empty (priv->type_description); } static const char * diff --git a/libnm/nm-device-infiniband.c b/libnm/nm-device-infiniband.c index 5c750e7ac7..b48431a91c 100644 --- a/libnm/nm-device-infiniband.c +++ b/libnm/nm-device-infiniband.c @@ -53,7 +53,7 @@ nm_device_infiniband_get_hw_address (NMDeviceInfiniband *device) { g_return_val_if_fail (NM_IS_DEVICE_INFINIBAND (device), NULL); - return nm_str_not_empty (NM_DEVICE_INFINIBAND_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_INFINIBAND_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-ip-tunnel.c b/libnm/nm-device-ip-tunnel.c index 2f38071ace..3408dd28f0 100644 --- a/libnm/nm-device-ip-tunnel.c +++ b/libnm/nm-device-ip-tunnel.c @@ -105,7 +105,7 @@ nm_device_ip_tunnel_get_local (NMDeviceIPTunnel *device) { g_return_val_if_fail (NM_IS_DEVICE_IP_TUNNEL (device), NULL); - return nm_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->local); + return _nml_coerce_property_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->local); } /** @@ -121,7 +121,7 @@ nm_device_ip_tunnel_get_remote (NMDeviceIPTunnel *device) { g_return_val_if_fail (NM_IS_DEVICE_IP_TUNNEL (device), NULL); - return nm_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->remote); + return _nml_coerce_property_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->remote); } /** @@ -186,7 +186,7 @@ nm_device_ip_tunnel_get_input_key (NMDeviceIPTunnel *device) { g_return_val_if_fail (NM_IS_DEVICE_IP_TUNNEL (device), NULL); - return nm_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->input_key); + return _nml_coerce_property_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->input_key); } /** @@ -202,7 +202,7 @@ nm_device_ip_tunnel_get_output_key (NMDeviceIPTunnel *device) { g_return_val_if_fail (NM_IS_DEVICE_IP_TUNNEL (device), NULL); - return nm_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->output_key); + return _nml_coerce_property_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->output_key); } /** diff --git a/libnm/nm-device-macvlan.c b/libnm/nm-device-macvlan.c index 4a53af07b4..59565b64a1 100644 --- a/libnm/nm-device-macvlan.c +++ b/libnm/nm-device-macvlan.c @@ -28,7 +28,6 @@ typedef struct { char *mode; gboolean no_promisc; gboolean tap; - char *hw_address; } NMDeviceMacvlanPrivate; struct _NMDeviceMacvlan { @@ -78,7 +77,7 @@ nm_device_macvlan_get_mode (NMDeviceMacvlan *device) { g_return_val_if_fail (NM_IS_DEVICE_MACVLAN (device), NULL); - return nm_str_not_empty (NM_DEVICE_MACVLAN_GET_PRIVATE (device)->mode); + return _nml_coerce_property_str_not_empty (NM_DEVICE_MACVLAN_GET_PRIVATE (device)->mode); } /** @@ -127,13 +126,15 @@ nm_device_macvlan_get_tap (NMDeviceMacvlan *device) * device, and must not be modified. * * Since: 1.2 + * + * This property is not implemented yet, and the function always return NULL. **/ const char * nm_device_macvlan_get_hw_address (NMDeviceMacvlan *device) { g_return_val_if_fail (NM_IS_DEVICE_MACVLAN (device), NULL); - return nm_str_not_empty (NM_DEVICE_MACVLAN_GET_PRIVATE (device)->hw_address); + return NULL; } static gboolean @@ -188,7 +189,6 @@ init_dbus (NMObject *object) { NM_DEVICE_MACVLAN_MODE, &priv->mode }, { NM_DEVICE_MACVLAN_NO_PROMISC, &priv->no_promisc }, { NM_DEVICE_MACVLAN_TAP, &priv->tap }, - { NM_DEVICE_MACVLAN_HW_ADDRESS, &priv->hw_address }, { NULL }, }; @@ -205,7 +205,6 @@ finalize (GObject *object) NMDeviceMacvlanPrivate *priv = NM_DEVICE_MACVLAN_GET_PRIVATE (object); g_free (priv->mode); - g_free (priv->hw_address); g_clear_object (&priv->parent); G_OBJECT_CLASS (nm_device_macvlan_parent_class)->finalize (object); @@ -315,6 +314,8 @@ nm_device_macvlan_class_init (NMDeviceMacvlanClass *gre_class) * The hardware (MAC) address of the device. * * Since: 1.2 + * + * This property is not implemented yet, and the function always return NULL. **/ obj_properties[PROP_HW_ADDRESS] = g_param_spec_string (NM_DEVICE_MACVLAN_HW_ADDRESS, "", "", diff --git a/libnm/nm-device-olpc-mesh.c b/libnm/nm-device-olpc-mesh.c index 367580bbbd..4d81abcc53 100644 --- a/libnm/nm-device-olpc-mesh.c +++ b/libnm/nm-device-olpc-mesh.c @@ -55,7 +55,7 @@ nm_device_olpc_mesh_get_hw_address (NMDeviceOlpcMesh *device) { g_return_val_if_fail (NM_IS_DEVICE_OLPC_MESH (device), NULL); - return nm_str_not_empty (NM_DEVICE_OLPC_MESH_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_OLPC_MESH_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-team.c b/libnm/nm-device-team.c index 49c3aad2d8..08b3b082c1 100644 --- a/libnm/nm-device-team.c +++ b/libnm/nm-device-team.c @@ -58,7 +58,7 @@ nm_device_team_get_hw_address (NMDeviceTeam *device) { g_return_val_if_fail (NM_IS_DEVICE_TEAM (device), NULL); - return nm_str_not_empty (NM_DEVICE_TEAM_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_TEAM_GET_PRIVATE (device)->hw_address); } /** @@ -111,7 +111,7 @@ nm_device_team_get_config (NMDeviceTeam *device) { g_return_val_if_fail (NM_IS_DEVICE_TEAM (device), NULL); - return nm_str_not_empty (NM_DEVICE_TEAM_GET_PRIVATE (device)->config); + return _nml_coerce_property_str_not_empty (NM_DEVICE_TEAM_GET_PRIVATE (device)->config); } static const char * diff --git a/libnm/nm-device-tun.c b/libnm/nm-device-tun.c index e3b36d767e..220c9a2980 100644 --- a/libnm/nm-device-tun.c +++ b/libnm/nm-device-tun.c @@ -67,7 +67,7 @@ nm_device_tun_get_hw_address (NMDeviceTun *device) { g_return_val_if_fail (NM_IS_DEVICE_TUN (device), NULL); - return nm_str_not_empty (NM_DEVICE_TUN_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_TUN_GET_PRIVATE (device)->hw_address); } /** @@ -85,7 +85,7 @@ nm_device_tun_get_mode (NMDeviceTun *device) { g_return_val_if_fail (NM_IS_DEVICE_TUN (device), NULL); - return nm_str_not_empty (NM_DEVICE_TUN_GET_PRIVATE (device)->mode); + return _nml_coerce_property_str_not_empty (NM_DEVICE_TUN_GET_PRIVATE (device)->mode); } /** diff --git a/libnm/nm-device-vlan.c b/libnm/nm-device-vlan.c index 323d5b30e6..ebe9f00cbe 100644 --- a/libnm/nm-device-vlan.c +++ b/libnm/nm-device-vlan.c @@ -58,7 +58,7 @@ nm_device_vlan_get_hw_address (NMDeviceVlan *device) { g_return_val_if_fail (NM_IS_DEVICE_VLAN (device), NULL); - return nm_str_not_empty (NM_DEVICE_VLAN_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_VLAN_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-vxlan.c b/libnm/nm-device-vxlan.c index 006d3a12cb..27d7db1d7e 100644 --- a/libnm/nm-device-vxlan.c +++ b/libnm/nm-device-vxlan.c @@ -38,7 +38,6 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE ( typedef struct { NMDevice *parent; char *hw_address; - gboolean carrier; guint id; char *group; char *local; @@ -87,7 +86,7 @@ nm_device_vxlan_get_hw_address (NMDeviceVxlan *device) { g_return_val_if_fail (NM_IS_DEVICE_VXLAN (device), NULL); - return nm_str_not_empty (NM_DEVICE_VXLAN_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_VXLAN_GET_PRIVATE (device)->hw_address); } /** @@ -99,13 +98,16 @@ nm_device_vxlan_get_hw_address (NMDeviceVxlan *device) * Returns: %TRUE if the device has carrier. * * Since: 1.2 + * + * This property is not implemented yet, and the function always returns + * FALSE. **/ gboolean nm_device_vxlan_get_carrier (NMDeviceVxlan *device) { g_return_val_if_fail (NM_IS_DEVICE_VXLAN (device), FALSE); - return NM_DEVICE_VXLAN_GET_PRIVATE (device)->carrier; + return FALSE; } /** @@ -154,7 +156,7 @@ nm_device_vxlan_get_group (NMDeviceVxlan *device) { g_return_val_if_fail (NM_IS_DEVICE_VXLAN (device), NULL); - return nm_str_not_empty (NM_DEVICE_VXLAN_GET_PRIVATE (device)->group); + return _nml_coerce_property_str_not_empty (NM_DEVICE_VXLAN_GET_PRIVATE (device)->group); } /** @@ -170,7 +172,7 @@ nm_device_vxlan_get_local (NMDeviceVxlan *device) { g_return_val_if_fail (NM_IS_DEVICE_VXLAN (device), NULL); - return nm_str_not_empty (NM_DEVICE_VXLAN_GET_PRIVATE (device)->local); + return _nml_coerce_property_str_not_empty (NM_DEVICE_VXLAN_GET_PRIVATE (device)->local); } /** @@ -415,7 +417,6 @@ init_dbus (NMObject *object) NMDeviceVxlanPrivate *priv = NM_DEVICE_VXLAN_GET_PRIVATE (object); const NMPropertiesInfo property_info[] = { { NM_DEVICE_VXLAN_HW_ADDRESS, &priv->hw_address }, - { NM_DEVICE_VXLAN_CARRIER, &priv->carrier }, { NM_DEVICE_VXLAN_PARENT, &priv->parent, NULL, NM_TYPE_DEVICE }, { NM_DEVICE_VXLAN_ID, &priv->id }, { NM_DEVICE_VXLAN_GROUP, &priv->group }, @@ -559,6 +560,8 @@ nm_device_vxlan_class_init (NMDeviceVxlanClass *vxlan_class) * Whether the device has carrier. * * Since: 1.2 + * + * This property is not implemented yet, and the property is always FALSE. **/ obj_properties[PROP_CARRIER] = g_param_spec_boolean (NM_DEVICE_VXLAN_CARRIER, "", "", diff --git a/libnm/nm-device-wifi-p2p.c b/libnm/nm-device-wifi-p2p.c index c4fc142c55..92652b3841 100644 --- a/libnm/nm-device-wifi-p2p.c +++ b/libnm/nm-device-wifi-p2p.c @@ -73,7 +73,7 @@ nm_device_wifi_p2p_get_hw_address (NMDeviceWifiP2P *device) { g_return_val_if_fail (NM_IS_DEVICE_WIFI_P2P (device), NULL); - return nm_str_not_empty (NM_DEVICE_WIFI_P2P_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_WIFI_P2P_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-wifi.c b/libnm/nm-device-wifi.c index d358256060..36b26561c2 100644 --- a/libnm/nm-device-wifi.c +++ b/libnm/nm-device-wifi.c @@ -92,7 +92,7 @@ nm_device_wifi_get_hw_address (NMDeviceWifi *device) { g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), NULL); - return nm_str_not_empty (NM_DEVICE_WIFI_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_WIFI_GET_PRIVATE (device)->hw_address); } /** @@ -109,7 +109,7 @@ nm_device_wifi_get_permanent_hw_address (NMDeviceWifi *device) { g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), NULL); - return nm_str_not_empty (NM_DEVICE_WIFI_GET_PRIVATE (device)->perm_hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_WIFI_GET_PRIVATE (device)->perm_hw_address); } /** diff --git a/libnm/nm-device-wpan.c b/libnm/nm-device-wpan.c index 24d16faf13..3dfa8f267c 100644 --- a/libnm/nm-device-wpan.c +++ b/libnm/nm-device-wpan.c @@ -50,7 +50,7 @@ nm_device_wpan_get_hw_address (NMDeviceWpan *device) { g_return_val_if_fail (NM_IS_DEVICE_WPAN (device), NULL); - return nm_str_not_empty (NM_DEVICE_WPAN_GET_PRIVATE (device)->hw_address); + return _nml_coerce_property_str_not_empty (NM_DEVICE_WPAN_GET_PRIVATE (device)->hw_address); } static gboolean diff --git a/libnm/nm-device.c b/libnm/nm-device.c index 1f1027aadb..96698967b9 100644 --- a/libnm/nm-device.c +++ b/libnm/nm-device.c @@ -609,7 +609,7 @@ nm_device_class_init (NMDeviceClass *device_class) **/ obj_properties[PROP_AUTOCONNECT] = g_param_spec_boolean (NM_DEVICE_AUTOCONNECT, "", "", - TRUE, + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); @@ -797,7 +797,7 @@ nm_device_class_init (NMDeviceClass *device_class) **/ obj_properties[PROP_MTU] = g_param_spec_uint (NM_DEVICE_MTU, "", "", - 0, G_MAXUINT32, 1500, + 0, G_MAXUINT32, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); @@ -860,7 +860,7 @@ nm_device_get_iface (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->iface); + return _nml_coerce_property_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->iface); } /** @@ -878,7 +878,7 @@ nm_device_get_ip_iface (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->ip_iface); + return _nml_coerce_property_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->ip_iface); } /** @@ -912,7 +912,7 @@ nm_device_get_udi (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->udi); + return _nml_coerce_property_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->udi); } /** @@ -929,7 +929,7 @@ nm_device_get_driver (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->driver); + return _nml_coerce_property_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->driver); } /** @@ -946,7 +946,7 @@ nm_device_get_driver_version (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->driver_version); + return _nml_coerce_property_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->driver_version); } /** @@ -963,7 +963,7 @@ nm_device_get_firmware_version (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->firmware_version); + return _nml_coerce_property_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->firmware_version); } /** @@ -988,7 +988,7 @@ nm_device_get_type_description (NMDevice *device) g_return_val_if_fail (NM_IS_DEVICE (device), NULL); if (priv->type_description) - return nm_str_not_empty (priv->type_description); + return _nml_coerce_property_str_not_empty (priv->type_description); if (NM_DEVICE_GET_CLASS (device)->get_type_description) { desc = NM_DEVICE_GET_CLASS (device)->get_type_description (device); @@ -1001,7 +1001,7 @@ nm_device_get_type_description (NMDevice *device) typename += 8; priv->type_description = g_ascii_strdown (typename, -1); - return nm_str_not_empty (priv->type_description); + return _nml_coerce_property_str_not_empty (priv->type_description); } /** @@ -1861,7 +1861,7 @@ nm_device_get_physical_port_id (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->physical_port_id); + return _nml_coerce_property_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->physical_port_id); } /** diff --git a/libnm/nm-ip-config.c b/libnm/nm-ip-config.c index bc313bb327..19e008ed05 100644 --- a/libnm/nm-ip-config.c +++ b/libnm/nm-ip-config.c @@ -377,7 +377,7 @@ nm_ip_config_get_gateway (NMIPConfig *config) { g_return_val_if_fail (NM_IS_IP_CONFIG (config), NULL); - return nm_str_not_empty (NM_IP_CONFIG_GET_PRIVATE (config)->gateway); + return _nml_coerce_property_str_not_empty (NM_IP_CONFIG_GET_PRIVATE (config)->gateway); } /** diff --git a/libnm/nm-libnm-utils.h b/libnm/nm-libnm-utils.h index 2e0c792aba..39b86aac64 100644 --- a/libnm/nm-libnm-utils.h +++ b/libnm/nm-libnm-utils.h @@ -7,6 +7,7 @@ #define __NM_LIBNM_UTILS_H__ #include "nm-types.h" +#include "nm-glib-aux/nm-ref-string.h" /*****************************************************************************/ @@ -106,6 +107,36 @@ void _nml_dbus_log (NMLDBusLogLevel level, /*****************************************************************************/ +static inline const char * +_nml_coerce_property_str_not_null (const char *str) +{ + return str ?: ""; +} + +static inline const char * +_nml_coerce_property_str_not_empty (const char *str) +{ + return str && str[0] ? str : NULL; +} + +static inline const char * +_nml_coerce_property_object_path (NMRefString *path) +{ + if (!path) + return NULL; + if (nm_streq (path->str, "/")) + return NULL; + return path->str; +} + +static inline const char *const* +_nml_coerce_property_strv_not_null (char **strv) +{ + return ((const char *const*) strv) ?: NM_PTRARRAY_EMPTY (const char *); +} + +/*****************************************************************************/ + char *nm_utils_wincaps_to_dash (const char *caps); /*****************************************************************************/ diff --git a/libnm/nm-manager.c b/libnm/nm-manager.c index 10fb4a18b6..872c9fa8b9 100644 --- a/libnm/nm-manager.c +++ b/libnm/nm-manager.c @@ -436,7 +436,7 @@ nm_manager_get_version (NMManager *manager) { g_return_val_if_fail (NM_IS_MANAGER (manager), NULL); - return nm_str_not_empty (NM_MANAGER_GET_PRIVATE (manager)->version); + return _nml_coerce_property_str_not_empty (NM_MANAGER_GET_PRIVATE (manager)->version); } NMState diff --git a/libnm/nm-vpn-connection.c b/libnm/nm-vpn-connection.c index 3927397e31..a0d673e913 100644 --- a/libnm/nm-vpn-connection.c +++ b/libnm/nm-vpn-connection.c @@ -67,7 +67,7 @@ nm_vpn_connection_get_banner (NMVpnConnection *vpn) { g_return_val_if_fail (NM_IS_VPN_CONNECTION (vpn), NULL); - return nm_str_not_empty (NM_VPN_CONNECTION_GET_PRIVATE (vpn)->banner); + return _nml_coerce_property_str_not_empty (NM_VPN_CONNECTION_GET_PRIVATE (vpn)->banner); } /** diff --git a/shared/nm-glib-aux/nm-ref-string.h b/shared/nm-glib-aux/nm-ref-string.h index b4652d8443..c80b75eab9 100644 --- a/shared/nm-glib-aux/nm-ref-string.h +++ b/shared/nm-glib-aux/nm-ref-string.h @@ -49,4 +49,23 @@ nm_ref_string_get_len (NMRefString *rstr) return rstr ? rstr->len : 0u; } +static inline gboolean +NM_IS_REF_STRING (const NMRefString *rstr) +{ +#if NM_MORE_ASSERTS > 10 + if (rstr) { + nm_auto_ref_string NMRefString *r2 = NULL; + + r2 = nm_ref_string_new_len (rstr->str, rstr->len); + nm_assert (rstr == r2); + } +#endif + + /* Technically, %NULL is also a valid NMRefString (according to nm_ref_string_new(), + * nm_ref_string_get_str() and nm_ref_string_unref()). However, NM_IS_REF_STRING() + * does not think so. If callers want to allow %NULL, they need to check + * separately. */ + return !!rstr; +} + #endif /* __NM_REF_STRING_H__ */ diff --git a/shared/nm-glib-aux/nm-shared-utils.c b/shared/nm-glib-aux/nm-shared-utils.c index 34d5de1201..60f1bfaf81 100644 --- a/shared/nm-glib-aux/nm-shared-utils.c +++ b/shared/nm-glib-aux/nm-shared-utils.c @@ -2393,6 +2393,10 @@ nm_utils_strv_make_deep_copied_n (const char **strv, gsize len) * is negative or zero (in which case %NULL will be returned). * @len: the length of strings in @str. If negative, strv is assumed * to be a NULL terminated array. + * @deep_copied: if %TRUE, clones the individual strings. In that case, + * the returned array must be freed with g_strfreev(). Otherwise, the + * strings themself are not copied. You must take care of who owns the + * strings yourself. * * Like g_strdupv(), with two differences: * @@ -2407,10 +2411,13 @@ nm_utils_strv_make_deep_copied_n (const char **strv, gsize len) * array with g_strfreev(). Allowing that would be error prone. * * Returns: (transfer full): a clone of the strv array. Always - * %NULL terminated. + * %NULL terminated. Depending on @deep_copied, the strings are + * cloned or not. */ char ** -nm_utils_strv_dup (gpointer strv, gssize len) +nm_utils_strv_dup (gpointer strv, + gssize len, + gboolean deep_copied) { gsize i, l; char **v; @@ -2438,7 +2445,10 @@ nm_utils_strv_dup (gpointer strv, gssize len) g_return_val_if_reached (v); } - v[i] = g_strdup (src[i]); + if (deep_copied) + v[i] = g_strdup (src[i]); + else + v[i] = (char *) src[i]; } v[l] = NULL; return v; diff --git a/shared/nm-glib-aux/nm-shared-utils.h b/shared/nm-glib-aux/nm-shared-utils.h index ff1ea17e20..c027769aa2 100644 --- a/shared/nm-glib-aux/nm-shared-utils.h +++ b/shared/nm-glib-aux/nm-shared-utils.h @@ -990,7 +990,9 @@ nm_utils_strv_make_deep_copied_nonnull (const char **strv) return nm_utils_strv_make_deep_copied (strv) ?: g_new0 (char *, 1); } -char **nm_utils_strv_dup (gpointer strv, gssize len); +char **nm_utils_strv_dup (gpointer strv, + gssize len, + gboolean deep_copied); /*****************************************************************************/ diff --git a/src/nm-config-data.c b/src/nm-config-data.c index 0366a66c63..b5868b7b1a 100644 --- a/src/nm-config-data.c +++ b/src/nm-config-data.c @@ -1663,7 +1663,7 @@ set_property (GObject *object, specs = g_slist_prepend (specs, spec); } - priv->no_auto_default.arr = nm_utils_strv_dup (value_arr, j); + priv->no_auto_default.arr = nm_utils_strv_dup (value_arr, j, TRUE); priv->no_auto_default.specs = g_slist_reverse (specs); } break; |