summaryrefslogtreecommitdiffstats
path: root/package
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2005-11-07 01:12:51 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2005-11-07 01:12:51 +0000
commit0bb68e81eca839c8eed0c629b403ac558ea662e6 (patch)
tree302a83f06c200757c896bbabe23db4af10445042 /package
parent98552764dc03cbcb2ec93d99984643202902b45e (diff)
add hotplug stuff to trunk/
git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@2364 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
-rw-r--r--package/base-files/Makefile13
-rwxr-xr-xpackage/base-files/default/etc/functions.sh15
-rw-r--r--[-rwxr-xr-x]package/base-files/default/etc/hotplug.d/net/01-wds (renamed from package/base-files/files/hotplug)3
-rw-r--r--package/base-files/default/etc/hotplug.d/usb/01-mount49
-rwxr-xr-xpackage/base-files/default/sbin/hotplug11
-rwxr-xr-xpackage/base-files/default/sbin/ifdown12
-rwxr-xr-xpackage/base-files/default/usr/share/udhcpc/default.script73
-rw-r--r--package/base-files/ipkg/hotplug.control4
-rw-r--r--package/busybox/Makefile1
-rw-r--r--package/ntpclient/Makefile6
-rw-r--r--package/ntpclient/files/ntpclient.init11
-rw-r--r--package/ppp/Makefile4
-rwxr-xr-xpackage/ppp/files/etc/ppp/ip-down2
-rwxr-xr-xpackage/ppp/files/etc/ppp/ip-up2
-rw-r--r--package/ppp/files/ifup.pppoa1
-rw-r--r--package/ppp/files/ifup.pppoe1
-rw-r--r--package/pptp/Makefile2
-rw-r--r--package/pptp/files/ifup.pptp8
18 files changed, 150 insertions, 68 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 &