dhcp/systemd: gracefully fail when the interface has unknown ARP type
This commit is contained in:
@@ -517,7 +517,7 @@ get_arp_type (const GByteArray *hwaddr)
|
||||
else if (hwaddr->len == INFINIBAND_ALEN)
|
||||
return ARPHRD_INFINIBAND;
|
||||
else
|
||||
g_assert_not_reached ();
|
||||
return ARPHRD_NONE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -534,6 +534,7 @@ ip4_start (NMDhcpClient *client, const char *dhcp_anycast_addr, const char *last
|
||||
const char *hostname, *fqdn;
|
||||
int r, i;
|
||||
gboolean success = FALSE;
|
||||
guint16 arp_type;
|
||||
|
||||
g_assert (priv->client4 == NULL);
|
||||
g_assert (priv->client6 == NULL);
|
||||
@@ -555,10 +556,16 @@ ip4_start (NMDhcpClient *client, const char *dhcp_anycast_addr, const char *last
|
||||
|
||||
hwaddr = nm_dhcp_client_get_hw_addr (client);
|
||||
if (hwaddr) {
|
||||
arp_type= get_arp_type (hwaddr);
|
||||
if (arp_type == ARPHRD_NONE) {
|
||||
nm_log_warn (LOGD_DHCP4, "(%s): failed to determine ARP type", iface);
|
||||
goto error;
|
||||
}
|
||||
|
||||
r = sd_dhcp_client_set_mac (priv->client4,
|
||||
hwaddr->data,
|
||||
hwaddr->len,
|
||||
get_arp_type (hwaddr));
|
||||
arp_type);
|
||||
if (r < 0) {
|
||||
nm_log_warn (LOGD_DHCP4, "(%s): failed to set DHCP MAC address (%d)", iface, r);
|
||||
goto error;
|
||||
|
Reference in New Issue
Block a user