mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-02-04 17:47:03 +03:00
network: introduce ipv4ll_update_mac()
This commit is contained in:
parent
5460bde5c5
commit
a3adb4a6a2
@ -195,6 +195,36 @@ int ipv4ll_configure(Link *link) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ipv4ll_update_mac(Link *link) {
|
||||
bool restart;
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
|
||||
if (!link->ipv4ll)
|
||||
return 0;
|
||||
|
||||
restart = sd_ipv4ll_is_running(link->ipv4ll) > 0;
|
||||
|
||||
if (restart) {
|
||||
r = sd_ipv4ll_stop(link->ipv4ll);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
r = sd_ipv4ll_set_mac(link->ipv4ll, &link->mac);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (restart) {
|
||||
r = sd_ipv4ll_start(link->ipv4ll);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int link_serialize_ipv4ll(Link *link, FILE *f) {
|
||||
struct in_addr address;
|
||||
int r;
|
||||
|
@ -8,6 +8,7 @@
|
||||
typedef struct Link Link;
|
||||
|
||||
int ipv4ll_configure(Link *link);
|
||||
int ipv4ll_update_mac(Link *link);
|
||||
int link_serialize_ipv4ll(Link *link, FILE *f);
|
||||
int link_deserialize_ipv4ll(Link *link, const char *ipv4ll_address);
|
||||
|
||||
|
@ -3035,25 +3035,9 @@ int link_update(Link *link, sd_netlink_message *m) {
|
||||
mac.ether_addr_octet[4],
|
||||
mac.ether_addr_octet[5]);
|
||||
|
||||
if (link->ipv4ll) {
|
||||
bool restart = sd_ipv4ll_is_running(link->ipv4ll) > 0;
|
||||
|
||||
if (restart) {
|
||||
r = sd_ipv4ll_stop(link->ipv4ll);
|
||||
if (r < 0)
|
||||
return log_link_warning_errno(link, r, "Could not stop IPv4LL client: %m");
|
||||
}
|
||||
|
||||
r = sd_ipv4ll_set_mac(link->ipv4ll, &link->mac);
|
||||
if (r < 0)
|
||||
return log_link_warning_errno(link, r, "Could not update MAC address in IPv4LL client: %m");
|
||||
|
||||
if (restart) {
|
||||
r = sd_ipv4ll_start(link->ipv4ll);
|
||||
if (r < 0)
|
||||
return log_link_warning_errno(link, r, "Could not restart IPv4LL client: %m");
|
||||
}
|
||||
}
|
||||
r = ipv4ll_update_mac(link);
|
||||
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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user