> On Nov 19, 2023, at 6:20 AM, Mina Galić <free...@igalic.co> wrote:
> 
> 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.

FreeBSD currently does not preserve the old ( original ) name of interfaces if 
it is renamed ( either physical or cloned ones ).
While there's an attempt https://reviews.freebsd.org/D28247 
<https://reviews.freebsd.org/D28247>  to get the device name (physical ones) 
but it is not perfect and not completed.

So may I ask why you need to know if a network interface was renamed ?

> 
> Kind regards,
> 
> Mina Galić
> 

Best regards,
Zhenlei

Reply via email to