Hi everyone,
I tried, with the diff below, to make the naswatch (which slows down booting
by 30+ seconds!) superfluous, as nas already runs in foreground anyway.
Somehow though, the message "Starting nas daemon" was never issued again
afterwards. Any idea?
Index: files/wl-broadcom
===================================================================
--- files/wl-broadcom (revision 3350)
+++ files/wl-broadcom (working copy)
@@ -8,7 +8,6 @@
# Christian Fischer <[EMAIL PROTECTED]>
#
-
init_debug() {
err=$(eval "$*" 2>&1) && return 0
mstate 1
@@ -99,17 +98,24 @@
then
cat > ${postup}/postup <<!
mprint -n "Starting nas daemon"
-/usr/sbin/nas -P /var/run/nas.lan.pid -l $BRIDGE_IFACE -H 34954 -i $IFACE \
-$nas_auth -m $auth -k $IF_WIRELESS_WPA_KEY -s $IF_WIRELESS_SSID -w $wsec \
--g $gtk_rekey &
+(while sleep 1; do
+ /usr/sbin/nas -P /var/run/nas.lan.pid -l $BRIDGE_IFACE -H 34954 \
+ -i $IFACE $nas_auth -m $auth -k $IF_WIRELESS_WPA_KEY \
+ -s $IF_WIRELESS_SSID -w $wsec -g $gtk_rekey
+done) &
+echo \$! >/var/run/nas.watch.pid
mstate 0
!
else
# routed
mprint -n "Starting nas daemon"
- /usr/sbin/nas -P /var/run/nas.lan.pid -H 34954 -i $IFACE
$nas_auth \
- -m $auth -k "${IF_WIRELESS_WPA_KEY:-""}" -s "$IF_WIRELESS_SSID"
\
- -w $wsec -g $gtk_rekey &
+ (while sleep 1; do
+ /usr/sbin/nas -P /var/run/nas.lan.pid -H 34954 \
+ -i $IFACE $nas_auth -m $auth \
+ -k "$IF_WIRELESS_WPA_KEY" -s "$IF_WIRELESS_SSID" \
+ -w $wsec -g $gtk_rekey
+ done) &
+ echo $! >/var/run/nas.watch.pid
mstate 0
fi
}
@@ -124,12 +130,20 @@
if bridged_mode; then
cat > ${postup}/postup <<!
mprint -n "Starting nas daemon"
-/usr/sbin/nas -P /var/run/nas.lan.pid -l $BRIDGE_IFACE -H 34954 -i $IFACE &
+(while sleep 1; do
+ /usr/sbin/nas -P /var/run/nas.lan.pid -l $BRIDGE_IFACE -H 34954 \
+ -i $IFACE
+done) &
+echo \$! >/var/run/nas.watch.pid
mstate 0
!
else
mprint -n "Starting nas daemon"
- /usr/sbin/nas -P /var/run/nas.lan.pid -H 34954
-i $IFACE &
+ (while sleep 1; do
+ /usr/sbin/nas -P /var/run/nas.lan.pid \
+ -H 34954 -i $IFACE
+ done) &
+ echo $! >/var/run/nas.watch.pid
mstate 0
fi
return 0
@@ -156,18 +170,25 @@
then
cat > ${postup}/postup <<!
mprint -n "Starting nas daemon"
-/usr/sbin/nas -P /var/run/nas.lan.pid $BRIDGE_IFACE -H 34954 -i $IFACE -A \
--m $auth -r "${IF_WIRELESS_RADIUS_KEY:-""}" -h $IF_WIRELESS_RADIUS_IPADDR \
--p ${IF_WIRELESS_RADIUS_PORT:-1812} -t 36000 -s "$IF_WIRELESS_SSID" \
--w $crypto_num -g $gtk_rekey &
+(while sleep 1; do
+ /usr/sbin/nas -P /var/run/nas.lan.pid $BRIDGE_IFACE -H 34954 \
+ -i $IFACE -A -m $auth -r "$IF_WIRELESS_RADIUS_KEY" \
+ -h $IF_WIRELESS_RADIUS_IPADDR -p ${IF_WIRELESS_RADIUS_PORT:-1812} \
+ -t 36000 -s "$IF_WIRELESS_SSID" -w $crypto_num -g $gtk_rekey
+done) &
+echo \$! >/var/run/nas.watch.pid
mstate 0
!
else
mprint -n "Starting nas daemon"
- /usr/sbin/nas -P /var/run/nas.lan.pid -H 34954 -i $IFACE -A -m
$auth \
- -r "${IF_WIRELESS_RADIUS_KEY:-""}" -h
$IF_WIRELESS_RADIUS_IPADDR \
- -p ${IF_WIRELESS_RADIUS_PORT:-1812} -t 36000 -s
"$IF_WIRELESS_SSID" \
- -w $crypto_num -g $gtk_rekey &
+ (while sleep 1; do
+ /usr/sbin/nas -P /var/run/nas.lan.pid -H 34954 \
+ -i $IFACE -A -m $auth -r "$IF_WIRELESS_RADIUS_KEY" \
+ -h $IF_WIRELESS_RADIUS_IPADDR \
+ -p ${IF_WIRELESS_RADIUS_PORT:-1812} -t 36000 \
+ -s "$IF_WIRELESS_SSID" -w $crypto_num -g $gtk_rekey
+ done) &
+ echo $! >/var/run/nas.watch.pid
mstate 0
fi
}
@@ -194,7 +215,7 @@
then
mprint -n "Starting nas daemon"
mstate 1
- merr"Can not start nas daemon, bridge $BRIDGE_IFACE
isn't up"
+ merr "Can not start nas daemon, bridge $BRIDGE_IFACE
isn't up"
exit 1
fi
fi
@@ -231,8 +252,9 @@
# kill old nas process
- pid="$(cat /var/run/nas.lan.pid 2>&-)"
- [ -n "$pid" -a -d "/proc/$pid" ] && kill $pid
+ pid=$(</var/run/nas.watch.pid)
+ [[ -n $pid && -d /proc/$pid ]] && kill -9 $pid
+ killall nas
### init driver ###
@@ -273,7 +295,7 @@
mstate 1
merr "Unknown operation mode $IF_WIRELESS_MODE"
return 1
- ;;
+ ;;
esac
case $IF_WIRELESS_ENCRYPTION in
@@ -360,9 +382,10 @@
init_debug wl radio off
init_debug wl down
- pid="$(cat /var/run/nas.lan.pid 2>&-)"
- [ -n "$pid" -a -d "/proc/$pid" ] && kill $pid
-
+ pid=$(</var/run/nas.watch.pid)
+ [[ -n $pid && -d /proc/$pid ]] && kill -9 $pid
+ killall nas
+
mstate 0
return
}
Index: files/naswatch.init
===================================================================
--- files/naswatch.init (revision 3350)
+++ files/naswatch.init (working copy)
@@ -1,48 +0,0 @@
-#!/bin/sh
-# $FreeWRT$
-#-
-# This file is part of the FreeWRT project. FreeWRT is copyrighted
-# material, please see the LICENCE file in the top-level directory
-# or at http://www.freewrt.org/licence for details.
-#-
-#FWINIT 80
-
-case $1 in
-args)
- shift
- sp=
- while test $# -gt 0; do
- printf "$sp'%s'" "$(printf '%s' "$1" | sed "s/'/'\\''/g")"
- sp=' '
- shift
- done
- printf '\n'
- exit 0
- ;;
-autostart|start) ;;
-*) exit 0 ;;
-esac
-
-sleep 30
-
-naspid=$(cat /var/run/nas.lan.pid)
-if test ! "$naspid" -ge 1; then
- echo No NAS found. | logger -t naswatch
- exit 1
-fi
-
-cmd=$(xargs -0 /bin/sh "$0" args </proc/$naspid/cmdline)
-case $cmd in
-*bin/nas*) ;;
-*)
- echo Error reading command line. | logger -t naswatch
- exit 1
- ;;
-esac
-
-while sleep 30; do
- test -z "$(pidof nas)" || continue
- echo Restarting NAS. | logger -t naswatch
- eval "$cmd"
-done &
-exit 0
Index: Makefile
===================================================================
--- Makefile (revision 3350)
+++ Makefile (working copy)
@@ -8,7 +8,7 @@
PKG_NAME:= broadcom-wl
PKG_VERSION:= 4.80.53.0
-PKG_RELEASE:= 10
+PKG_RELEASE:= 11
PKG_MD5SUM:= a7d8dde3ce474c361143b83e1d9890b1
PKG_MODULE:= 11
MASTER_SITES:= http://www.freewrt.org/distfiles/
@@ -43,12 +43,10 @@
$(INSTALL_BIN) $(WRKBUILD)/wlc/wlc $(IDIR_BROADCOM_WLC)/usr/sbin
$(INSTALL_DIR) $(IDIR_BROADCOM_WL_UTIL)/usr/sbin
$(INSTALL_BIN) $(WRKBUILD)/wl $(IDIR_BROADCOM_WL_UTIL)/usr/sbin
- $(INSTALL_DIR) $(IDIR_BROADCOM_NAS)/{etc/init.d,usr/{lib,sbin}}
+ $(INSTALL_DIR) $(IDIR_BROADCOM_NAS)/usr/{lib,sbin}
$(INSTALL_DATA) $(WRKBUILD)/libbcmcrypto.so $(IDIR_BROADCOM_NAS)/usr/lib
$(INSTALL_BIN) $(WRKBUILD)/nas $(IDIR_BROADCOM_NAS)/usr/sbin
ln -sf nas $(IDIR_BROADCOM_NAS)/usr/sbin/nas4not
ln -sf nas $(IDIR_BROADCOM_NAS)/usr/sbin/nas4wds
- ${INSTALL_BIN} files/naswatch.init \
- ${IDIR_BROADCOM_NAS}/etc/init.d/naswatch
include ${TOPDIR}/mk/pkg-bottom.mk
//mirabile
--
I believe no one can invent an algorithm. One just happens to hit upon it
when God enlightens him. Or only God invents algorithms, we merely copy them.
If you don't believe in God, just consider God as Nature if you won't deny
existence. -- Coywolf Qi Hunt
_______________________________________________
freewrt-developers mailing list
[email protected]
https://www.freewrt.org/lists/listinfo/freewrt-developers