diff options
Diffstat (limited to 'src/devices/nm-device.c')
-rw-r--r-- | src/devices/nm-device.c | 53 |
1 files changed, 12 insertions, 41 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 9c76a2c887..f03dd1e59c 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -7457,37 +7457,6 @@ get_dhcp_timeout (NMDevice *self, int addr_family) return timeout ?: NM_DHCP_TIMEOUT_DEFAULT; } -static void -_ASSERT_arp_type (guint16 arp_type, - const guint8 *hwaddr, - gsize hwaddr_len) -{ - /* we actually only support ethernet and infiniband below. Assert that - * the arp-type and the address length correspond. */ - nm_assert (NM_IN_SET (arp_type, ARPHRD_ETHER, ARPHRD_INFINIBAND)); - nm_assert (arp_type <= 255); - nm_assert (hwaddr_len > 0); - nm_assert (arp_type != ARPHRD_ETHER || hwaddr_len == ETH_ALEN); - nm_assert (arp_type != ARPHRD_INFINIBAND || hwaddr_len == INFINIBAND_ALEN); - nm_assert (hwaddr); -} - -static GBytes * -dhcp4_get_client_id_mac (guint16 arp_type, - const guint8 *hwaddr, - gsize hwaddr_len) -{ - guint8 *client_id_buf; - const guint8 hwaddr_type = arp_type; - - _ASSERT_arp_type (arp_type, hwaddr, hwaddr_len); - - client_id_buf = g_malloc (hwaddr_len + 1); - client_id_buf[0] = hwaddr_type; - memcpy (&client_id_buf[1], hwaddr, hwaddr_len); - return g_bytes_new_take (client_id_buf, hwaddr_len + 1); -} - static GBytes * dhcp4_get_client_id (NMDevice *self, NMConnection *connection, @@ -7531,13 +7500,13 @@ dhcp4_get_client_id (NMDevice *self, } hwaddr_bin = g_bytes_get_data (hwaddr, &hwaddr_len); - arp_type = nm_utils_detect_arp_type_from_addrlen (hwaddr_len); + arp_type = nm_utils_arp_type_detect_from_hwaddrlen (hwaddr_len); if (arp_type < 0) { fail_reason = "unsupported link-layer address"; goto out_fail; } - result = dhcp4_get_client_id_mac ((guint16) arp_type, hwaddr_bin, hwaddr_len); + result = nm_utils_dhcp_client_id_mac (arp_type, hwaddr_bin, hwaddr_len); goto out_good; } @@ -7553,13 +7522,13 @@ dhcp4_get_client_id (NMDevice *self, if (!_nm_utils_hwaddr_aton (hwaddr_str, hwaddr_bin_buf, sizeof (hwaddr_bin_buf), &hwaddr_len)) g_return_val_if_reached (NULL); - arp_type = nm_utils_detect_arp_type_from_addrlen (hwaddr_len); + arp_type = nm_utils_arp_type_detect_from_hwaddrlen (hwaddr_len); if (arp_type < 0) { fail_reason = "unsupported permanent link-layer address"; goto out_fail; } - result = dhcp4_get_client_id_mac ((guint16) arp_type, hwaddr_bin_buf, hwaddr_len); + result = nm_utils_dhcp_client_id_mac (arp_type, hwaddr_bin_buf, hwaddr_len); goto out_good; } @@ -8214,7 +8183,7 @@ dhcp6_prefix_delegated (NMDhcpClient *client, #define EPOCH_DATETIME_200001010000 946684800 static GBytes * -generate_duid_llt (guint16 arp_type, +generate_duid_llt (int arp_type, const guint8 *hwaddr, gsize hwaddr_len, gint64 time) @@ -8224,7 +8193,8 @@ generate_duid_llt (guint16 arp_type, const guint16 hw_type = htons (arp_type); const guint32 duid_time = htonl (NM_MAX (0, time - EPOCH_DATETIME_200001010000)); - _ASSERT_arp_type (arp_type, hwaddr, hwaddr_len); + if (!nm_utils_arp_type_get_hwaddr_relevant_part (arp_type, &hwaddr, &hwaddr_len)) + nm_assert_not_reached (); arr = g_new (guint8, 2 + 2 + 4 + hwaddr_len); @@ -8237,7 +8207,7 @@ generate_duid_llt (guint16 arp_type, } static GBytes * -generate_duid_ll (guint16 arp_type, +generate_duid_ll (int arp_type, const guint8 *hwaddr, gsize hwaddr_len) { @@ -8245,7 +8215,8 @@ generate_duid_ll (guint16 arp_type, const guint16 duid_type = htons (3); const guint16 hw_type = htons (arp_type); - _ASSERT_arp_type (arp_type, hwaddr, hwaddr_len); + if (!nm_utils_arp_type_get_hwaddr_relevant_part (arp_type, &hwaddr, &hwaddr_len)) + nm_assert_not_reached (); arr = g_new (guint8, 2 + 2 + hwaddr_len); @@ -8360,7 +8331,7 @@ dhcp6_get_duid (NMDevice *self, NMConnection *connection, GBytes *hwaddr, gboole } hwaddr_bin = g_bytes_get_data (hwaddr, &hwaddr_len); - arp_type = nm_utils_detect_arp_type_from_addrlen (hwaddr_len); + arp_type = nm_utils_arp_type_detect_from_hwaddrlen (hwaddr_len); if (arp_type < 0) { duid_error = "unsupported link-layer address"; goto out_fail; @@ -8418,7 +8389,7 @@ dhcp6_get_duid (NMDevice *self, NMConnection *connection, GBytes *hwaddr, gboole duid_error = "missing link-layer address"; goto out_fail; } - if ((arp_type = nm_utils_detect_arp_type_from_addrlen (g_bytes_get_size (hwaddr))) < 0) { + if ((arp_type = nm_utils_arp_type_detect_from_hwaddrlen (g_bytes_get_size (hwaddr))) < 0) { duid_error = "unsupported link-layer address"; goto out_fail; } |