diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index fd3485ef02..a63b1704c1 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -2231,9 +2231,16 @@ static int link_update_alternative_names(Link *link, sd_netlink_message *message assert(message); r = sd_netlink_message_read_strv(message, IFLA_PROP_LIST, IFLA_ALT_IFNAME, &altnames); - if (r < 0 && r != -ENODATA) + if (r == -ENODATA) + /* The message does not have IFLA_PROP_LIST container attribute. It does not means the + * interface has no alternative name. */ + return 0; + if (r < 0) return log_link_debug_errno(link, r, "rtnl: failed to read alternative names: %m"); + if (strv_equal(altnames, link->alternative_names)) + return 0; + STRV_FOREACH(n, link->alternative_names) hashmap_remove(link->manager->links_by_name, *n);