network: introduce dhcp4_update_mac()

This commit is contained in:
Yu Watanabe 2020-10-02 20:29:57 +09:00
parent a3adb4a6a2
commit d947f7f977
3 changed files with 24 additions and 14 deletions

View File

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

View File

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

View File

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