summaryrefslogtreecommitdiff
path: root/src/devices/nm-device.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/nm-device.c')
-rw-r--r--src/devices/nm-device.c53
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;
}