From 01c4149b4c71c6badced01d534b1af3570e29f61 Mon Sep 17 00:00:00 2001 From: ghoker143 Date: Sun, 22 Mar 2026 12:43:47 +0800 Subject: [PATCH] device: skip VLAN chain lookup for existing kernel interfaces Signed-off-by: ghoker143 --- device.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/device.c b/device.c index 301be31..a8c654f 100644 --- a/device.c +++ b/device.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -893,8 +894,16 @@ __device_get(const char *name, int create, bool check_vlan) dev = avl_find_element(&devices, name, dev, avl); - if (!dev && check_vlan && strchr(name, '.')) - return get_vlan_device_chain(name, create); + if (!dev && check_vlan && strchr(name, '.')) { + /* + * Only treat dotted names as VLAN-style if the full name does + * NOT already exist as a real kernel netdev. Externally managed + * interfaces (e.g. ModemManager QMI mux links: qmapmux0.0) are + * valid kernel devices whose names happen to contain a dot. + */ + if (!if_nametoindex(name)) + return get_vlan_device_chain(name, create); + } if (name[0] == '@') return device_alias_get(name + 1);