1#!/bin/sh /etc/rc.common 2 3setup_hostname() # $1: apmode/brmode/extmode/factory 4{ 5 local hostname 6 7 case "$1" in 8 apmode) hostname=$($CONFIG get ap_netbiosname) 9 ;; 10 brmode) hostname=$($CONFIG get bridge_netbiosname) 11 ;; 12 *) hostname="$($CONFIG get netbiosname)" ;; 13 esac 14 [ -z "$hostname" ] && hostname="$($CONFIG get Device_name)" 15 16 echo "$hostname" > /proc/sys/kernel/hostname 17} 18 19setup_interface_static() # $1: apmode/brmode/extmode/factory 20{ 21 case "$1" in 22 apmode) 23 ifconfig br0 $($CONFIG get ap_ipaddr) netmask $($CONFIG get ap_netmask) 24 route add default gw $($CONFIG get ap_gateway) 25 echo "nameserver $($CONFIG get ap_ether_dns1)" > /tmp/resolv.conf 26 echo "nameserver $($CONFIG get ap_ether_dns2)" >> /tmp/resolv.conf 27 ;; 28 brmode) 29 ifconfig br0 $($CONFIG get bridge_ipaddr) netmask $($CONFIG get bridge_netmask) 30 route add default gw $($CONFIG get bridge_gateway) 31 echo "nameserver $($CONFIG get bridge_ether_dns1)" > /tmp/resolv.conf 32 echo "nameserver $($CONFIG get bridge_ether_dns2)" >> /tmp/resolv.conf 33 ;; 34 extmode) 35 ifconfig br0 $($CONFIG get extender_ipaddr) netmask $($CONFIG get extender_netmask) 36 route add default gw $($CONFIG get extender_gateway) 37 echo "nameserver $($CONFIG get extender_ether_dns1)" > /tmp/resolv.conf 38 echo "nameserver $($CONFIG get extender_ether_dns2)" >> /tmp/resolv.conf 39 ;; 40 factory) 41 ifconfig br0 $($CONFIG get lan_ipaddr) netmask $($CONFIG get lan_netmask) 42 ;; 43 esac 44 /sbin/ledcontrol -n wan -c green -s on 45} 46 47setup_interface_dhcp() # $1: apmode/brmode/extmode 48{ 49 hostname=$(cat /proc/sys/kernel/hostname) 50 51 # hostapd always need a lan ip to up. 52 [ "$1" = "apmode" ] && ifconfig br0 $($CONFIG get lan_ipaddr) 53 54 /sbin/udhcpc -a -b -i br0 -h "$hostname" -r $($CONFIG get ap_dhcp_ipaddr) & 55 56 case "$1" in 57 apmode) echo "ap mode start udhcp" ;; 58 brmode) /etc/init.d/net-br-dhcpc-helper & ;; 59 extmode) sleep 10 60 /etc/init.d/net-br-dhcpc-helper & ;; 61 esac 62} 63 64setup_interface() # $1: apmode/brmode/extmode/factory 65{ 66 local dhcp=1 67 68 case "$1" in 69 apmode) [ "$($CONFIG get ap_ether_ip_assign)" = "0" ] && dhcp=0 ;; 70 brmode) [ "$($CONFIG get bridge_ether_ip_assign)" = "0" ] && dhcp=0 ;; 71 extmode) [ "$($CONFIG get extender_ether_ip_assign)" = "0" ] && dhcp=0 ;; 72 factory) dhcp=0 ;; 73 esac 74 75 [ "$dhcp" = "1" ] && setup_interface_dhcp $1 || setup_interface_static $1 76} 77 78start0() # $1: boot/start 79{ 80 local opmode=$($CONFIG get i_opmode) 81 82 # Stop Traffic Meter 83 /sbin/cmd_traffic_meter stop 84 /usr/bin/killall tfm_led 85 86 setup_hostname $opmode 87 88 ifconfig ethlan up 89 ifconfig ethwan up 90 ifconfig br0 up 91 92 /etc/init.d/wlan-common start & 93 94 # Pull low PHY 9 seconds then pull high PHY to let wired client re-obtain IP address 95 echo -n '911111' > /proc/switch_phy && sleep 10 96 setup_interface $opmode 97 98 /sbin/cmd_ebtables start 99 /etc/init.d/net-scan $1 # daemon for getting attached devices 100 /etc/init.d/lltd $1 # Link Layer Topology Discovery Daemon 101 /etc/init.d/telnet $1 # telnet daemon for Router Debugging Mode ... 102 /usr/sbin/update_smb 103 /sbin/cmddlna ip_restart & # dlan daemon 104 /etc/init.d/upnp $1 105 if [ "$opmode" = "apmode" ]; then 106 /usr/sbin/brctl stp br0 1 107 fi 108} 109 110start() 111{ 112 start0 start 113 /etc/init.d/ntpclient start 114 /etc/init.d/cron start 115 /etc/init.d/dnsmasq start 116} 117 118stop() 119{ 120 # wan service 121 /etc/init.d/dnsmasq stop 122 /etc/init.d/cron stop 123 /etc/init.d/ntpclient stop 124 125 # lan service 126# /etc/init.d/samba stop 127 /etc/init.d/upnp stop 128 /etc/init.d/telnet stop 129 /etc/init.d/lltd stop 130 /etc/init.d/net-scan stop 131 /sbin/cmd_ebtables stop 132 if [ "$($CONFIG get i_opmode)" = "apmode" ]; then 133 /usr/sbin/brctl stp br0 0 134 fi 135 136 /sbin/ledcontrol -n wan -c amber -s on 137 killall net-br-dhcpc-helper 138 killall zcip 139 killall -SIGUSR2 udhcpc; killall udhcpc; killall udhcpc; sleep 1 140 141 ifconfig br0 down 142 ifconfig ethwan down 143 ifconfig ethlan down 144} 145 146restart() 147{ 148 stop 149 start 150} 151 152boot() 153{ 154 /sbin/ledcontrol -n wan -c amber -s on 155 start0 boot 156} 157