X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/15651c68cfa3f423b1f45f25bc8d0107580eff35..91ef5b68e237e3d9e4a90f43427e55ab35928aa3:/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 690d7996e..3e18db1b4 100755 --- a/package/base-files/default/lib/network/config.sh +++ b/package/base-files/default/lib/network/config.sh @@ -4,17 +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 iface "$ifn" ifnames - ;; + 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 @@ -26,23 +24,23 @@ find_config() { } scan_interfaces() { - local mode iftype iface + local mode iftype iface ifname device interfaces= config_cb() { config_get iftype "$CONFIG_SECTION" TYPE case "$iftype" in interface) + config_get proto "$CONFIG_SECTION" proto + append interfaces "$CONFIG_SECTION" config_get iftype "$CONFIG_SECTION" type - config_get mode "$CONFIG_SECTION" proto case "$iftype" in bridge) - config_get iface "$CONFIG_SECTION" ifname - iface="${iface:-br-$CONFIG_SECTION}" - config_set "$CONFIG_SECTION" ifname "$iface" + config_get ifname "$CONFIG_SECTION" ifname + config_set "$CONFIG_SECTION" ifnames "$ifname" + config_set "$CONFIG_SECTION" ifname br-"$CONFIG_SECTION" ;; esac - append interfaces "$CONFIG_SECTION" - ( type "scan_$mode" ) >/dev/null 2>/dev/null && eval "scan_$mode '$CONFIG_SECTION'" + ( type "scan_$proto" ) >/dev/null 2>/dev/null && eval "scan_$proto '$CONFIG_SECTION'" ;; esac } @@ -61,17 +59,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 @@ -80,16 +75,15 @@ setup_interface() { # Setup bridging case "$iftype" in bridge) - config_get bridge_ifname "$config" ifname ifconfig "$iface" up 2>/dev/null >/dev/null - ifconfig "$bridge_ifname" 2>/dev/null >/dev/null && { - $DEBUG brctl addif "$bridge_ifname" "$iface" + ifconfig "br-$config" 2>/dev/null >/dev/null && { + $DEBUG brctl addif "br-$config" "$iface" return 0 } || { - $DEBUG brctl addbr "$bridge_ifname" - $DEBUG brctl setfd "$bridge_ifname" 0 - $DEBUG brctl addif "$bridge_ifname" "$iface" - iface="$bridge_ifname" + $DEBUG brctl addbr "br-$config" + $DEBUG brctl setfd "br-$config" 0 + $DEBUG brctl addif "br-$config" "$iface" + iface="br-$config" } ;; esac