+uhttpd_interfaces()
+{
+ local cfg="$1"
+ local http https listen ips
+
+ config_get http "$cfg" listen_http
+ config_get https "$cfg" listen_https
+ for listen in $http $https; do
+ case "$listen" in
+ "" |\
+ "0.0.0.0:"* |\
+ "[::]:"* )
+ continue
+ ;;
+ *.*.*.*:*)
+ ips="$ips ${listen%%:*}
+"
+ ;;
+ \[*\]:* )
+ listen="${listen:1}"
+ ips="$ips ${listen%%]:*}
+"
+ ;;
+ esac
+ done
+ ips="$( echo "$ips" | sort -u )"
+ echo "$ips"
+}
+
+resolve_iface()
+{
+ local cfg="$1"
+ local ipaddr ipaddrs testip="$2"
+
+ config_get ipaddrs "$cfg" ipaddr
+ for ipaddr in $ipaddrs; do
+ [ "$ipaddr" = "$testip" ] && echo "$cfg"
+ done
+}
+
+get_interface_by_ip()
+{
+ config_load network
+ config_foreach resolve_iface interface "$@"
+}
+