On Mon, 28 Oct 2024 at 19:24, Silvio Knizek <killermoehre@xxxxxxx> wrote:
Am Montag, dem 28.10.2024 um 17:56 +0000 schrieb Henti Smith:
> On Mon, 28 Oct 2024 at 13:47, Andrei Borzenkov <[arvidjaar@xxxxxxxxx](mailto:arvidjaar@xxxxxxxxx)> wrote:
>
> > On Mon, Oct 28, 2024 at 3:07 PM Henti Smith <[henti@xxxxxxxxxxxxxxxxx](mailto:henti@xxxxxxxxxxxxxxxxx)> wrote:
> > >
> > > On Mon, 28 Oct 2024 at 10:38, Andrei Borzenkov <[arvidjaar@xxxxxxxxx](mailto:arvidjaar@xxxxxxxxx)> wrote:
> > > >
> > > > On Thu, Oct 24, 2024 at 6:29 PM Henti Smith <[henti@xxxxxxxxxxxxxxxxx](mailto:henti@xxxxxxxxxxxxxxxxx)> wrote:
> > > > >
> > > > > Good day everybody
> > > > >
> > > > > I have two link files for mvc-sw1 and mvc-sw2.
> > > > >
> > > > > `mvc-sw1`
> > > > >
> > > > > ```ini
> > > > > # Fixed MAC and name for eno2 (Switch 1 connection) when debug board is plugged in
> > > > > # Renamed to mvc-sw1 by PCI Address and set custom MAC address.
> > > > > [Match]
> > > > > Property=DEVPATH=/devices/pci0000:00/0000:00:10.0/0000:05:00.0/net/eno2
> > > > >
> > > > > [Link]
> > > > > MACAddress=02:00:00:00:05:00
> > > > > Name=mvc-sw1
> > > > > ```
> > > > >
> > > > > `mvc-sw2`
> > > > >
> > > > > ```ini
> > > > > # Fixed MAC and name for enp6s0 (Block Diagram) when debug board is plugged in
> > > > > # Renamed to mvc-sw2 by PCI Address and set custom MAC address.
> > > > > [Match]
> > > > > Property=DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:06:00.0/net/enp6s0
> > > > > ```
> > > >
> > > > These names are already the result of earlier renamoing. I am not sure systemd/udev/networkd will rename the second time.
> > >
> > > Would that be udev ?
> > >
> > > we're trying hard to use systemd for all our network management. If this is not a realistic goal, what is the correct way of managing our network with systemd alongside other tools ?
> >
> > Yes, networkd.link files provide the desired names and naming policy, it is systemd-udevd that applies them.
> >
> > You need to match on some intrinsic device properties and these rules must be present when systemd-udevd first sees and renames these interfaces. Which often means in initrd/initramfs.
>
> Good evening Andrei,
>
> Where can I find detailed information on where to find the names when systemd-udevd sees the interface for the first time ?
>
> Silvio in my previous mail thread commented that I can use udevadm info which is what I'm trying to do here. Is there another method to get the "pre systemd" interface names that I should be using ?
>
> I cannot use mac addresses to match on, nor the Path as both are not reliable in my use case, hence using the full DEVPATH from udevadm.
>
> Any assistance will be appreciated.
>
> Kind regards
> Henti
Hi,
why do you use `Property=DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:06:00.0/net/enp6s0` and not `Path=0000:06:00.0`, as stated by <man:systemd.link>?
We have PCI debug boards that get added and removed during use and that increments and decrements the PCI addresses. I have two devices on consecutive PCI addresses but different bus addresses, so I'm trying to match on bus address not the slot address.
The only way I've been able to find to do that is using the full DEVPATH, but for that I need the interface name as well.
What systemd version do you use, so I can reference online? Also, is your `.link` file applied? What are `networkctl status` and `networkctl status <interface_name>` saying? What says `udevadmin info /sys/class/net/<interface_name>` for all the interfaces in question?
Focal ubuntu, systemd 245.4
I'll have to check tomorrow at the office for networkctl status and the udevadm info was in my first mail, but I'll add it below again.
```
P: /devices/pci0000:00/0000:00:10.0/0000:05:00.0/net/eno2
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:10.0/0000:05:00.0/net/eno2
E: INTERFACE=eno2
E: IFINDEX=4
E: SUBSYSTEM=net
E: USEC_INITIALIZED=8968404
E: ID_NET_NAMING_SCHEME=v245
E: ID_NET_NAME_ONBOARD=eno2
E: ID_NET_LABEL_ONBOARD=Onboard ETHERNET Controller
E: ID_NET_NAME_PATH=enp5s0
E: ID_BUS=pci
E: ID_VENDOR_ID=0x11ab
E: ID_MODEL_ID=0x0f13
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Marvell Technology Group Ltd.
E: ID_PATH=pci-0000:05:00.0
E: ID_PATH_TAG=pci-0000_05_00_0
E: ID_NET_DRIVER=oak
E: ID_NET_LINK_FILE=/etc/systemd/network/10-oxb-mvc-sw1-debug.link
E: ID_NET_NAME=eno2
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/eno2 /sys/subsystem/net/devices/eno2
E: TAGS=:systemd:
```
```
P: /devices/pci0000:00/0000:00:11.0/0000:06:00.0/net/enp6s0
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:06:00.0/net/enp6s0
E: INTERFACE=enp6s0
E: IFINDEX=5
E: SUBSYSTEM=net
E: USEC_INITIALIZED=8928106
E: ID_NET_NAMING_SCHEME=v245
E: ID_NET_NAME_PATH=enp6s0
E: ID_BUS=pci
E: ID_VENDOR_ID=0x11ab
E: ID_MODEL_ID=0x0f13
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Marvell Technology Group Ltd.
E: ID_PATH=pci-0000:06:00.0
E: ID_PATH_TAG=pci-0000_06_00_0
E: ID_NET_DRIVER=oak
E: ID_NET_LINK_FILE=/etc/systemd/network/10-oxb-mvc-sw2-debug.link
E: ID_NET_NAME=enp6s0
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enp6s0 /sys/subsystem/net/devices/enp6s0
E: TAGS=:systemd:
```
P: /devices/pci0000:00/0000:00:10.0/0000:05:00.0/net/eno2
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:10.0/0000:05:00.0/net/eno2
E: INTERFACE=eno2
E: IFINDEX=4
E: SUBSYSTEM=net
E: USEC_INITIALIZED=8968404
E: ID_NET_NAMING_SCHEME=v245
E: ID_NET_NAME_ONBOARD=eno2
E: ID_NET_LABEL_ONBOARD=Onboard ETHERNET Controller
E: ID_NET_NAME_PATH=enp5s0
E: ID_BUS=pci
E: ID_VENDOR_ID=0x11ab
E: ID_MODEL_ID=0x0f13
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Marvell Technology Group Ltd.
E: ID_PATH=pci-0000:05:00.0
E: ID_PATH_TAG=pci-0000_05_00_0
E: ID_NET_DRIVER=oak
E: ID_NET_LINK_FILE=/etc/systemd/network/10-oxb-mvc-sw1-debug.link
E: ID_NET_NAME=eno2
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/eno2 /sys/subsystem/net/devices/eno2
E: TAGS=:systemd:
```
```
P: /devices/pci0000:00/0000:00:11.0/0000:06:00.0/net/enp6s0
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:06:00.0/net/enp6s0
E: INTERFACE=enp6s0
E: IFINDEX=5
E: SUBSYSTEM=net
E: USEC_INITIALIZED=8928106
E: ID_NET_NAMING_SCHEME=v245
E: ID_NET_NAME_PATH=enp6s0
E: ID_BUS=pci
E: ID_VENDOR_ID=0x11ab
E: ID_MODEL_ID=0x0f13
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Marvell Technology Group Ltd.
E: ID_PATH=pci-0000:06:00.0
E: ID_PATH_TAG=pci-0000_06_00_0
E: ID_NET_DRIVER=oak
E: ID_NET_LINK_FILE=/etc/systemd/network/10-oxb-mvc-sw2-debug.link
E: ID_NET_NAME=enp6s0
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enp6s0 /sys/subsystem/net/devices/enp6s0
E: TAGS=:systemd:
```
In the end, if your interface locations or hardware properties are *not* reliable, than *no* automatism in the world would be able to assign static values to them.
Henti