Hi folks,

Linux has an "easy" way of telling if an interface has been renamed.
See cloud-init's is_renamed function: 
https://github.com/canonical/cloud-init/blob/5496745b394f9b7b9eaf57fd619330d484ce2da8/cloudinit/net/__init__.py#L338-L350
This code reads /sys/class/net/<netif>/name_assign_type and if that is 3 or 4, 
it's been renamed.

I can't even think of an sensible way of replicating that.
I can only think of terrible / wrong way of finding it out:

dmesg | grep "changing name to '<new-netif>'"

a less terrible method would be to check for, say:

sysctl dev.<new-netif>.0.%driver

if that fails, we probably have a renamed interface… but we don't know what it 
was renamed from, and this only works for *real* interfaces, not for cloned 
devices, or epairs.

Now, ignoring my terrible hacky attempts at command line tooling, I would also 
happily accept a solution in C, which is fairly easily accessible from Python, 
and which we already use to figure out the uptime (or rather, the boottime): 
https://github.com/canonical/cloud-init/blob/5496745b394f9b7b9eaf57fd619330d484ce2da8/cloudinit/util.py#L2073-L2105

Looking forward to reading your ideas.

Kind regards,

Mina Galić

Reply via email to