diff options
author | Samuel Mendoza-Jonas <sam.mj@au1.ibm.com> | 2015-03-04 13:40:05 +1100 |
---|---|---|
committer | Samuel Mendoza-Jonas <sam.mj@au1.ibm.com> | 2015-03-26 16:25:17 +1100 |
commit | 49d7e0f299f96125620003e4b2388e1327b15d3e (patch) | |
tree | 0fb82a23f25c348ceef71da5afde2372beaa1e48 /discover/network.c | |
parent | 91143069d1a40cefd997522d85cb2d8adf1681f7 (diff) | |
download | talos-petitboot-49d7e0f299f96125620003e4b2388e1327b15d3e.tar.gz talos-petitboot-49d7e0f299f96125620003e4b2388e1327b15d3e.zip |
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 <sam.mj@au1.ibm.com>
Diffstat (limited to 'discover/network.c')
-rw-r--r-- | discover/network.c | 9 |
1 files changed, 9 insertions, 0 deletions
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( |