| #!/bin/sh |
| # |
| # script file to start network |
| # |
| # Usage: init.sh {gw | ap} {all | bridge | wan} |
| # |
| |
| ##if [ $# -lt 2 ]; then echo "Usage: $0 {gw | ap} {all | bridge | wan}"; exit 1 ; fi |
| |
| |
| |
| ## error code |
| ERROR_SUCCESS=0 |
| ERROR_INVALID_PARAMETERS=1 |
| ERROR_NO_SUCH_DEVICE=2 |
| ERROR_NO_CONFIG_FILE=3 |
| ERROR_NO_SUCH_FILE=4 |
| ERROR_NO_SUCH_DIRECTORY=5 |
| ERROR_NULL_FILE=6 |
| ERROR_NET_IF_UP_FAIL=7 |
| #CUR_PATH=`pwd` |
| |
| |
| ROOT=`nv get wifi_root_dir` |
| LOG=$ROOT/wifi/realtek/slog |
| CONFIG_ROOT_DIR="$ROOT/wifi/realtek/rtl8192c" |
| |
| LOG1=$ROOT/wifi/realtek/slog1 |
| LOG_LIMIT=128 #128K |
| #if [ -e "$LOG"]; then |
| LOG_SIZE=`du $LOG | cut -f1` |
| if [ $LOG_SIZE -ge $LOG_LIMIT ]; then |
| mv $LOG $LOG1 |
| fi |
| #else |
| # touch $LOG |
| #fi |
| |
| SCRIPT_DIR=`cat $CONFIG_ROOT_DIR/wifi_script_dir` |
| BIN_DIR=`cat $CONFIG_ROOT_DIR/wifi_bin_dir` |
| |
| if [ -z "$SCRIPT_DIR" ] || [ -z "$BIN_DIR" ]; then |
| wifi_startup_fail_nvset |
| exit $ERROR_NULL_FILE; |
| fi |
| if [ ! -d "$SCRIPT_DIR" ]; then |
| echo "ERROR: $SCRIPT_DIR specify the path NOT exist." >> $LOG |
| wifi_startup_fail_nvset |
| exit $ERROR_NO_SUCH_DIRECTORY; |
| fi |
| if [ ! -d "$BIN_DIR" ]; then |
| echo "ERROR: $BIN_DIR specify the path NOT exist." >> $LOG |
| wifi_startup_fail_nvset |
| exit $ERROR_NO_SUCH_DIRECTORY; |
| fi |
| |
| #PATH=$PATH:$BIN_DIR |
| #export PATH |
| |
| START_BRIDGE=$SCRIPT_DIR/bridge.sh |
| #START_WLAN_APP=$SCRIPT_DIR/wlanapp_8192c.sh |
| START_WLAN=$SCRIPT_DIR/wlan_8192c.sh |
| |
| WLAN_PREFIX=wlan |
| |
| # the following fields must manually set depends on system configuration. Not support auto config. |
| ROOT_WLAN=wlan0 |
| ROOT_CONFIG_DIR=$CONFIG_ROOT_DIR/$ROOT_WLAN |
| WLAN_INTERFACE=$ROOT_WLAN |
| NUM_INTERFACE=0 |
| #VIRTUAL_WLAN_INTERFACE="$ROOT_WLAN-va0 $ROOT_WLAN-va1 $ROOT_WLAN-va2 $ROOT_WLAN-va3" |
| #VIRTUAL_WLAN_INTERFACE="$ROOT_WLAN-vxd" |
| VIRTUAL_WLAN_INTERFACE="$ROOT_WLAN-va0 $ROOT_WLAN-va1 $ROOT_WLAN-vxd" |
| NUM_VIRTUAL_INTERFACE=0 |
| VXD_INTERFACE="$ROOT_WLAN-vxd" |
| #VXD_INTERFACE="" |
| ALL_WLAN_INTERFACE="$WLAN_INTERFACE $VIRTUAL_WLAN_INTERFACE $VXD_INTERFACE" |
| |
| BR_UTIL=brctl |
| IFCONFIG=ifconfig |
| IWPRIV=iwpriv |
| FLASH_PROG=flash |
| |
| export SCRIPT_DIR |
| export BIN_DIR |
| export WLAN_PREFIX |
| export ROOT_WLAN |
| export BR_UTIL |
| |
| |
| wifi_startup_fail_nvset() { |
| date +[%H:%M:%S]init.shenddddddddddddddddddd >> $LOG |
| echo "wlan0 start failed " >> $LOG |
| echo " " >> $LOG |
| } |
| rtl_get_available_wlan() { |
| NUM=0 |
| VALID_WLAN_INTERFACE="" |
| for WLAN in $WLAN_INTERFACE ; do |
| NOT_EXIST=`$IFCONFIG $WLAN > /dev/null 2>&1; echo $?` |
| if [ $NOT_EXIST = 0 ]; then |
| CONFIG_DIR=$CONFIG_ROOT_DIR/$WLAN |
| if [ ! -d "$CONFIG_DIR" ]; then |
| echo "$CONFIG_DIR: No such directory" >> $LOG |
| wifi_startup_fail_nvset |
| exit $ERROR_NO_CONFIG_FILE |
| fi |
| |
| if [ -z "$VALID_WLAN_INTERFACE" ]; then |
| VALID_WLAN_INTERFACE="$WLAN" |
| else |
| VALID_WLAN_INTERFACE="$VALID_WLAN_INTERFACE $WLAN" |
| fi |
| NUM=`expr $NUM + 1` |
| fi |
| done |
| |
| if [ "$NUM" = "0" ]; then |
| echo "$WLAN_INTERFACE: No such device" >> $LOG |
| wifi_startup_fail_nvset |
| exit $ERROR_NO_SUCH_DEVICE; |
| fi |
| WLAN_INTERFACE=$VALID_WLAN_INTERFACE |
| NUM_INTERFACE=$NUM |
| |
| NUM=0 |
| VALID_WLAN_INTERFACE="" |
| for WLAN in $VIRTUAL_WLAN_INTERFACE ; do |
| NOT_EXIST=`$IFCONFIG $WLAN > /dev/null 2>&1; echo $?` |
| if [ $NOT_EXIST = 0 ]; then |
| CONFIG_DIR=$CONFIG_ROOT_DIR/$WLAN |
| if [ ! -d "$CONFIG_DIR" ]; then |
| echo "$CONFIG_DIR: No such directory" >> $LOG |
| wifi_startup_fail_nvset |
| exit $ERROR_NO_CONFIG_FILE |
| fi |
| |
| if [ -z "$VALID_WLAN_INTERFACE" ]; then |
| VALID_WLAN_INTERFACE="$WLAN" |
| else |
| VALID_WLAN_INTERFACE="$VALID_WLAN_INTERFACE $WLAN" |
| fi |
| NUM=`expr $NUM + 1` |
| fi |
| done |
| VIRTUAL_WLAN_INTERFACE=$VALID_WLAN_INTERFACE |
| NUM_VIRTUAL_INTERFACE=$NUM |
| |
| |
| |
| ALL_WLAN_INTERFACE="$WLAN_INTERFACE $VIRTUAL_WLAN_INTERFACE" |
| } |
| |
| BR_INTERFACE=br0 |
| BR_LAN1_INTERFACE=eth0 |
| |
| ENABLE_BR=1 |
| |
| |
| # Generate WPS PIN number |
| rtl_generate_wps_pin() { |
| for WLAN in $WLAN_INTERFACE ; do |
| CONFIG_DIR=$CONFIG_ROOT_DIR/$WLAN |
| GET_VALUE=`cat $CONFIG_DIR/wsc_pin` |
| if [ "$GET_VALUE" = "00000000" ]; then |
| ##echo "27006672" > $CONFIG_DIR/wsc_pin |
| $BIN_DIR/$FLASH_PROG gen-pin $WLAN |
| $BIN_DIR/$FLASH_PROG gen-pin $WLAN-vxd |
| fi |
| done |
| } |
| |
| rtl_set_mac_addr() { |
| # Set Ethernet 0 MAC address |
| GET_VALUE=`cat $ROOT_CONFIG_DIR/nic0_addr` |
| ELAN_MAC_ADDR=$GET_VALUE |
| $IFCONFIG $BR_LAN1_INTERFACE down |
| $IFCONFIG $BR_LAN1_INTERFACE hw ether $ELAN_MAC_ADDR |
| } |
| |
| # Usage: rtl_has_enable_vap wlan_interface |
| rtl_has_enable_vap() { |
| for INTF in $VIRTUAL_WLAN_INTERFACE ; do |
| case $INTF in |
| $1-va[0-9]) |
| CONFIG_DIR=$CONFIG_ROOT_DIR/$INTF |
| WLAN_DISABLED_VALUE=`cat $CONFIG_DIR/wlan_disabled` |
| if [ "$WLAN_DISABLED_VALUE" = "0" ]; then |
| return 1 |
| fi |
| ;; |
| *) |
| ;; |
| esac |
| done |
| |
| return 0 |
| } |
| |
| # Start WLAN interface |
| rtl_start_wlan_if() { |
| for WLAN in $ALL_WLAN_INTERFACE ; do |
| echo "Initialize $WLAN interface" >> $LOG |
| # $IFCONFIG $WLAN down |
| |
| case $WLAN in |
| $WLAN_PREFIX[0-9]) #ROOT_INTERFACE |
| NO_VAP=`$IFCONFIG $WLAN-va0 > /dev/null 2>&1; echo $?` |
| if [ $NO_VAP = 0 ]; then |
| rtl_has_enable_vap $WLAN |
| HAS_VAP=`echo $?` |
| $IWPRIV $WLAN set_mib vap_enable=$HAS_VAP |
| echo "$IWPRIV $WLAN set_mib vap_enable=$HAS_VAP" >> $LOG |
| fi |
| ;; |
| $WLAN_PREFIX[0-9]-vxd) ## station interface |
| # echo "$IWPRIV $WLAN copy_mib" >> $LOG |
| # $IWPRIV $WLAN copy_mib |
| # WPA_SUPPLICAT=`ps | grep wpa_supplicant | grep -v grep` |
| # echo "SUPPLICAT=$WPA_SUPPLICAT" >> $LOG |
| ;; |
| *) |
| ;; |
| esac |
| |
| CONFIG_DIR=$CONFIG_ROOT_DIR/$WLAN |
| WLAN_DISABLED_VALUE=`cat $CONFIG_DIR/wlan_disabled` |
| # ISUP=`$IFCONFIG $WLAN >> $LOG | grep UP` |
| |
| # if [ "$WLAN_DISABLED_VALUE" = 0 -a "$ISUP" = "" ]; then |
| echo "<<<${START_WLAN##*/} $WLAN>>>" >> $LOG |
| $START_WLAN $WLAN |
| ERR=`echo $?` |
| if [ $ERR != 0 ]; then |
| echo "$START_WLAN $WLAN failed" >> $LOG |
| wifi_startup_fail_nvset |
| exit $ERR; |
| fi |
| # else |
| # echo "$WLAN WLAN_DISABLED_VALUE=$WLAN_DISABLED_VALUE, ISUP=$ISUP" >> $LOG |
| # fi |
| done |
| } |
| |
| # Enable WLAN interface |
| rtl_enable_wlan_if() { |
| for WLAN in $ALL_WLAN_INTERFACE ; do |
| CONFIG_DIR=$CONFIG_ROOT_DIR/$WLAN |
| WLAN_DISABLED_VALUE=`cat $CONFIG_DIR/wlan_disabled` |
| if [ "$WLAN_DISABLED_VALUE" = 0 ]; then |
| echo "<<<ENABLE $WLAN>>>" |
| IP_ADDR=`cat $CONFIG_DIR/ip_addr` |
| $IFCONFIG $WLAN $IP_ADDR |
| $IFCONFIG $WLAN up |
| if [ $? != 0 ]; then |
| wifi_startup_fail_nvset |
| echo "ERROR ifconfig $WLAN up fail" >> $LOG |
| exit $ERROR_NET_IF_UP_FAIL; |
| fi |
| fi |
| done |
| } |
| |
| rtl_start_no_gw() { |
| echo "<<<${START_BRIDGE##*/} $BR_INTERFACE $BR_LAN1_INTERFACE $WLAN_INTERFACE $VIRTUAL_WLAN_INTERFACE>>>" >> $LOG |
| $START_BRIDGE $BR_INTERFACE $WLAN_INTERFACE $VIRTUAL_WLAN_INTERFACE |
| ERR=`echo $?` |
| if [ $ERR != 0 ]; then |
| wifi_startup_fail_nvset |
| exit $ERR; |
| fi |
| #CONFIG_DIR=$CONFIG_ROOT_DIR/$WLAN |
| #GET_WPA_PSK=`cat $CONFIG_DIR/wpa_psk` |
| #echo "222 GET_WPA_PSK is "$GET_WPA_PSK |
| #echo "<<<${START_WLAN_APP##*/} start $WLAN_INTERFACE $VIRTUAL_WLAN_INTERFACE $BR_INTERFACE>>>" |
| #$START_WLAN_APP start $WLAN_INTERFACE $VIRTUAL_WLAN_INTERFACE $BR_INTERFACE |
| #ERR=`echo $?` |
| #if [ $ERR != 0 ]; then |
| # exit $ERR; |
| #fi |
| } |
| |
| |
| rtl_init() { |
| date +[%H:%M:%S]init.shstarttttttttttttttttt >> $LOG |
| killall webs 2> /dev/null |
| $BIN_DIR/webs -x |
| |
| echo "realtek rtl_get_available_wlan" >> $LOG |
| rtl_get_available_wlan |
| ## rtl_set_mac_addr |
| |
| |
| |
| echo "realtek rtl_start_wlan_if" >> $LOG |
| rtl_start_wlan_if |
| |
| #NO_EXIST=1 |
| NO_EXIST=`$BR_UTIL > /dev/null 2>&1; echo $?` |
| if [ "$NO_EXIST" = "127" ]; then |
| echo "$BR_UTIL: NOT exist." >> $LOG |
| rtl_enable_wlan_if |
| else |
| #rtl_generate_wps_pin |
| echo "realtek rtl_start_no_gw" >> $LOG |
| rtl_start_no_gw |
| fi |
| |
| #iwpriv wlan0 stopps 1 |
| #iwpriv wlan0 set_mib ps_level=0 |
| |
| |
| date +[%H:%M:%S]init.shenddddddddddddddddddd >> $LOG |
| echo "wlan0 start success" >> $LOG |
| echo " " >> $LOG |
| } |
| |
| rtl_init |