dhcp/systemd: gracefully fail when the interface has unknown ARP type

This commit is contained in:
Beniamino Galvani
2016-01-25 09:46:53 +01:00
parent 583c759dd7
commit 2ef70653fb

View File

@@ -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;