From: Samuel Mendoza-Jonas Date: Wed, 4 Mar 2015 02:40:05 +0000 (+1100) Subject: discover: Recognise renamed network interfaces X-Git-Tag: v1.0.0~79^2~1 X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=commitdiff_plain;h=49d7e0f299f96125620003e4b2388e1327b15d3e discover: Recognise renamed network interfaces Udev may change the name of network interfaces if persistent interface naming is used. It is important to recognise this since udev may re-use the old name for a different interface. If we receive an RTM_NEWLINK message for an existing interface, check if the name has been updated. Signed-off-by: Samuel Mendoza-Jonas --- diff --git a/discover/network.c b/discover/network.c index 3946694..0dad087 100644 --- a/discover/network.c +++ b/discover/network.c @@ -510,6 +510,15 @@ static int network_handle_nlmsg(struct network *network, struct nlmsghdr *nlmsg) add_interface(network, interface); } + /* A repeated RTM_NEWLINK can represent an interface name change */ + if (strncmp(interface->name, ifname, IFNAMSIZ)) { + pb_debug("ifname update: %s -> %s\n", interface->name, ifname); + strncpy(interface->name, ifname, sizeof(interface->name) - 1); + talloc_free(interface->dev->device->id); + interface->dev->device->id = + talloc_strdup(interface->dev->device, ifname); + } + /* notify the sysinfo code about changes to this interface */ if (strcmp(interface->name, "lo")) system_info_register_interface(