diff options
| -rw-r--r-- | package/ppp/files/ifup.pppoe | 52 | ||||
| -rwxr-xr-x | target/default/target_skeleton/sbin/ifdown | 13 | ||||
| -rwxr-xr-x | target/default/target_skeleton/sbin/ifup | 90 | 
3 files changed, 81 insertions, 74 deletions
| diff --git a/package/ppp/files/ifup.pppoe b/package/ppp/files/ifup.pppoe index caf06f76c..6bac6a6d1 100644 --- a/package/ppp/files/ifup.pppoe +++ b/package/ppp/files/ifup.pppoe @@ -1,29 +1,39 @@  #!/bin/sh +[ $# = 0 ] && { echo "  $0 <group>"; exit; }  . /etc/functions.sh -IF_NAME=$1 +type=$1 -PROTO=$(nvram get ${IF_NAME}_proto) -[ "$PROTO" = "pppoe" ] || exit 0 +[ "$(nvram get ${type}_proto)" = "pppoe" ] || { +	echo "$0: ${type}_proto isn't pppoe" +	exit +}  for module in slhc ppp_generic pppox pppoe; do -	/sbin/insmod $module 2>/dev/null >/dev/null +	/sbin/insmod $module 2>&- >&-  done -( -	while true; do -		IFNAME=$(nvram get pppoe_ifname) -		USERNAME=$(nvram get ppp_username) -		PASSWORD=$(nvram get ppp_passwd) -		REDIAL=$(nvram get ppp_redialperiod) -		REDIAL=${REDIAL:+lcp-echo-interval $REDIAL} -		IDLETIME=$(nvram get ppp_idletime) -		IDLETIME=${IDLETIME:+lcp-echo-failure $IDLETIME} -		MTUV=$(nvram get ppp_mtu) -		MTU=${MTUV:+mtu $MTUV} -		MRU=${MTUV:+mru $MTUV} +while :; do +	IFNAME=$(nvram get pppoe_ifname) +	USERNAME=$(nvram get ppp_username) +	PASSWORD=$(nvram get ppp_passwd) +	REDIAL=$(nvram get ppp_redialperiod) +	REDIAL=${REDIAL:+lcp-echo-interval $REDIAL} +	IDLETIME=$(nvram get ppp_idletime) +	IDLETIME=${IDLETIME:+lcp-echo-failure $IDLETIME} +	MTU=$(nvram get ppp_mtu) +	MTU=${MTU:+ mtu $MTU mru $MTU} -		ifconfig $IFNAME up -		echo -e "plugin rp-pppoe.so\nconnect /bin/true\nusepeerdns\ndefaultroute\nuser \"$USERNAME\"\npassword \"$PASSWORD\"\n$MTU\n$MRU\n$IDLETIME\n$REDIAL" > /tmp/.pppoe-data -		/usr/sbin/pppd nodetach file /tmp/.pppoe-data $IFNAME -	done -) & +	ifconfig $IFNAME up +	/usr/sbin/pppd nodetach \ +		plugin rp-pppoe.so \ +		connect /bin/true \ +		usepeerdns \ +		defaultroute \ +		linkname $type \ +		user "$USERNAME" \ +		password "$PASSWORD" \ +		$MTU \ +		$IDLETIME \ +		$REDIAL \ +		$IFNAME +done & diff --git a/target/default/target_skeleton/sbin/ifdown b/target/default/target_skeleton/sbin/ifdown index e59e05739..6b255cc1b 100755 --- a/target/default/target_skeleton/sbin/ifdown +++ b/target/default/target_skeleton/sbin/ifdown @@ -1,8 +1,9 @@  #!/bin/ash +[ $# = 0 ] && { echo "  $0 <group>"; exit; }  . /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 +type=$1 +debug "### ifdown $type ###" +if=$(nvram get ${type}_ifname) +if_valid $if || exit  +$DEBUG ifconfig $if down +kill $(cat /var/run/${if}.pid 2>&-) 2>&- diff --git a/target/default/target_skeleton/sbin/ifup b/target/default/target_skeleton/sbin/ifup index 3748d76ac..95bd2107d 100755 --- a/target/default/target_skeleton/sbin/ifup +++ b/target/default/target_skeleton/sbin/ifup @@ -1,63 +1,59 @@  #!/bin/ash +[ $# = 0 ] && { echo "  $0 <group>"; exit; }  . /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 +[ "${if%%[0-9]}" = "ppp" ] && if=$(nvram get pppoe_ifname) +if_valid $if || exit   mac=$(nvram get ${type}_hwaddr)  $DEBUG ifconfig $if down 2>&- +  if [ "${if%%[0-9]}" = "br" ]; then -  stp=$(nvram get ${type}_stp) -  $DEBUG brctl delbr $if 2>&- -  $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 -    ${mac:+$DEBUG ifconfig $sif down hw ether $mac} -    $DEBUG ifconfig $sif 0.0.0.0 up -    $DEBUG brctl addif $if $sif -  } done +	stp=$(nvram get ${type}_stp) +	$DEBUG brctl delbr $if 2>&- +	$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 +		${mac:+$DEBUG ifconfig $sif down hw ether $mac} +		$DEBUG ifconfig $sif 0.0.0.0 up +		$DEBUG brctl addif $if $sif +	done  else -  ${mac:+$DEBUG ifconfig $if down hw ether $mac} +	${mac:+$DEBUG ifconfig $if down hw ether $mac}  fi -  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 $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) -    ip=$(nvram get ${type}_ipaddr) -    pidfile=/tmp/dhcp-${type}.pid -    if [ -f $pidfile ]; then -      $DEBUG kill $(cat $pidfile) -    fi -    ${DEBUG:-eval} "udhcpc -R -i $if ${ip:+-r $ip} -b -p $pidfile &"  -  ;; -  none|"") -  ;; -  *) -    [ -x "/sbin/ifup.${if_proto}" ] && { $DEBUG /sbin/ifup.${if_proto} $*; exit; } -    echo "### ifup $type: ignored ${type}_proto=\"$if_proto\" (not supported)" -  ;; +	static) +		ip=$(nvram get ${type}_ipaddr) +		netmask=$(nvram get ${type}_netmask) +		gateway=$(nvram get ${type}_gateway) + +		$DEBUG ifconfig $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) +		ip=$(nvram get ${type}_ipaddr) +		[ -f $pidfile ] && $DEBUG kill $(cat $pidfile) +		${DEBUG:-eval} "udhcpc -R -i $if ${ip:+-r $ip} -b -p $pidfile &"  +	;; +	none|"") +	;; +	*) +		[ -x "/sbin/ifup.${if_proto}" ] && { $DEBUG /sbin/ifup.${if_proto} $*; exit; } +		echo "### ifup $type: ignored ${type}_proto=\"$if_proto\" (not supported)" +	;;  esac | 
