diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2016-01-25 09:46:53 +0100 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2016-01-25 15:22:15 +0100 |
commit | 5b5a3512d2b5eab84bd6f6db68cd265e3a5b0857 (patch) | |
tree | 968ba995dce61acd630a5ed046a3255298b8b9da | |
parent | a47b2abeb173bf2459c1a96a40d3e2fc126cd62f (diff) | |
download | NetworkManager-5b5a3512d2b5eab84bd6f6db68cd265e3a5b0857.tar.gz |
dhcp/systemd: gracefully fail when the interface has unknown ARP type
-rw-r--r-- | src/dhcp-manager/nm-dhcp-systemd.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/dhcp-manager/nm-dhcp-systemd.c b/src/dhcp-manager/nm-dhcp-systemd.c index 4f68a0b6d6..bafc7c9d3b 100644 --- a/src/dhcp-manager/nm-dhcp-systemd.c +++ b/src/dhcp-manager/nm-dhcp-systemd.c @@ -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; |