summaryrefslogtreecommitdiff
path: root/src/devices/bluetooth/nm-device-bt.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bluetooth/nm-device-bt.c')
-rw-r--r--src/devices/bluetooth/nm-device-bt.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/devices/bluetooth/nm-device-bt.c b/src/devices/bluetooth/nm-device-bt.c
index 86f1325c51..f39f272202 100644
--- a/src/devices/bluetooth/nm-device-bt.c
+++ b/src/devices/bluetooth/nm-device-bt.c
@@ -60,7 +60,7 @@ typedef struct {
NMBluezDevice *bt_device;
- guint8 bdaddr[ETH_ALEN];
+ char *bdaddr;
char *name;
guint32 capabilities;
@@ -178,7 +178,7 @@ check_connection_compatible (NMDevice *device, NMConnection *connection)
array = nm_setting_bluetooth_get_bdaddr (s_bt);
if (!array)
return FALSE;
- if (!nm_utils_hwaddr_equal (priv->bdaddr, ETH_ALEN, array->data, array->len))
+ if (!nm_utils_hwaddr_equal (priv->bdaddr, -1, array->data, array->len))
return FALSE;
return TRUE;
@@ -320,7 +320,7 @@ complete_connection (NMDevice *device,
setting_bdaddr = nm_setting_bluetooth_get_bdaddr (s_bt);
if (setting_bdaddr) {
/* Make sure the setting BT Address (if any) matches the device's */
- if (!nm_utils_hwaddr_equal (setting_bdaddr->data, setting_bdaddr->len, priv->bdaddr, ETH_ALEN)) {
+ if (!nm_utils_hwaddr_equal (setting_bdaddr->data, setting_bdaddr->len, priv->bdaddr, -1)) {
g_set_error_literal (error,
NM_SETTING_BLUETOOTH_ERROR,
NM_SETTING_BLUETOOTH_ERROR_INVALID_PROPERTY,
@@ -331,9 +331,8 @@ complete_connection (NMDevice *device,
GByteArray *bdaddr;
/* Lock the connection to this device by default */
- if (!nm_utils_hwaddr_equal (priv->bdaddr, ETH_ALEN, NULL, ETH_ALEN)) {
- bdaddr = g_byte_array_sized_new (ETH_ALEN);
- g_byte_array_append (bdaddr, priv->bdaddr, ETH_ALEN);
+ if (!nm_utils_hwaddr_equal (priv->bdaddr, -1, NULL, ETH_ALEN)) {
+ bdaddr = nm_utils_hwaddr_atoba (priv->bdaddr, ETH_ALEN);
g_object_set (G_OBJECT (s_bt), NM_SETTING_BLUETOOTH_BDADDR, bdaddr, NULL);
g_byte_array_free (bdaddr, TRUE);
}
@@ -1080,15 +1079,13 @@ static void
constructed (GObject *object)
{
NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (object);
- const guint8 *my_hwaddr;
- guint my_hwaddr_len = 0;
+ const char *my_hwaddr;
G_OBJECT_CLASS (nm_device_bt_parent_class)->constructed (object);
- my_hwaddr = nm_device_get_hw_address (NM_DEVICE (object), &my_hwaddr_len);
+ my_hwaddr = nm_device_get_hw_address (NM_DEVICE (object));
g_assert (my_hwaddr);
- g_assert_cmpint (my_hwaddr_len, ==, ETH_ALEN);
- memcpy (priv->bdaddr, my_hwaddr, ETH_ALEN);
+ priv->bdaddr = g_strdup (my_hwaddr);
/* Watch for BT device property changes */
g_signal_connect (priv->bt_device, "notify::" NM_BLUEZ_DEVICE_CONNECTED,
@@ -1175,6 +1172,7 @@ finalize (GObject *object)
g_free (priv->rfcomm_iface);
g_free (priv->name);
+ g_free (priv->bdaddr);
G_OBJECT_CLASS (nm_device_bt_parent_class)->finalize (object);
}