Re: How to tell if a network interface was renamed (and from what)
Date: Sun, 19 Nov 2023 01:15:04 UTC
> On Nov 19, 2023, at 6:20 AM, Mina Galić <freebsd@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