From 76253e73f9c9c24fec755e485516f3b55d0707b4 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 8 Oct 2014 14:15:45 -0500 Subject: sd-dhcp-client: support non-Ethernet hardware addresses Like Infiniband. See RFC 4390 section 2.1 for details on DHCP and Infiniband; chaddr is zeroed, hlen is set to 0, and htype is set to ARPHRD_INFINIBAND because IB hardware addresses are 20 bytes in length. --- src/network/networkd-dhcp4.c | 4 +++- src/network/networkd-link.c | 12 +++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'src/network') diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c index e451af8643..63bfa86f99 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -599,7 +599,9 @@ int dhcp4_configure(Link *link) { if (r < 0) return r; - r = sd_dhcp_client_set_mac(link->dhcp_client, &link->mac); + r = sd_dhcp_client_set_mac(link->dhcp_client, + (const uint8_t *) &link->mac, + sizeof (link->mac), ARPHRD_ETHER); if (r < 0) return r; diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index dcbe38a90a..c6e173fbc6 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -909,7 +909,9 @@ static void icmp6_router_handler(sd_icmp6_nd *nd, int event, void *userdata) { return; } - r = sd_dhcp6_client_set_mac(link->dhcp6_client, &link->mac); + r = sd_dhcp6_client_set_mac(link->dhcp6_client, + (const uint8_t *) &link->mac, + sizeof (link->mac), ARPHRD_ETHER); if (r < 0) { link->dhcp6_client = sd_dhcp6_client_unref(link->dhcp6_client); return; @@ -1647,7 +1649,9 @@ int link_update(Link *link, sd_rtnl_message *m) { if (link->dhcp_client) { r = sd_dhcp_client_set_mac(link->dhcp_client, - &link->mac); + (const uint8_t *) &link->mac, + sizeof (link->mac), + ARPHRD_ETHER); if (r < 0) { log_warning_link(link, "Could not update MAC address in DHCP client: %s", @@ -1658,7 +1662,9 @@ int link_update(Link *link, sd_rtnl_message *m) { if (link->dhcp6_client) { r = sd_dhcp6_client_set_mac(link->dhcp6_client, - &link->mac); + (const uint8_t *) &link->mac, + sizeof (link->mac), + ARPHRD_ETHER); if (r < 0) { log_warning_link(link, "Could not update MAC address in DHCPv6 client: %s", -- cgit v1.2.3-54-g00ecf