Interface renaming is "hard".
"Clonable" interfaces can be created either by providing an explicit name, or just providing a type, with the kernel-provided name auto-assignment.
The current code tries to support the efficient performance of the second case. It works pretty good when the interface names are stable. When the interfaces are renamed, a number of problems arise.
For example, there are all sorts of spurious errors when trying to create a seemingly-non-existent interface, when such interface was created and then renamed.
Some of the APIs we provide (/dev/ or linux sysfs interface names) do not account for renames.
To (somewhat) aid the problem, I'm proposing to provide an explicit method to get an original interface name in the kernel and export it to userland via Netlink.
This diff uses the simplest possible implementation - by embedding original interface name into the struct ifnet (e.g. IF_NAMESIZE == 16 bytes). It is mergeable to 13-S, as there are exactly 16 spare bytes available in the end of the structure.