summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/network/networkd-link.c31
1 files changed, 26 insertions, 5 deletions
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 61e257c1d5..416eb56483 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -1345,11 +1345,32 @@ int link_update(Link *link, sd_rtnl_message *m) {
}
while (sd_rtnl_message_read(m, &type, &data) > 0) {
- if (type == IFLA_MTU && link->network->dhcp &&
- link->network->dhcp_mtu && !link->original_mtu) {
- link->original_mtu = *(uint16_t *) data;
- log_debug_link(link, "saved original MTU: %" PRIu16,
- link->original_mtu);
+ switch(type) {
+ case IFLA_MTU:
+ if (link->network->dhcp && link->network->dhcp_mtu &&
+ !link->original_mtu) {
+ link->original_mtu = *(uint16_t *) data;
+ log_debug_link(link, "saved original MTU: %"
+ PRIu16, link->original_mtu);
+ }
+
+ break;
+ case IFLA_ADDRESS:
+ if (memcmp(&link->mac.ether_addr_octet, &data,
+ ETH_ALEN)) {
+ memcpy(&link->mac, data, ETH_ALEN);
+
+ log_debug_link(link, "updated MAC address: "
+ "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
+ link->mac.ether_addr_octet[0],
+ link->mac.ether_addr_octet[1],
+ link->mac.ether_addr_octet[2],
+ link->mac.ether_addr_octet[3],
+ link->mac.ether_addr_octet[4],
+ link->mac.ether_addr_octet[5]);
+ }
+
+ break;
}
}