For interface type parameters, the man page documents patterns: ``` *,!eth*,!!eth1
uses all interfaces, except interfaces starting with "eth", but including "eth1". ``` While we must check that interfaces exist, first strip any prefixed "!" then pass the original string (with `!` prefix) again, to command lines. * Renamed `_ifname` to `_l3dev`. * Glob pattern `*` is also valid - pass those verbatim. The net result is that now interface 'names' including globs '*' and '!' inversions are included in the generated lldpd configs. We must also `set -o noglob` and `set +o noglob` to disable and enable globbing respectively, because when we pass `*` as an interface choice everything goes to hell without them. Tested extensively on: 22.03.6 Signed-off-by: Paul Donald <newtwen+git...@gmail.com> --- .../network/services/lldpd/files/lldpd.init | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init index 67ee011ae2..fc53520c5b 100644 --- a/package/network/services/lldpd/files/lldpd.init +++ b/package/network/services/lldpd/files/lldpd.init @@ -76,18 +76,32 @@ get_config_restart_hash() { } get_config_cid_ifaces() { + set -o noglob local _ifaces config_get _ifaces 'config' "$2" local _iface _ifnames="" for _iface in $_ifaces; do - local _ifname="" - if network_get_device _ifname "$_iface" || [ -e "/sys/class/net/$_iface" ]; then - append _ifnames "${_ifname:-$_iface}" "," + local _l3dev="" + # save any "!" or "!!" prefix from the interface name + _suffix=${_iface##*"!"} + _prefix=${_iface%%"$_suffix"} + + if network_get_device _l3dev "$_suffix" || [ -e "/sys/class/net/$_suffix" ]; then + # prepend the stripped "!" or "!!" prefix here if we had one + append _ifnames "$_prefix${_l3dev:-$_suffix}" "," + else + case $_iface in + *"*"*) + # Append any interface names including a glob '*' pattern + append _ifnames "$_iface" "," + ;; + esac fi done export -n "${1}=$_ifnames" + set +o noglob } write_lldpd_conf() -- 2.44.0 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel