From d947f7f9771b06fa52604de3784f6d2c9cc77c99 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 2 Oct 2020 20:29:57 +0900 Subject: [PATCH] network: introduce dhcp4_update_mac() --- src/network/networkd-dhcp4.c | 21 ++++++++++++++++++++- src/network/networkd-dhcp4.h | 2 +- src/network/networkd-link.c | 15 +++------------ 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c index 91abe888cb3..c8f4f4bf615 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -1182,7 +1182,7 @@ int dhcp4_set_promote_secondaries(Link *link) { return 0; } -int dhcp4_set_client_identifier(Link *link) { +static int dhcp4_set_client_identifier(Link *link) { int r; assert(link); @@ -1431,6 +1431,25 @@ int dhcp4_configure(Link *link) { return dhcp4_set_client_identifier(link); } +int dhcp4_update_mac(Link *link) { + int r; + + assert(link); + + if (!link->dhcp_client) + return 0; + + r = sd_dhcp_client_set_mac(link->dhcp_client, (const uint8_t *) &link->mac, sizeof (link->mac), ARPHRD_ETHER); + if (r < 0) + return r; + + r = dhcp4_set_client_identifier(link); + if (r < 0) + return r; + + return 0; +} + int link_deserialize_dhcp4(Link *link, const char *dhcp4_address) { union in_addr_union address; int r; diff --git a/src/network/networkd-dhcp4.h b/src/network/networkd-dhcp4.h index 5fe1cb323cb..ee3b4f1288a 100644 --- a/src/network/networkd-dhcp4.h +++ b/src/network/networkd-dhcp4.h @@ -18,7 +18,7 @@ typedef enum DHCPClientIdentifier { } DHCPClientIdentifier; int dhcp4_configure(Link *link); -int dhcp4_set_client_identifier(Link *link); +int dhcp4_update_mac(Link *link); int dhcp4_set_promote_secondaries(Link *link); int link_deserialize_dhcp4(Link *link, const char *dhcp4_address); diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 5682a1447b6..59a0166cab6 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -3039,18 +3039,9 @@ int link_update(Link *link, sd_netlink_message *m) { if (r < 0) return log_link_warning_errno(link, r, "Could not update MAC address in IPv4LL client: %m"); - if (link->dhcp_client) { - r = sd_dhcp_client_set_mac(link->dhcp_client, - (const uint8_t *) &link->mac, - sizeof (link->mac), - ARPHRD_ETHER); - if (r < 0) - return log_link_warning_errno(link, r, "Could not update MAC address in DHCP client: %m"); - - r = dhcp4_set_client_identifier(link); - if (r < 0) - return log_link_warning_errno(link, r, "Could not set DHCP client identifier: %m"); - } + r = dhcp4_update_mac(link); + if (r < 0) + return log_link_warning_errno(link, r, "Could not update MAC address in DHCP client: %m"); if (link->dhcp6_client) { const DUID* duid = link_get_duid(link); -- 2.47.3