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

Reply via email to