X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/8aff78b0096b4c2f8ec34fdcf96e55ef8bb9a24a..95e7b381e96d1f6e3108500dec66d980739ca058:/package/base-files/default/lib/network/config.sh diff --git a/package/base-files/default/lib/network/config.sh b/package/base-files/default/lib/network/config.sh index d4864ae86..18f794a31 100755 --- a/package/base-files/default/lib/network/config.sh +++ b/package/base-files/default/lib/network/config.sh @@ -4,12 +4,15 @@ # DEBUG="echo" find_config() { - local iftype iface ifn + local iftype device iface ifaces ifn for ifn in $interfaces; do config_get iftype "$ifn" type config_get iface "$ifn" ifname + case "$iftype" in + bridge) config_get ifaces "$ifn" ifnames;; + esac config_get device "$ifn" device - for ifc in ${device:-$iface}; do + for ifc in $device $iface $ifaces; do [ "$ifc" = "$1" ] && { echo "$ifn" return 0 @@ -21,7 +24,7 @@ find_config() { } scan_interfaces() { - local mode iftype iface + local mode iftype iface ifname device interfaces= config_cb() { config_get iftype "$CONFIG_SECTION" TYPE @@ -29,10 +32,16 @@ scan_interfaces() { interface) config_get proto "$CONFIG_SECTION" proto append interfaces "$CONFIG_SECTION" - ( type "scan_$proto" ) >/dev/null 2>/dev/null && eval "scan_$proto '$CONFIG_SECTION'" + config_get iftype "$CONFIG_SECTION" type config_get ifname "$CONFIG_SECTION" ifname - config_get device "$CONFIG_SECTION" device - config_set "$CONFIG_SECTION" device "${device:-$ifname}" + config_set "$CONFIG_SECTION" device "$ifname" + case "$iftype" in + bridge) + config_set "$CONFIG_SECTION" ifnames "$ifname" + config_set "$CONFIG_SECTION" ifname br-"$CONFIG_SECTION" + ;; + esac + ( type "scan_$proto" ) >/dev/null 2>/dev/null && eval "scan_$proto '$CONFIG_SECTION'" ;; esac } @@ -51,17 +60,14 @@ add_vlan() { setup_interface() { local iface="$1" local config="$2" - local proto="$3" + local proto [ -n "$config" ] || { config=$(find_config "$iface") [ "$?" = 0 ] || return 1 } - [ -n "$proto" ] || { - config_get proto "$config" proto - } - + proto="${3:-$(config_get "$config" proto)}" config_get iftype "$config" type # Setup VLAN interfaces