diff options
author | Thomas Haller <thaller@redhat.com> | 2016-05-09 17:19:30 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2016-05-30 16:32:07 +0200 |
commit | 6732e2a18b0056b684df8c4a573daccf981a7890 (patch) | |
tree | 52032d25d2395468e642b3574384f87a84184326 | |
parent | 9133dec2d975fc09c01d241ba626c6940a7d44cd (diff) | |
download | NetworkManager-6732e2a18b0056b684df8c4a573daccf981a7890.tar.gz |
device: lookup platform data only once in get_ip_iface_identifier()
No need to perform multiple cache lookups.
-rw-r--r-- | src/devices/nm-device.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 5695980bd6..4ddd8231e3 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -735,9 +735,7 @@ static gboolean get_ip_iface_identifier (NMDevice *self, NMUtilsIPv6IfaceId *out_iid) { NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self); - NMLinkType link_type; - const guint8 *hwaddr = NULL; - size_t hwaddr_len = 0; + const NMPlatformLink *pllink; int ifindex; gboolean success; @@ -745,21 +743,22 @@ get_ip_iface_identifier (NMDevice *self, NMUtilsIPv6IfaceId *out_iid) ifindex = nm_device_get_ip_ifindex (self); g_assert (ifindex); - link_type = nm_platform_link_get_type (NM_PLATFORM_GET, ifindex); - g_return_val_if_fail (link_type > NM_LINK_TYPE_UNKNOWN, 0); + pllink = nm_platform_link_get (NM_PLATFORM_GET, ifindex); + g_return_val_if_fail (pllink && pllink->type > NM_LINK_TYPE_UNKNOWN, 0); - hwaddr = nm_platform_link_get_address (NM_PLATFORM_GET, ifindex, &hwaddr_len); - if (!hwaddr_len) + if (pllink->addr.len <= 0) return FALSE; + if (pllink->addr.len > NM_UTILS_HWADDR_LEN_MAX) + g_return_val_if_reached (FALSE); - success = nm_utils_get_ipv6_interface_identifier (link_type, - hwaddr, - hwaddr_len, + success = nm_utils_get_ipv6_interface_identifier (pllink->type, + pllink->addr.data, + pllink->addr.len, priv->dev_id, out_iid); if (!success) { _LOGW (LOGD_HW, "failed to generate interface identifier " - "for link type %u hwaddr_len %zu", link_type, hwaddr_len); + "for link type %u hwaddr_len %u", pllink->type, (unsigned) pllink->addr.len); } return success; } |