Having hundrets of interfaces configured with netifd makes __network_ifstatus go busted with "jsonfilter: Argument list too long".
Fix this by removing the __NETWORK_CACHE environment variable. The network_flush_cache function is kept so it can be reused later for per-interface caching or similar things. Signed-off-by: Helmut Schaa <[email protected]> --- FYI I've tried using a temp-file as cache but no real speed-up could be observed. Hence, it might make sense to look into per-interface caching instead. package/base-files/files/lib/functions/network.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/package/base-files/files/lib/functions/network.sh b/package/base-files/files/lib/functions/network.sh index 1b0c717..42057ba 100644 --- a/package/base-files/files/lib/functions/network.sh +++ b/package/base-files/files/lib/functions/network.sh @@ -6,10 +6,7 @@ __network_ifstatus() { local __tmp - [ -z "$__NETWORK_CACHE" ] && \ - export __NETWORK_CACHE="$(ubus call network.interface dump)" - - __tmp="$(jsonfilter ${4:+-F "$4"} ${5:+-l "$5"} -s "$__NETWORK_CACHE" -e "[email protected]${2:+[@.interface='$2']}$3")" + __tmp="$(ubus call network.interface dump | jsonfilter ${4:+-F "$4"} ${5:+-l "$5"} -e "[email protected]${2:+[@.interface='$2']}$3")" [ -z "$__tmp" ] && \ unset "$1" && \ @@ -265,4 +262,4 @@ network_ready_device() } # flush the internal value cache to force re-reading values from ubus -network_flush_cache() { unset __NETWORK_CACHE; } +network_flush_cache() { true; } -- 1.8.4.5 _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
