mirror of
https://github.com/Dasharo/systemd.git
synced 2026-03-06 15:02:31 -08:00
wait-online: check received interface name
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user