wait-online: check received interface name

This commit is contained in:
Yu Watanabe
2022-10-31 10:25:50 +09:00
parent 2401f920f3
commit 0d7e58038e

View File

@@ -64,6 +64,7 @@ Link *link_free(Link *l) {
}
static int link_update_name(Link *l, sd_netlink_message *m) {
char ifname_from_index[IF_NAMESIZE];
const char *ifname;
int r;
@@ -81,6 +82,18 @@ static int link_update_name(Link *l, sd_netlink_message *m) {
if (streq(ifname, l->ifname))
return 0;
/* The kernel sometimes sends wrong ifname change. Let's confirm the received name. */
r = format_ifname(l->ifindex, ifname_from_index);
if (r < 0)
return r;
if (!streq(ifname, ifname_from_index)) {
log_link_debug(l, "New interface name '%s' received from the kernel does not correspond "
"with the name currently configured on the actual interface '%s'. Ignoring.",
ifname, ifname_from_index);
return 0;
}
hashmap_remove(l->manager->links_by_name, l->ifname);
r = free_and_strdup(&l->ifname, ifname);