From: Yu Watanabe Date: Fri, 2 Oct 2020 11:29:57 +0000 (+0900) Subject: network: introduce dhcp4_update_mac() X-Git-Tag: v247-rc1~117^2~21 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d947f7f9771b06fa52604de3784f6d2c9cc77c99;p=thirdparty%2Fsystemd.git network: introduce dhcp4_update_mac() --- 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);