mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-19 21:58:04 +00:00
lldpd: extended interface(s) parsing to handle patterns
For interface type parameters, the man page documents patterns: ``` *,!eth*,!!eth1 uses all interfaces, except interfaces starting with "eth", but including "eth1". ``` * Renamed `_ifname` to `_l2dev`. * get the l2dev via network_get_physdev (and not l3dev) * Glob pattern `*` is also valid - use noglob for this The net result is that now interface 'names' including globs '*' and '!' inversions are included in the generated lldpd configs. Temporarily `set -o noglob` and then `set +o noglob` to disable & enable globbing respectively, because when we pass `*` as an interface choice, other file and pathnames get sucked in from where the init script runs, and the `*` never makes it to lldpd. Tested extensively on: 22.03.6, 23.05.3 Signed-off-by: Paul Donald <newtwen+github@gmail.com> [ squash with commit bumping release version ] Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
This commit is contained in:
parent
ea609fe486
commit
4a81d868db
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=lldpd
|
||||
PKG_VERSION:=1.0.17
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=4
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://github.com/lldpd/lldpd/releases/download/$(PKG_VERSION)/
|
||||
|
@ -80,12 +80,20 @@ get_config_cid_ifaces() {
|
||||
config_get _ifaces 'config' "$2"
|
||||
|
||||
local _iface _ifnames=""
|
||||
# Set noglob to prevent '*' capturing diverse file names in the for ... in
|
||||
set -o noglob
|
||||
for _iface in $_ifaces; do
|
||||
local _ifname=""
|
||||
if network_get_device _ifname "$_iface" || [ -e "/sys/class/net/$_iface" ]; then
|
||||
append _ifnames "${_ifname:-$_iface}" ","
|
||||
|
||||
local _l2device=""
|
||||
if network_get_physdev _l2device "$_iface" || [ -e "/sys/class/net/$_iface" ]; then
|
||||
append _ifnames "${_l2device:-$_iface}" ","
|
||||
else
|
||||
# Glob case (interface is e.g. '!eth1' or 'eth*' or '*')
|
||||
append _ifnames "$_iface" ","
|
||||
fi
|
||||
done
|
||||
# Turn noglob off i.e. enable glob again
|
||||
set +o noglob
|
||||
|
||||
export -n "${1}=$_ifnames"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user