diff options
| author | Ritika Chopra <r.chopra@vyos.io> | 2026-08-14 12:03:26 -0700 |
|---|---|---|
| committer | Ritika Chopra <r.chopra@vyos.io> | 2026-08-14 12:03:26 -0700 |
| commit | a1360d645df8a82cd593d55ca592a8a1d60b34b3 (patch) | |
| tree | 1a1cfa81afc9e4fc7961d53746694062fd7f786a | |
| parent | 44703a8ef2f56bac995e33770a74fba47117c354 (diff) | |
| download | vyos-1x-a1360d645df8a82cd593d55ca592a8a1d60b34b3.tar.gz vyos-1x-a1360d645df8a82cd593d55ca592a8a1d60b34b3.zip | |
T8329: Skip enslaved interfaces to be considered as independent physical interfaces during hw-id naming
These interfaces include the Azure VF interfaces which share the same mac address with their master synthetic interface
| -rwxr-xr-x | src/system/vyos-net-name-resolve.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/system/vyos-net-name-resolve.py b/src/system/vyos-net-name-resolve.py index 7934e8442..993fd6f3e 100755 --- a/src/system/vyos-net-name-resolve.py +++ b/src/system/vyos-net-name-resolve.py @@ -178,6 +178,11 @@ def discover_physical_interfaces(sys_class_net: str = '/sys/class/net') -> dict: """Return {kernel_name: mac} for every interface backed by a real bus device - excludes lo, bridges, bonds, VLANs, veth, tunnels, etc. + Also excludes interfaces enslaved to another netdev (master symlink + present), which covers Azure VF datapath interfaces bound under their + synthetic parent. Those are acceleration children, not independent + primary interfaces, and must not be candidates for hw-id naming. + sys_class_net is overridable for testing against a fake sysfs tree. """ interfaces = {} @@ -187,6 +192,14 @@ def discover_physical_interfaces(sys_class_net: str = '/sys/class/net') -> dict: for entry in net_dir.iterdir(): if not (entry / 'device').exists(): + logger.debug( + f"skipping '{entry.name}': no backing device in sysfs" + ) + continue + if (entry / 'master').exists(): + logger.debug( + f"skipping '{entry.name}': interface is enslaved via master link" + ) continue mac = get_permanent_mac(entry.name, sys_class_net) if mac: |
