diff options
| author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2005-11-07 01:12:51 +0000 | 
|---|---|---|
| committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2005-11-07 01:12:51 +0000 | 
| commit | 0bb68e81eca839c8eed0c629b403ac558ea662e6 (patch) | |
| tree | 302a83f06c200757c896bbabe23db4af10445042 | |
| parent | 98552764dc03cbcb2ec93d99984643202902b45e (diff) | |
add hotplug stuff to trunk/
git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@2364 3c298f89-4303-0410-b956-a3cf2f4a3e73
25 files changed, 150 insertions, 75 deletions
| diff --git a/package/base-files/Makefile b/package/base-files/Makefile index 5f300f284..adf2ffbb5 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -3,7 +3,7 @@  include $(TOPDIR)/rules.mk  PKG_NAME:=base-files -PKG_RELEASE:=4 +PKG_RELEASE:=6  PKG_BUILD_DIR:=$(BUILD_DIR)/base-files  REV:=${shell svn info | grep Revision | cut -d ' ' -f 2} @@ -16,9 +16,6 @@ include $(TOPDIR)/package/rules.mk  IDIR_BASE:=$(PKG_BUILD_DIR)/base-files  IPKG_BASE:=$(PACKAGE_DIR)/$(PKG_NAME)_$(PKG_RELEASE)_$(ARCH).ipk -IDIR_HOTPLUG:=$(PKG_BUILD_DIR)/hotplug -IPKG_HOTPLUG:=$(PACKAGE_DIR)/hotplug_$(PKG_RELEASE)_$(ARCH).ipk -  UCLIBC_VERSION:=${shell cat $(STAGING_DIR)/uclibc_version}  IDIR_UCLIBC:=$(PKG_BUILD_DIR)/uclibc  IPKG_UCLIBC:=$(PACKAGE_DIR)/uclibc_$(UCLIBC_VERSION)-$(PKG_RELEASE)_$(ARCH).ipk @@ -27,7 +24,7 @@ LIBGCC_VERSION:=${shell cat $(STAGING_DIR)/gcc_version}  IDIR_LIBGCC:=$(PKG_BUILD_DIR)/libgcc  IPKG_LIBGCC:=$(PACKAGE_DIR)/libgcc_$(LIBGCC_VERSION)-$(PKG_RELEASE)_$(ARCH).ipk -PACKAGES:=$(IPKG_BASE) $(IPKG_UCLIBC) $(IPKG_LIBGCC) $(IPKG_HOTPLUG) +PACKAGES:=$(IPKG_BASE) $(IPKG_UCLIBC) $(IPKG_LIBGCC)  $(PKG_BUILD_DIR)/.prepared:  	mkdir -p $(PKG_BUILD_DIR) $(PACKAGE_DIR) @@ -74,12 +71,6 @@ $(IPKG_LIBGCC):  	-$(STRIP) $(IDIR_LIBGCC)/lib/*  	$(IPKG_BUILD) $(IDIR_LIBGCC) $(PACKAGE_DIR) -$(IPKG_HOTPLUG): -	$(SCRIPT_DIR)/make-ipkg-dir.sh $(IDIR_HOTPLUG) ipkg/hotplug.control $(PKG_RELEASE) $(ARCH) -	mkdir -p $(IDIR_HOTPLUG)/sbin -	install -m0755 files/hotplug $(IDIR_HOTPLUG)/sbin -	$(IPKG_BUILD) $(IDIR_HOTPLUG) $(PACKAGE_DIR) -	  package-clean:  	rm -f $(PACKAGES) diff --git a/package/base-files/default/etc/functions.sh b/package/base-files/default/etc/functions.sh index bc9767f49..9cfc80235 100755 --- a/package/base-files/default/etc/functions.sh +++ b/package/base-files/default/etc/functions.sh @@ -41,12 +41,14 @@ do_ifup() {  		$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 ${2}_dns); do -			echo "nameserver $dns" >> /etc/resolv.conf -		done +		[ -f /etc/resolv.conf ] || { +			debug "# --- creating /etc/resolv.conf ---" +			for dns in $(nvram get ${2}_dns); do +				echo "nameserver $dns" >> /etc/resolv.conf +			done +		} +		 +		env -i ACTION="ifup" INTERFACE="${2}" PROTO=static /sbin/hotplug "iface" &  	;;  	dhcp)  		DHCP_IP=$(nvram get ${2}_ipaddr) @@ -64,6 +66,7 @@ do_ifup() {  			sleep 1  			kill -9 $oldpid  		} +		# hotplug events are handled by /usr/share/udhcpc/default.script  	;;  	none|"")  	;; diff --git a/package/base-files/files/hotplug b/package/base-files/default/etc/hotplug.d/net/01-wds index 74134e848..38bd69667 100755..100644 --- a/package/base-files/files/hotplug +++ b/package/base-files/default/etc/hotplug.d/net/01-wds @@ -1,6 +1,5 @@ -#!/bin/ash -# $Id$  [ "${INTERFACE%%[0-9]*}" = "wds" ] && {   	ifconfig $INTERFACE 0.0.0.0 up  	/usr/sbin/brctl addif br0 $INTERFACE  } +		 diff --git a/package/base-files/default/etc/hotplug.d/usb/01-mount b/package/base-files/default/etc/hotplug.d/usb/01-mount new file mode 100644 index 000000000..c28ada204 --- /dev/null +++ b/package/base-files/default/etc/hotplug.d/usb/01-mount @@ -0,0 +1,49 @@ +mount_storage() { +	cd /dev/discs +	for dev in disc*; do +		[ -f /tmp/.${dev}_id ] || { +			echo ${INTERFACE}${PRODUCT} > /tmp/.${dev}_id +			mount | grep /mnt/${dev} || ( +				[ -d /mnt/. ] || { +					mkdir -p /tmp/mnt +					ln -s /tmp/mnt / +				} +				cd $dev +				for part in part*; do +					path=/mnt/${dev}_${part##*part} +					mkdir -p ${path} +					mount ${part} ${path} +				done +			) +		} +	done +} + +umount_storage() { +	for tmp in /tmp/.*_id; do +		id=$(cat $tmp 2>&-) +		[ "${INTERFACE}${PRODUCT}" = "$id" ] && { +			rm -f $tmp +			disc=${tmp##*disc} +			disc=${disc%%_id} +			for disc in /mnt/disc${disc}*; do +				umount -f $disc || umount -l $disc +			done +		} +	done +} + +[ -f /proc/bus/usb/devices ] || mount -t usbfs none /proc/bus/usb + +case "$ACTION" in +	add) +		case "${INTERFACE%%/*}" in +			8) mount_storage ;; +		esac +	;; +	remove) +		case "${INTERFACE%%/*}" in +			8) umount_storage ;; +		esac +	;; +esac diff --git a/package/base-files/default/sbin/hotplug b/package/base-files/default/sbin/hotplug new file mode 100755 index 000000000..57ee969cf --- /dev/null +++ b/package/base-files/default/sbin/hotplug @@ -0,0 +1,11 @@ +#!/bin/sh +PATH=/bin:/sbin:/usr/bin:/usr/sbin +LOGNAME=root +USER=root +export PATH LOGNAME USER + +[ \! -z "$1" -a -d /etc/hotplug.d/$1 ] && { +	for script in $(ls /etc/hotplug.d/$1/* 2>&-); do ( +		[ -f $script ] && . $script +	); done +} diff --git a/package/base-files/default/sbin/ifdown b/package/base-files/default/sbin/ifdown index 147136949..f2f8bbfe8 100755 --- a/package/base-files/default/sbin/ifdown +++ b/package/base-files/default/sbin/ifdown @@ -1,13 +1,19 @@ -#!/bin/ash +#!/bin/sh  [ $# = 0 ] && { echo "  $0 <group>"; exit; }  . /etc/functions.sh -. /etc/network.overrides +. /etc/network.overrides    [ "$FAILSAFE" != "true" -a -e /etc/config/network ] && . /etc/config/network +  type=$1  debug "### ifdown $type ###" +  if=$(nvram get ${type}_ifname)  proto=$(nvram get ${type}_proto)  if_valid $if && $DEBUG ifconfig $if down  kill $(cat /var/run/${if}.pid 2>&-) 2>&- -[ "$if" = "ppp0" ] && killall pppd  killall ifup.$proto >&- 2>&- +case "$proto" in +	pptp|pppoe) killall pppd >&- 2>&- ;; +	static) env -i ACTION="ifdown" INTERFACE="$if" PROTO=static /sbin/hotplug "iface" ;; +esac + diff --git a/package/base-files/default/usr/share/udhcpc/default.script b/package/base-files/default/usr/share/udhcpc/default.script index 0c08985e7..9fac6286c 100755 --- a/package/base-files/default/usr/share/udhcpc/default.script +++ b/package/base-files/default/usr/share/udhcpc/default.script @@ -1,42 +1,51 @@  #!/bin/sh -# udhcpc script edited by Tim Riker <Tim@Rikers.org> -# (slightly modified for OpenWrt) -  [ -z "$1" ] && echo "Error: should be run by udhcpc" && exit 1  RESOLV_CONF="/tmp/resolv.conf" -case "$1" in -        deconfig) -                ifconfig $interface 0.0.0.0 -                ;; - -        renew|bound) -                ifconfig $interface $ip \ -                netmask ${subnet:-255.255.255.0} \ -                broadcast ${broadcast:-+} - -                if [ -n "$router" ] ; then -                        echo "deleting routers" -                        while route del default gw 0.0.0.0 dev $interface ; do -                                : -                        done - -                        for i in $router ; do -                                route add default gw $i dev $interface -                        done -                fi - -                echo -n > $RESOLV_CONF -                ${domain:+echo search $domain} >> $RESOLV_CONF -                for i in $dns ; do -                        echo adding dns $i -                        echo nameserver $i >> $RESOLV_CONF +hotplug_event() { +	nvram show 2>&- | grep _proto=dhcp | { +		while :; do +			read FOO +			[ -z "$FOO" ] && break +			FOO="${FOO%%_*}" +			[ "$(nvram get ${FOO}_ifname)" = "${interface}" ] || continue +			env -i ACTION="$1" INTERFACE="${FOO}" PROTO=dhcp /sbin/hotplug iface +		done +	} +} +case "$1" in +	deconfig) +		ifconfig $interface 0.0.0.0 +		hotplug_event ifdown +	;; +	renew|bound) +		ifconfig $interface $ip \ +		netmask ${subnet:-255.255.255.0} \ +		broadcast ${broadcast:-+} + +		if [ -n "$router" ] ; then +			echo "deleting routers" +			while route del default gw 0.0.0.0 dev $interface ; do :; done +					 +			for i in $router ; do +				route add default gw $i dev $interface +			done +		fi + +		echo -n > $RESOLV_CONF +		${domain:+echo search $domain} >> $RESOLV_CONF +		for i in $dns ; do +			echo adding dns $i +			echo nameserver $i >> $RESOLV_CONF +		done +		 +		hotplug_event ifup +		  		# user rules  		[ -f /etc/udhcpc.user ] && . /etc/udhcpc.user - -                done -                ;; +	;;  esac +  exit 0 diff --git a/package/base-files/ipkg/hotplug.control b/package/base-files/ipkg/hotplug.control deleted file mode 100644 index 5266e85d6..000000000 --- a/package/base-files/ipkg/hotplug.control +++ /dev/null @@ -1,4 +0,0 @@ -Package: hotplug -Priority: optional -Section: net -Description: Hotplug script for WDS diff --git a/package/busybox/Makefile b/package/busybox/Makefile index 1e1968dcb..37e499712 100644 --- a/package/busybox/Makefile +++ b/package/busybox/Makefile @@ -39,5 +39,4 @@ $(IPKG_BUSYBOX):  	$(MAKE) CC=$(TARGET_CC) CROSS="$(TARGET_CROSS)" PREFIX="$(IDIR_BUSYBOX)" \  		EXTRA_CFLAGS="$(TARGET_CFLAGS)" -C $(PKG_BUILD_DIR) install  	$(STRIP) $(IDIR_BUSYBOX)/bin/busybox -	-chmod a+x $(IDIR_BUSYBOX)/usr/share/udhcpc/default.script  	$(IPKG_BUILD) $(IDIR_BUSYBOX) $(PACKAGE_DIR) diff --git a/package/ntpclient/Makefile b/package/ntpclient/Makefile index 679e5fca5..31fe55194 100644 --- a/package/ntpclient/Makefile +++ b/package/ntpclient/Makefile @@ -4,7 +4,7 @@ include $(TOPDIR)/rules.mk  PKG_NAME:=ntpclient  PKG_VERSION:=2003_194 -PKG_RELEASE:=1 +PKG_RELEASE:=2  PKG_MD5SUM:=94e84d5c6023c5e1f3890b28d0a08c92  PKG_SOURCE_URL:=http://doolittle.faludi.com/ntpclient @@ -26,8 +26,8 @@ $(PKG_BUILD_DIR)/.built:  	touch $@  $(IPKG_NTPCLIENT): -	install -d -m0755 $(IDIR_NTPCLIENT)/etc/init.d -	install -m0755 ./files/ntpclient.init $(IDIR_NTPCLIENT)/etc/init.d/S60ntpclient +	install -d -m0755 $(IDIR_NTPCLIENT)/etc/hotplug.d/iface +	install -m0755 ./files/ntpclient.init $(IDIR_NTPCLIENT)/etc/hotplug.d/iface/10-ntpclient  	install -d -m0755 $(IDIR_NTPCLIENT)/usr/sbin  	install -m0755 $(PKG_BUILD_DIR)/ntpclient $(IDIR_NTPCLIENT)/usr/sbin/  	$(RSTRIP) $(IDIR_NTPCLIENT) diff --git a/package/ntpclient/files/ntpclient.init b/package/ntpclient/files/ntpclient.init index 923022bfc..2ad4beb77 100644 --- a/package/ntpclient/files/ntpclient.init +++ b/package/ntpclient/files/ntpclient.init @@ -1,2 +1,11 @@  #!/bin/sh -/usr/sbin/ntpclient -c 1 -s -h pool.ntp.org & +server=$(nvram get ntp_server) +case "$ACTION" in +	ifup) +		ps x | grep '[n]tpclient' >&- || { +			route -n 2>&- | grep '0.0.0.0' >&- && /usr/sbin/ntpclient -c 1 -s -h ${server:-pool.ntp.org} & +		} +		;; +	ifdown) +		route -n 2>&- | grep '0.0.0.0' >&- || killall ntpclient 2>&- >&- ;; +esac diff --git a/package/ppp/Makefile b/package/ppp/Makefile index 1b20c4e7c..eec2bd846 100644 --- a/package/ppp/Makefile +++ b/package/ppp/Makefile @@ -4,7 +4,7 @@ include $(TOPDIR)/rules.mk  PKG_NAME:=ppp  PKG_VERSION:=2.4.3 -PKG_RELEASE:=6 +PKG_RELEASE:=7  PKG_MD5SUM:=848f6c3cafeb6074ffeb293c3af79b7c  PKG_SOURCE_URL:=ftp://ftp.samba.org/pub/ppp/ @@ -82,6 +82,8 @@ $(IPKG_PPP):  	ln -sf /tmp/resolv.conf $(IDIR_PPP)/etc/ppp/resolv.conf  	install -m0600 ./files/etc/ppp/chap-secrets $(IDIR_PPP)/etc/ppp/  	install -m0644 ./files/etc/ppp/options $(IDIR_PPP)/etc/ppp/ +	install -m0755 ./files/etc/ppp/ip-up $(IDIR_PPP)/etc/ppp/ +	install -m0755 ./files/etc/ppp/ip-down $(IDIR_PPP)/etc/ppp/  	install -d -m0755 $(IDIR_PPP)/etc/ppp/peers  	install -m0644 ./files/etc/ppp/peers/sample $(IDIR_PPP)/etc/ppp/peers/  	install -d -m0755 $(IDIR_PPP)/usr/sbin diff --git a/package/ppp/files/etc/ppp/ip-down b/package/ppp/files/etc/ppp/ip-down new file mode 100755 index 000000000..044759fbf --- /dev/null +++ b/package/ppp/files/etc/ppp/ip-down @@ -0,0 +1,2 @@ +#!/bin/sh +[ -z "$6" ] || env -i ACTION="ifdown" INTERFACE="$6" PROTO=ppp /sbin/hotplug "iface" diff --git a/package/ppp/files/etc/ppp/ip-up b/package/ppp/files/etc/ppp/ip-up new file mode 100755 index 000000000..c67a3d03c --- /dev/null +++ b/package/ppp/files/etc/ppp/ip-up @@ -0,0 +1,2 @@ +#!/bin/sh +[ -z "$6" ] || env -i ACTION="ifup" INTERFACE="$6" PROTO=ppp /sbin/hotplug "iface" diff --git a/package/ppp/files/ifup.pppoa b/package/ppp/files/ifup.pppoa index 51b0fe334..892836636 100644 --- a/package/ppp/files/ifup.pppoa +++ b/package/ppp/files/ifup.pppoa @@ -31,6 +31,7 @@ while :; do    	usepeerdns \    	defaultroute \    	linkname $type \ +  	ipparam $type \    	user "$USERNAME" \    	password "$PASSWORD" \    	mtu $MTU mru $MTU \ diff --git a/package/ppp/files/ifup.pppoe b/package/ppp/files/ifup.pppoe index 9a5d0a349..da9a441ad 100644 --- a/package/ppp/files/ifup.pppoe +++ b/package/ppp/files/ifup.pppoe @@ -32,6 +32,7 @@ while :; do    	usepeerdns \    	defaultroute \    	linkname $type \ +  	ipparam $type \    	user "$USERNAME" \    	password "$PASSWORD" \    	mtu $MTU mru $MTU \ diff --git a/package/pptp/Makefile b/package/pptp/Makefile index 3334f2311..870341c87 100644 --- a/package/pptp/Makefile +++ b/package/pptp/Makefile @@ -4,7 +4,7 @@ include $(TOPDIR)/rules.mk  PKG_NAME:=pptp  PKG_VERSION:=1.6.0 -PKG_RELEASE:=2 +PKG_RELEASE:=3  PKG_MD5SUM:=9a706327fb9827541d7c86d48ceb9631  PKG_SOURCE_URL:=@SF/pptpclient diff --git a/package/pptp/files/ifup.pptp b/package/pptp/files/ifup.pptp index 15178fe30..acaeabd97 100644 --- a/package/pptp/files/ifup.pptp +++ b/package/pptp/files/ifup.pptp @@ -22,7 +22,7 @@ while :; do  	IDLETIME=$(nvram get ppp_idletime)  	IDLETIME=${IDLETIME:+lcp-echo-failure $IDLETIME}  	MTU=$(nvram get ppp_mtu) -	MTU=${MTU:+ mtu $MTU mru $MTU} +	MTU=${MTU:-1452}  	do_ifup $PPTP_PROTO $type @@ -38,10 +38,12 @@ while :; do  		usepeerdns \  		defaultroute \  		replacedefaultroute \ -		linkname $type \ +		linkname "$type" \ +		ipparam "$type" \  		user "$USERNAME" \  		password "$PASSWORD" \ -		$MTU \ +		mtu $MTU \ +		mru $MTU \  		$IDLETIME \  		$REDIAL  done & diff --git a/target/linux/imagebuilder/lists/default-annex-a.ar7-2.4 b/target/linux/imagebuilder/lists/default-annex-a.ar7-2.4 index ac18fe6af..ea359c798 100644 --- a/target/linux/imagebuilder/lists/default-annex-a.ar7-2.4 +++ b/target/linux/imagebuilder/lists/default-annex-a.ar7-2.4 @@ -5,7 +5,6 @@ bridge  busybox  dnsmasq  dropbear -hotplug  iptables  kmod-atm  kmod-cpmac diff --git a/target/linux/imagebuilder/lists/default-annex-b.ar7-2.4 b/target/linux/imagebuilder/lists/default-annex-b.ar7-2.4 index 4de1e1aba..4e89ff395 100644 --- a/target/linux/imagebuilder/lists/default-annex-b.ar7-2.4 +++ b/target/linux/imagebuilder/lists/default-annex-b.ar7-2.4 @@ -5,7 +5,6 @@ bridge  busybox  dnsmasq  dropbear -hotplug  iptables  kmod-atm  kmod-cpmac diff --git a/target/linux/imagebuilder/lists/micro.ar7-2.4 b/target/linux/imagebuilder/lists/micro.ar7-2.4 index b79e0aba1..802b08dd1 100644 --- a/target/linux/imagebuilder/lists/micro.ar7-2.4 +++ b/target/linux/imagebuilder/lists/micro.ar7-2.4 @@ -5,7 +5,6 @@ busybox  dnsmasq  dropbear  iptables -hotplug  kmod-cpmac  libgcc  mtd diff --git a/target/linux/imagebuilder/lists/micro.brcm-2.4 b/target/linux/imagebuilder/lists/micro.brcm-2.4 index d47422d40..44ba92a27 100644 --- a/target/linux/imagebuilder/lists/micro.brcm-2.4 +++ b/target/linux/imagebuilder/lists/micro.brcm-2.4 @@ -5,7 +5,6 @@ busybox  dnsmasq  dropbear  iptables -hotplug  kmod-brcm-et  kmod-brcm-wl  kmod-diag diff --git a/target/linux/imagebuilder/lists/micro.x86-2.4 b/target/linux/imagebuilder/lists/micro.x86-2.4 index 2ff92cac7..956a07b13 100644 --- a/target/linux/imagebuilder/lists/micro.x86-2.4 +++ b/target/linux/imagebuilder/lists/micro.x86-2.4 @@ -5,7 +5,6 @@ busybox  dnsmasq  dropbear  iptables -hotplug  kmod-net-natsemi  libgcc  mtd diff --git a/target/linux/imagebuilder/lists/pptp.brcm-2.4 b/target/linux/imagebuilder/lists/pptp.brcm-2.4 index 79a6b9f7e..595bea9bc 100644 --- a/target/linux/imagebuilder/lists/pptp.brcm-2.4 +++ b/target/linux/imagebuilder/lists/pptp.brcm-2.4 @@ -5,7 +5,6 @@ busybox  dnsmasq  dropbear  iptables -hotplug  kmod-brcm-et  kmod-brcm-wl  kmod-diag diff --git a/target/linux/imagebuilder/lists/pptp.x86-2.4 b/target/linux/imagebuilder/lists/pptp.x86-2.4 index 1fa77b21f..cb34ceab9 100644 --- a/target/linux/imagebuilder/lists/pptp.x86-2.4 +++ b/target/linux/imagebuilder/lists/pptp.x86-2.4 @@ -5,7 +5,6 @@ busybox  dnsmasq  dropbear  iptables -hotplug  kmod-net-natsemi  kmod-ppp  kmod-gre | 
