diff options
author | Thomas Haller <thaller@redhat.com> | 2018-03-24 11:31:29 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2018-03-27 09:58:00 +0200 |
commit | 199f2df50f6a268682954d05abf8af073016a9d0 (patch) | |
tree | 3dd4e9b2b146631d7ddb606945a003e2f74c30b3 | |
parent | 4a705e1a0ce0eac24e55369f49fdb60db0b22b10 (diff) | |
download | NetworkManager-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.c | 6 |
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; |