summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-03-24 11:31:29 +0100
committerThomas Haller <thaller@redhat.com>2018-03-27 09:58:00 +0200
commit199f2df50f6a268682954d05abf8af073016a9d0 (patch)
tree3dd4e9b2b146631d7ddb606945a003e2f74c30b3
parent4a705e1a0ce0eac24e55369f49fdb60db0b22b10 (diff)
downloadNetworkManager-199f2df50f6a268682954d05abf8af073016a9d0.tar.gz
manager: convert hwaddr to binary once in find_device_by_permanent_hw_addr()
For comparing MAC addresses, they anyway have to be normalized to binary. Convert it once outside the loop and pass the binary form to nm_utils_hwaddr_matches(). Otherwise, we need to re-convert it every time.
-rw-r--r--src/nm-manager.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/nm-manager.c b/src/nm-manager.c
index e23fdb1549..6cfa59e4a9 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -960,16 +960,18 @@ find_device_by_permanent_hw_addr (NMManager *self, const char *hwaddr)
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
NMDevice *device;
const char *device_addr;
+ guint8 hwaddr_bin[NM_UTILS_HWADDR_LEN_MAX];
+ gsize hwaddr_len;
g_return_val_if_fail (hwaddr != NULL, NULL);
- if (!nm_utils_hwaddr_valid (hwaddr, -1))
+ if (!_nm_utils_hwaddr_aton (hwaddr, hwaddr_bin, sizeof (hwaddr_bin), &hwaddr_len))
return NULL;
c_list_for_each_entry (device, &priv->devices_lst_head, devices_lst) {
device_addr = nm_device_get_permanent_hw_address (device);
if ( device_addr
- && nm_utils_hwaddr_matches (hwaddr, -1, device_addr, -1))
+ && nm_utils_hwaddr_matches (hwaddr_bin, hwaddr_len, device_addr, -1))
return device;
}
return NULL;