summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-10-27 14:31:05 +0100
committerThomas Haller <thaller@redhat.com>2019-10-27 14:31:05 +0100
commit074e5503d7ff7af853785f4cbb64fbfc43d1ef6a (patch)
tree2e63a52654da888bd326248ae4e1e2fef00df387
parent0bff8d771060b209b80aede7c6fa08f63584f7c1 (diff)
parent0dfabef46e315a42155c6e0c654f8515a1ec6b2f (diff)
downloadNetworkManager-074e5503d7ff7af853785f4cbb64fbfc43d1ef6a.tar.gz
libnm: merge branch 'th/libnm-various-fixes'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/319
-rw-r--r--libnm-core/nm-setting-wireless.c3
-rw-r--r--libnm-core/nm-utils.c13
-rw-r--r--libnm/nm-access-point.c4
-rw-r--r--libnm/nm-active-connection.c6
-rw-r--r--libnm/nm-client.c10
-rw-r--r--libnm/nm-client.h1
-rw-r--r--libnm/nm-device-bond.c2
-rw-r--r--libnm/nm-device-bridge.c2
-rw-r--r--libnm/nm-device-bt.c2
-rw-r--r--libnm/nm-device-dummy.c2
-rw-r--r--libnm/nm-device-ethernet.c4
-rw-r--r--libnm/nm-device-generic.c4
-rw-r--r--libnm/nm-device-infiniband.c2
-rw-r--r--libnm/nm-device-ip-tunnel.c8
-rw-r--r--libnm/nm-device-macvlan.c11
-rw-r--r--libnm/nm-device-olpc-mesh.c2
-rw-r--r--libnm/nm-device-team.c4
-rw-r--r--libnm/nm-device-tun.c4
-rw-r--r--libnm/nm-device-vlan.c2
-rw-r--r--libnm/nm-device-vxlan.c15
-rw-r--r--libnm/nm-device-wifi-p2p.c2
-rw-r--r--libnm/nm-device-wifi.c4
-rw-r--r--libnm/nm-device-wpan.c2
-rw-r--r--libnm/nm-device.c22
-rw-r--r--libnm/nm-ip-config.c2
-rw-r--r--libnm/nm-libnm-utils.h31
-rw-r--r--libnm/nm-manager.c2
-rw-r--r--libnm/nm-vpn-connection.c2
-rw-r--r--shared/nm-glib-aux/nm-ref-string.h19
-rw-r--r--shared/nm-glib-aux/nm-shared-utils.c16
-rw-r--r--shared/nm-glib-aux/nm-shared-utils.h4
-rw-r--r--src/nm-config-data.c2
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;