diff --git a/root/etc/functions.sh b/root/etc/functions.sh index 155e30be33..79db1dad3a 100755 --- a/root/etc/functions.sh +++ b/root/etc/functions.sh @@ -16,7 +16,7 @@ if_valid () ( hwaddr=$(nvram_get ${hwname}macaddr) [ -z "$hwaddr" ] && return 1 - vif=$(ifconfig -a | awk '{IGNORECASE=1} /^eth.*'$hwaddr'/ {print $1; exit}') + vif=$(ifconfig -a | awk '/^eth.*'$hwaddr'/ {print $1; exit}' IGNORECASE=1) debug "# vlan$i: $hwname $hwaddr => $vif" $DEBUG ifconfig $vif up @@ -24,89 +24,3 @@ if_valid () ( } ifconfig "$1" >/dev/null 2>&1 || [ "${1%%[0-9]}" = "br" ] ) - -wifi () ( - debug "### wifi $1 ###" - if=$(awk 'gsub(":","") {print $1}' /proc/net/wireless) - $DEBUG wlconf $if $1 -) - -ifup () ( - type=$1 - debug "### ifup $type ###" - - if=$(nvram_get ${type}_ifname) - if [ "${if%%[0-9]}" = "ppp" ]; then - if=$(nvram_get pppoe_ifname) - fi - - if_valid $if || return - - $DEBUG ifconfig $if down - if [ "${if%%[0-9]}" = "br" ]; then - stp=$(nvram_get ${type}_stp) - $DEBUG brctl delbr $if - $DEBUG brctl addbr $if - $DEBUG brctl setfd $if 0 - $DEBUG brctl stp $if ${stp:-0} - if_list=$(nvram_get ${type}_ifnames) - for sif in $if_list; do { - if_valid $sif || continue - $DEBUG ifconfig $sif 0.0.0.0 up - $DEBUG brctl addif $if $sif - } done - fi - - if_mac=$(nvram_get ${type}_hwaddr) - ${if_mac:+$DEBUG ifconfig $if hw ether $if_mac} - - if_proto=$(nvram_get ${type}_proto) - case "$if_proto" in - static) - if_ip=$(nvram_get ${type}_ipaddr) - if_netmask=$(nvram_get ${type}_netmask) - if_gateway=$(nvram_get ${type}_gateway) - - $DEBUG ifconfig $if $if_ip ${if_netmask:+netmask $if_netmask} broadcast + up - ${if_gateway:+$DEBUG route add default gw $if_gateway} - - [ -f /etc/resolv.conf ] && return - - debug "# --- creating /etc/resolv.conf ---" - for dns in $(nvram_get ${type}_dns); do { - echo "nameserver $dns" >> /etc/resolv.conf - } done - ;; - dhcp) - pidfile=/tmp/dhcp-${type}.pid - if [ -f $pidfile ]; then - $DEBUG kill $(cat $pidfile) - fi - ${DEBUG:-eval} "udhcpc -i $if -b -p $pidfile &" - ;; - pppoe) - if_username=$(nvram_get ppp_username) - if_password=$(nvram_get ppp_passwd) - if_redial=$(nvram_get ppp_redialperiod) - if_idletime=$(nvram_get ppp_idletime) - if_mtu=$(nvram_get wan_mtu) - - $DEBUG ifconfig $if 0.0.0.0 up - - $DEBUG /sbin/pppoecd $if -u $if_username -p $if_password \ - -i 0 -I $if_redial -T $if_idletime -t $if_mtu -k - ;; - *) - echo "### WARNING $if: $if_proto is not supported" - ;; - esac -) - -ifdown () ( - type=$1 - debug "### ifdown $type ###" - if=$(nvram_get ${type}_ifname) - if_valid $if || return - kill $(cat /var/run/${if}.pid 2>-) 2>- - $DEBUG ifconfig $if down -) diff --git a/root/etc/init.d/S10boot b/root/etc/init.d/S10boot index c7c9ba2569..11bc31b1bc 100755 --- a/root/etc/init.d/S10boot +++ b/root/etc/init.d/S10boot @@ -8,7 +8,7 @@ mkdir -p /var/run [ "$(nvram get il0macaddr)" = "00:90:4c:5f:00:2a" ] && { # force unique wireless mac nvram set il0macaddr=$(nvram get et0macaddr| - awk -F ":" '{for(x=6,y=2;x;x--){y+=int("0x"$x);$x=sprintf("%02x",y%256);y/=256}gsub(" ",":");print}') + awk '{OFS=FS=":";for(x=6,y=2;x;x--){$x=sprintf("%02x",(y+="0x"$x)%256);y/=256}print}') } insmod et diff --git a/root/etc/preinit b/root/etc/preinit index 25fedc1e68..1054282e8f 100755 --- a/root/etc/preinit +++ b/root/etc/preinit @@ -9,8 +9,7 @@ if /sbin/resetmon ; then pivot_root /jffs /jffs/rom mount none /dev -t devfs mount none /proc -t proc - umount rom/proc - umount rom/dev + umount rom/proc rom/dev else export FAILSAFE=true fi diff --git a/root/sbin/ifdown b/root/sbin/ifdown new file mode 100755 index 0000000000..d1d19b0333 --- /dev/null +++ b/root/sbin/ifdown @@ -0,0 +1,8 @@ +#!/bin/ash +. /etc/functions.sh + type=$1 + debug "### ifdown $type ###" + if=$(nvram_get ${type}_ifname) + if_valid $if || return + kill $(cat /var/run/${if}.pid 2>-) 2>- + $DEBUG ifconfig $if down diff --git a/root/sbin/ifup b/root/sbin/ifup new file mode 100755 index 0000000000..75ce15684c --- /dev/null +++ b/root/sbin/ifup @@ -0,0 +1,71 @@ +#!/bin/ash +. /etc/functions.sh + type=$1 + debug "### ifup $type ###" + + if=$(nvram_get ${type}_ifname) + if [ "${if%%[0-9]}" = "ppp" ]; then + if=$(nvram_get pppoe_ifname) + fi + + if_valid $if || return + + $DEBUG ifconfig $if down + if [ "${if%%[0-9]}" = "br" ]; then + stp=$(nvram_get ${type}_stp) + $DEBUG brctl delbr $if + $DEBUG brctl addbr $if + $DEBUG brctl setfd $if 0 + $DEBUG brctl stp $if ${stp:-0} + for sif in $(nvram_get ${type}_ifnames); do { + if_valid $sif || continue + $DEBUG ifconfig $sif 0.0.0.0 up + $DEBUG brctl addif $if $sif + } done + fi + + mac=$(nvram_get ${type}_hwaddr) + ${mac:+$DEBUG ifconfig $if hw ether $mac} + + if_proto=$(nvram_get ${type}_proto) + case "$if_proto" in + static) + ip=$(nvram_get ${type}_ipaddr) + netmask=$(nvram_get ${type}_netmask) + gateway=$(nvram_get ${type}_gateway) + + $DEBUG ifconfig $if $if_ip ${netmask:+netmask $netmask} broadcast + up + ${gateway:+$DEBUG route add default gw $gateway} + + [ -f /etc/resolv.conf ] && return + + debug "# --- creating /etc/resolv.conf ---" + for dns in $(nvram_get ${type}_dns); do { + echo "nameserver $dns" >> /etc/resolv.conf + } done + ;; + dhcp) + pidfile=/tmp/dhcp-${type}.pid + if [ -f $pidfile ]; then + $DEBUG kill $(cat $pidfile) + fi + ${DEBUG:-eval} "udhcpc -i $if -b -p $pidfile &" + ;; + pppoe) + username=$(nvram_get ppp_username) + password=$(nvram_get ppp_passwd) + redial=$(nvram_get ppp_redialperiod) + idletime=$(nvram_get ppp_idletime) + mtu=$(nvram_get wan_mtu) + + $DEBUG ifconfig $if 0.0.0.0 up + + $DEBUG /sbin/pppoecd $if -u $username -p $password \ + -i 0 -I $redial -T $idletime -t $mtu -k + ;; + none) + ;; + *) + echo "### WARNING $if: $if_proto is not supported" + ;; + esac diff --git a/root/sbin/wifi b/root/sbin/wifi new file mode 100755 index 0000000000..b63912ddf8 --- /dev/null +++ b/root/sbin/wifi @@ -0,0 +1,4 @@ +#!/bin/ash + debug "### wifi $1 ###" + if=$(awk 'sub(":","") {print $1}' /proc/net/wireless) + $DEBUG wlconf $if $1