#!/bin/sh # Copyright (C) 2006 OpenWrt.org . /etc/functions.sh find_net_config() {( local vif="$1" local cfg local ifname config_get cfg "$vif" network [ -z "$cfg" ] && { include /lib/network scan_interfaces config_get ifname "$vif" ifname cfg="$(find_config "$ifname")" } [ -z "$cfg" ] && return 0 echo "$cfg" )} bridge_interface() {( local cfg="$1" [ -z "$cfg" ] && return 0 include /lib/network scan_interfaces config_get iftype "$cfg" type [ "$iftype" = bridge ] && config_get "$cfg" ifname )} wifi_up() { for device in ${2:-$DEVICES}; do ( config_get iftype "$device" type if eval "type enable_$iftype" 2>/dev/null >/dev/null; then eval "scan_$iftype '$device'" eval "enable_$iftype '$device'" || echo "$device($iftype): Setup failed" else echo "$device($iftype): Interface type not supported" fi ); done } wifi_down() { for device in ${2:-$DEVICES}; do ( config_get iftype "$device" type if eval "type disable_$iftype" 2>/dev/null >/dev/null; then eval "scan_$iftype '$device'" eval "disable_$iftype '$device'" || echo "$device($iftype): Disable failed" else echo "$device($iftype): Interface type not supported" fi ); done } wifi_detect() { for driver in ${2:-$DRIVERS}; do ( if eval "type detect_$driver" 2>/dev/null >/dev/null; then eval "detect_$driver" || echo "$driver: Detect failed" >&2 else echo "$driver: Hardware detection not supported" >&2 fi ); done } start_net() {( local iface="$1" local config="$2" include /lib/network scan_interfaces setup_interface "$1" "$2" )} config_cb() { config_get TYPE "$CONFIG_SECTION" TYPE case "$TYPE" in wifi-device) append DEVICES "$CONFIG_SECTION" ;; wifi-iface) config_get device "$CONFIG_SECTION" device config_get vifs "$device" vifs append vifs "$CONFIG_SECTION" config_set "$device" vifs "$vifs" ;; esac } DEVICES= DRIVERS= config_load wireless include /lib/wifi case "$1" in down) wifi_down "$2";; detect) wifi_detect "$2";; *) wifi_up "$2";; esac